版本更新

This commit is contained in:
Zhang.WH
2025-09-03 15:54:41 +08:00
parent 0b93d16b64
commit 8f82322d10
3290 changed files with 154339 additions and 23829 deletions

View File

@@ -0,0 +1,316 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.outpatientmanage.mapper.OutpatientInfusionAppMapper">
<!-- 门诊皮试记录相关查询-->
<select id="getSkinTestRecords"
parameterType="com.openhis.web.outpatientmanage.dto.OutpatientSkinTestRecordSearchParam"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientSkinTestRecordDto">
SELECT
T1.tenant_id,
T1.id,
T1.prescription_no,
T1.encounter_bus_no,
T1.patient_name,
T1.patient_bus_no,
T1.patient_id,
T1.phone,
T1.medication_information,
T1.medication_detail,
T1.medication_lot_number,
T1.medication_status_enum,
T1.performer_id,
T1.performer_check_id,
T1.occurrence_start_time,
T1.occurrence_end_time,
T1.clinical_status_enum,
T1.verification_status_enum,
T1.doctor_id,
T1.recorded_date,
T1.note
FROM
(
SELECT
sr.tenant_id,
sr.id, --服务申请管理ID
mr.prescription_no, --处方号
e.bus_no as encounter_bus_no, --就诊号
pt.name AS patient_name, --病人姓名
pt.bus_no AS patient_bus_no, --病人ID前台显示用
pt.phone,
sr.patient_id, --病人ID
ad.name AS medication_information, --药品信息
md.bus_no || ' ' || md.name || ' 规格:' || COALESCE(m.total_volume, '') AS medication_detail,--药品
m.lot_number AS medication_lot_number, --药品批次号
mmd.status_enum AS medication_status_enum, --药品发放状态
sr.performer_id, --执行护士
sr.performer_check_id,--核对人
to_char(sr.occurrence_start_time, 'YYYY-MM-DD HH24:MI:SS') AS occurrence_start_time, --预计执行时间
to_char(sr.occurrence_end_time, 'YYYY-MM-DD HH24:MI:SS') AS occurrence_end_time, --预计结束时间
ai.clinical_status_enum, --皮试结果
ai.verification_status_enum, --皮试检查项目状态
mr.practitioner_id as doctor_id, --开单医生
ai.recorded_date,
ai.note --备注
FROM
wor_service_request sr
LEFT JOIN (
SELECT DISTINCT ON (request_id)
ai.id,
ai.request_id,
ai.clinical_status_enum,
ai.verification_status_enum,
ai.recorded_date,
ai.note
FROM
cli_allergy_intolerance ai
WHERE
ai.delete_flag = '0'
ORDER BY
ai.request_id,
ai.create_time DESC
) ai ON ai.request_id = sr.id
-- LEFT JOIN cli_allergy_intolerance ai ON ai.request_id = sr.id
-- AND ai.delete_flag = '0'
LEFT JOIN adm_encounter e ON e.id = sr.encounter_id
AND e.delete_flag = '0'
LEFT JOIN adm_patient pt ON pt.id = sr.patient_id
AND pt.delete_flag = '0'
LEFT JOIN wor_activity_definition ad ON ad.id = sr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN med_medication_request mr ON mr.encounter_id = sr.encounter_id
AND mr.delete_flag = '0'
LEFT JOIN med_medication_definition md ON md.id = mr.medication_id
AND md.delete_flag = '0'
LEFT JOIN med_medication m ON md.id = m.medication_def_id
AND m.delete_flag = '0'
LEFT JOIN med_medication_dispense mmd ON mr.id = mmd.med_req_id
AND mmd.delete_flag = '0'
<where>
ad.name = '皮试检查'
AND mr.skin_test_flag = 1
AND mmd.status_enum IN (2,3,4,14)--药品发放状态:(DispenseStatus枚举类)
AND md.skin_test_flag = 1
AND sr.status_enum IN (2,3,10) --服务状态待执行(RequestStatus枚举类)
</where>
ORDER BY sr.prescription_no,e.bus_no,md.bus_no
) AS T1
${ew.customSqlSegment}
</select>
<!-- 门诊输液记录患者列表信息查询-->
<select id="getOutpatientInfusionPatient"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionPatientDto">
SELECT T1.service_status,
T1.encounter_id,
T1.encounter_bus_no,
T1.birth_date,
T1.patient_bus_no,
T1.patient_id,
T1.patient_name,
T1.patient_py_str,
T1.patient_wb_str,
T1.gender_enum,
T1.create_time
FROM (
SELECT sr.status_enum AS service_status,
sr.encounter_id,
e.bus_no as encounter_bus_no,
pt.birth_date,
pt.bus_no AS patient_bus_no,
sr.patient_id,
pt."name" AS patient_name,
pt.py_str AS patient_py_str,
pt.wb_str AS patient_wb_str,
sr.tenant_id,
pt.gender_enum,
e.reception_time AS create_time
FROM adm_encounter e
LEFT JOIN wor_service_request sr
ON e.id = sr.encounter_id
AND sr.refund_service_id IS NULL
AND sr.delete_flag = '0'
LEFT JOIN adm_patient pt
ON pt.id = sr.patient_id
AND pt.delete_flag = '0'
LEFT JOIN wor_activity_definition ad
ON ad.id = sr.activity_id
AND ad.delete_flag = '0'
WHERE e.delete_flag = '0'
AND sr.status_enum IN (#{inProgress},#{completed},#{cancelled})
GROUP BY sr.status_enum,
sr.encounter_id,
e.bus_no,
pt.birth_date,
pt.bus_no,
sr.patient_id,
pt."name",
pt.py_str,
pt.wb_str,
sr.tenant_id,
pt.gender_enum,
e.reception_time
ORDER BY create_time DESC
) AS T1
${ew.customSqlSegment}
</select>
<select id="selectInfusionPendingRecord"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto">
SELECT pr.encounter_id,
pr.service_status,
pr.authored_time ,
pr.service_id ,
pr.bus_no ,
pr.print_count ,
pr.group_id ,
pr.execute_num,
pr.speed ,
pr.quantity ,
pr.skin_test_flag ,
pr.unit_code ,
pr.dose ,
pr.dose_unit_code ,
pr.method_code ,
pr.rate_code ,
pr.performer_id ,
pr.preparer_id ,
pr.dispense_status,
pr.medication_name,
pr.service_name,
pr.practitioner_name,
pr.perform_count,
pr.dept_name
FROM (
SELECT ae.id AS encounter_id,
ae.tenant_id,
wsr.status_enum AS service_status,
wsr.authored_time ,
wsr.id AS service_id,
wsr.bus_no ,
wsr.print_count,
mmr.group_id ,
mmr.execute_num,
mmr.speed ,
mmr.quantity ,
mmr.skin_test_flag ,
mmr.unit_code ,
mmr.dose ,
mmr.dose_unit_code ,
mmr.method_code ,
mmr.rate_code ,
mmr.performer_id ,
dis.status_enum AS dispense_status,
mmd."name" AS medication_name,
ad."name" AS service_name,
ap."name" AS practitioner_name,
o."name" AS dept_name,
-- 新增子查询:查询配药人
(SELECT DISTINCT mmdis.preparer_id
FROM med_medication_dispense mmdis
WHERE mmdis.med_req_id = mmr.id
AND mmdis.delete_flag = '0'
) AS preparer_id ,
-- 新增子查询:统计已执行次数
(SELECT COUNT(sub_wsr.id)
FROM wor_service_request sub_wsr
WHERE sub_wsr.based_on_id = wsr.id
AND sub_wsr.status_enum = #{completed}
AND sub_wsr.delete_flag = '0'
) AS perform_count
FROM adm_encounter ae
LEFT JOIN wor_service_request wsr
ON ae.id = wsr.encounter_id
AND wsr.delete_flag = '0'
AND wsr.refund_service_id IS NULL
LEFT JOIN med_medication_request mmr
ON mmr.group_id = wsr.group_id
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON dis.med_req_id = mmr.id
AND dis.delete_flag = '0'
LEFT JOIN wor_activity_definition ad
ON ad.id = wsr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN med_medication_definition mmd
ON mmr.medication_id = mmd.id
AND mmd.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON mmr.practitioner_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization o
ON o.id = wsr.org_id
AND o.delete_flag = '0'
WHERE ae.id = #{encounterId}
AND ad.category_code = '21'
AND wsr.based_on_table = #{medMedicationRequest}
AND ae.delete_flag = '0') AS pr
${ew.customSqlSegment}
ORDER BY pr.authored_time DESC
</select>
<select id="selectInfusionPerformRecord"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto">
SELECT pr.service_status,
pr.bus_no ,
pr.based_on_id ,
pr.group_id ,
pr.occurrence_end_time ,
pr.service_id,
pr.tenant_id,
pr.service_name,
pr.performer_name,
pr.org_name
FROM (
SELECT wsr.status_enum AS service_status,
wsr.bus_no ,
wsr.based_on_id ,
wsr.group_id ,
wsr.occurrence_end_time ,
wsr.id AS service_id,
wsr.tenant_id,
ad."name" AS service_name,
ap."name" AS performer_name,
al."name" AS org_name
FROM wor_service_request wsr
LEFT JOIN wor_activity_definition ad
ON ad.id = wsr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON wsr.performer_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization al
ON al.id = wsr.org_id
WHERE wsr.based_on_id = #{serviceReqId}
AND wsr.delete_flag = '0'
) AS pr
${ew.customSqlSegment}
ORDER BY pr.occurrence_end_time DESC
</select>
<select id="selectPerformInfo"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto">
SELECT wsr.id AS service_id,
wsr.status_enum AS service_status,
mmr.execute_num ,
dis.status_enum AS dispense_status,
-- 新增子查询:统计已执行次数
(SELECT COUNT(sub_wsr.id)
FROM wor_service_request sub_wsr
WHERE sub_wsr.based_on_id = wsr.id
AND sub_wsr.status_enum = #{completed}
AND sub_wsr.delete_flag = '0'
) AS perform_count
FROM wor_service_request wsr
LEFT JOIN med_medication_request mmr
ON wsr.based_on_id = mmr.id
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON dis.med_req_id = mmr.id
AND dis.delete_flag = '0'
WHERE wsr.delete_flag = '0'
AND wsr.id IN
<foreach item="serviceReqId" collection="serviceReqIdList" open="(" separator="," close=")">
#{serviceReqId}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.outpatientmanage.mapper.OutpatientTreatmentAppMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.outpatientmanage.dto.OutpatientTreatmentEncounterDto">
SELECT ii.encounter_id,
ii.reception_time,
ii.encounter_no,
ii.gender_enum,
ii.patient_name,
ii.patient_py_str,
ii.patient_wb_str,
ii.birth_date,
ii.status_enum
FROM (
SELECT T1.tenant_id,
T1.id AS encounter_id,
T1.reception_time,
T1.bus_no AS encounter_no,
T2.gender_enum,
T2."name" AS patient_name,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T2.birth_date,
T3.status_enum
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
INNER JOIN wor_service_request AS T3
ON T1.id = T3.encounter_id
AND T3.refund_service_id IS NULL
AND T3.delete_flag = '0'
WHERE T1.class_enum = #{amb}
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.id,
T1.reception_time,
T1.bus_no,
T2.gender_enum,
T2.name,
T2.py_str,
T2.wb_str,
T2.birth_date,
T3.status_enum
ORDER BY T1.bus_no DESC
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectTreatmentInfoPage"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientTreatmentInfoDto">
SELECT ii.encounter_id ,
ii.request_id ,
ii.service_status,
ii.dispense_id,
ii.dispense_status,
ii.execute_num,
ii.quantity ,
ii.unit_code ,
ii.bus_no,
ii.charge_status,
ii.unit_price ,
ii.total_price ,
ii.request_table ,
ii.service_category ,
ii.device_category ,
ii.med_category ,
ii.item_name,
ii.py_str,
ii.wb_str,
ii.size,
ii.group_id ,
ii.sort_number
FROM (SELECT ae.id AS encounter_id ,
ae.tenant_id,
wsr.id AS request_id ,
wsr.status_enum AS service_status,
NULL AS dispense_id,
NULL AS dispense_status,
wsr.quantity AS execute_num,
NULL AS quantity,
wsr.unit_code ,
wsr.bus_no,
aci.status_enum AS charge_status,
aci.unit_price ,
aci.total_price ,
#{worServiceRequest} AS request_table ,
wad.category_code AS service_category,
NULL AS device_category,
NULL AS med_category,
wad."name" AS item_name,
wad.py_str,
wad.wb_str,
NULL AS "size",
wsr.group_id ,
NULL AS sort_number
FROM adm_encounter ae
INNER JOIN wor_service_request wsr
ON wsr.encounter_id = ae.id
AND wsr.delete_flag = '0'
AND wsr.refund_service_id IS NULL
LEFT JOIN adm_charge_item aci
ON aci.service_id = wsr.id
AND aci.delete_flag = '0'
AND aci.refund_id IS NULL
INNER JOIN wor_activity_definition wad
ON wsr.activity_id = wad.id
AND wad.delete_flag = '0'
WHERE wsr.status_enum = #{reqCompleted}
AND ae.delete_flag = '0'
UNION ALL
SELECT ae.id AS encounter_id ,
ae.tenant_id,
mmr.id AS request_id ,
NULL AS service_status,
dis.id AS dispense_id ,
dis.status_enum AS dispense_status,
mmr.execute_num ,
mmr.quantity ,
mmr.unit_code ,
mmr.bus_no,
aci.status_enum AS charge_status,
aci.unit_price ,
aci.total_price ,
#{medMedicationRequest} AS request_table ,
NULL AS service_category,
NULL AS device_category,
mmd.category_code AS med_category,
mmd."name" AS item_name,
mmd.py_str ,
mmd.wb_str,
mm.total_volume AS "size",
mmr.group_id ,
mmr.sort_number
FROM adm_encounter ae
LEFT JOIN med_medication_request mmr
ON ae.id = mmr.encounter_id
AND mmr.refund_medicine_id IS NULL
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON dis.med_req_id = mmr.id
AND dis.delete_flag = '0'
INNER JOIN med_medication_definition mmd
ON mmr.medication_id = mmd.id
AND (mmd.skin_test_flag = 1 OR mmd.inject_flag = 1)
AND mmd.delete_flag = '0'
INNER JOIN med_medication mm
ON mm.medication_def_id = mmd.id
AND mm.delete_flag = '0'
LEFT JOIN adm_charge_item aci
ON aci.service_id = mmr.id
AND aci.delete_flag = '0'
AND aci.refund_id IS NULL
WHERE dis.status_enum != #{draft}
AND ae.delete_flag = '0'
UNION ALL
SELECT ae.id AS encounter_id ,
ae.tenant_id,
wdr.id AS request_id ,
NULL AS service_status,
wdd.id AS dispense_id ,
wdd.status_enum AS dispense_status,
NULL AS execute_num,
wdr.quantity ,
wdr.unit_code ,
wdr.bus_no,
aci.status_enum AS charge_status,
aci.unit_price ,
aci.total_price ,
#{worDeviceRequest} AS request_table ,
NULL AS service_category,
dev.category_code AS device_category,
NULL AS med_category,
dev."name" AS item_name,
dev.py_str ,
dev.wb_str,
dev.size,
NULL AS group_id ,
NULL AS sort_number
FROM adm_encounter ae
INNER JOIN wor_device_request wdr
ON wdr.encounter_id = ae.id
AND wdr.delete_flag = '0'
AND wdr.refund_device_id IS NULL
LEFT JOIN wor_device_dispense wdd
ON wdd.device_req_id = wdr.id
AND wdd.delete_flag = '0'
LEFT JOIN adm_charge_item aci
ON aci.service_id = wdr.id
AND aci.delete_flag = '0'
AND aci.refund_id IS NULL
INNER JOIN adm_device_definition dev
ON dev.id = wdr.device_def_id
AND dev.delete_flag = '0'
WHERE wdd.status_enum != #{draft}
AND ae.delete_flag = '0'
) AS ii
${ew.customSqlSegment}
ORDER BY ii.sort_number
</select>
<select id="selectPerformRecordList" resultType="com.openhis.web.common.dto.PerformRecordDto">
SELECT cp.id AS procedure_id,
cp.status_enum,
cp.occurrence_time,
cp.create_time,
al."name" AS location_name,
ao."name" AS org_name,
cp.request_id,
cp.refund_id,
cpp.start_time,
cpp.end_time,
ap."name" AS practitioner_name
FROM cli_procedure cp
LEFT JOIN cli_procedure_performer cpp
ON cpp.procedure_id = cp.id
AND cpp.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = cp.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_location al
ON al.id = cp.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = cpp.practitioner_id
AND ap.delete_flag = '0'
WHERE cp.delete_flag = '0'
<if test="reqIds!=null and !reqIds.isEmpty()">
AND cp.request_id IN
<foreach collection="reqIds" item="reqId" open="(" separator="," close=")">
#{reqId}
</foreach>
</if>
</select>
</mapper>