docs(release-notes): 添加住院护士站划价功能说明和发版记录

- 新增住院护士站划价服务流程说明文档,详细描述了从参数预处理到结果响应的五大阶段流程
- 包含耗材类医嘱和诊疗活动类医嘱的差异化处理逻辑
- 添加完整的发版内容记录,涵盖新增菜单功能和各模块优化点
- 记录了住院相关功能的新增和门诊业务流程的修复
```
This commit is contained in:
2025-12-25 14:13:14 +08:00
parent 85fcb7c2e2
commit abc0674531
920 changed files with 107068 additions and 14495 deletions

View File

@@ -6,85 +6,91 @@
<select id="getAdvancePaymentInfo" resultType="com.openhis.web.inhospitalcharge.dto.AdvancePaymentInfoDto">
SELECT api.tenant_id,
api.encounter_id,
api.bus_no,
api.patient_id,
api.patient_name,
api.gender_enum,
api.birth_date,
api.ward_name,
api.house_name,
api.bed_name,
api.inHospital_org_name,
api.account_id,
api.total_amount,
api.balance_amount
api.encounter_id,
api.bus_no,
api.patient_id,
api.patient_name,
api.gender_enum,
api.birth_date,
api.ward_name,
api.house_name,
api.bed_name,
api.inHospital_org_name,
api.account_id,
api.total_amount,
api.balance_amount
from (SELECT ae.tenant_id,
ae.ID AS encounter_id,
ae.bus_no AS bus_no,
ap.id AS patient_id,
ap.NAME AS patient_name,
ap.gender_enum AS gender_enum,
ap.birth_date AS birth_date,
alw.name AS ward_name,
alh.name AS house_name,
alb.name AS bed_name,
ao.NAME AS inHospital_org_name,
aa.id AS account_id,
COALESCE(payment.total_amount, 0) AS total_amount,
COALESCE(payment.total_amount, 0) - COALESCE(consumption.consumption_amount, 0) +
COALESCE(return_pay.return_amount, 0) AS balance_amount
FROM adm_encounter AS ae
LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization AS ao ON ao.ID = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelw
ON aelw.encounter_id = ae.ID AND aelw.delete_flag = '0' AND
aelw.form_enum = #{wardEnum} AND
aelw.status_enum = #{encounterActivityStatus}
LEFT JOIN adm_location AS alw ON alw.id = aelw.location_id AND alw.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelh
ON aelh.encounter_id = ae.ID AND aelh.delete_flag = '0' AND
aelh.form_enum = #{houseEnum} AND
aelh.status_enum = #{encounterActivityStatus}
LEFT JOIN adm_location AS alh ON alh.id = aelh.location_id AND alh.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelb
ON aelb.encounter_id = ae.ID AND aelb.delete_flag = '0' AND
aelb.form_enum = #{bedEnum} AND
aelb.status_enum = #{encounterActivityStatus}
LEFT JOIN adm_location AS alb ON alb.id = aelb.location_id AND alb.delete_flag = '0'
LEFT JOIN adm_account AS aa
ON aa.encounter_id = ae.ID AND aa.delete_flag = '0' AND
aa.type_code = #{accountTypeCode}
LEFT JOIN LATERAL (
SELECT SUM
(tendered_amount) AS total_amount
FROM fin_payment_reconciliation AS fpr
WHERE fpr.delete_flag = '0'
AND fpr.kind_enum = #{kindEnum}
AND fpr.encounter_id = ae.ID
) AS payment
ON TRUE
LEFT JOIN LATERAL (
SELECT SUM
(total_price) AS consumption_amount
FROM adm_charge_item AS aci
WHERE aci.delete_flag = '0'
AND aci.status_enum IN (#{status1}, #{status2})
AND aci.encounter_id = ae.ID
) AS consumption ON TRUE
LEFT JOIN LATERAL (
SELECT SUM
(total_price) AS return_amount
FROM adm_charge_item AS aci
WHERE aci.delete_flag = '0'
AND aci.status_enum IN (#{status3})
AND aci.encounter_id = ae.ID
) AS return_pay ON TRUE
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{classEnum}) AS api
${ew.customSqlSegment}
ae.ID AS encounter_id,
ae.bus_no AS bus_no,
ap.id AS patient_id,
ap.NAME AS patient_name,
ap.gender_enum AS gender_enum,
ap.birth_date AS birth_date,
alw.id AS ward_location_id,
alw.name AS ward_name,
alh.name AS house_name,
alb.name AS bed_name,
ao.NAME AS inHospital_org_name,
aa.id AS account_id,
COALESCE(payment.total_amount, 0) AS total_amount,
COALESCE(payment.total_amount, 0) - COALESCE(consumption.consumption_amount, 0) +
COALESCE(return_pay.return_amount, 0) AS balance_amount
FROM adm_encounter AS ae
LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization AS ao ON ao.ID = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelw
ON aelw.encounter_id = ae.ID AND aelw.delete_flag = '0' AND
aelw.form_enum = #{wardEnum} AND
aelw.status_enum = #{encounterActivityStatus}
LEFT JOIN adm_location AS alw ON alw.id = aelw.location_id AND alw.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelh
ON aelh.encounter_id = ae.ID AND aelh.delete_flag = '0' AND
aelh.form_enum = #{houseEnum} AND
aelh.status_enum = #{encounterActivityStatus}
LEFT JOIN adm_location AS alh ON alh.id = aelh.location_id AND alh.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelb
ON aelb.encounter_id = ae.ID AND aelb.delete_flag = '0' AND
aelb.form_enum = #{bedEnum} AND
aelb.status_enum = #{encounterActivityStatus}
LEFT JOIN adm_location AS alb ON alb.id = aelb.location_id AND alb.delete_flag = '0'
LEFT JOIN adm_account AS aa
ON aa.encounter_id = ae.ID AND aa.delete_flag = '0' AND
aa.type_code = #{accountTypeCode}
LEFT JOIN LATERAL (
SELECT SUM
(tendered_amount) AS total_amount
FROM fin_payment_reconciliation AS fpr
WHERE fpr.delete_flag = '0'
AND fpr.kind_enum = #{kindEnum}
AND fpr.encounter_id = ae.ID
) AS payment
ON TRUE
LEFT JOIN LATERAL (
SELECT SUM
(total_price) AS consumption_amount
FROM adm_charge_item AS aci
WHERE aci.delete_flag = '0'
AND aci.status_enum IN (#{status1}, #{status2})
AND aci.encounter_id = ae.ID
) AS consumption ON TRUE
LEFT JOIN LATERAL (
SELECT SUM
(total_price) AS return_amount
FROM adm_charge_item AS aci
WHERE aci.delete_flag = '0'
AND aci.status_enum IN (#{status3})
AND aci.encounter_id = ae.ID
) AS return_pay ON TRUE
WHERE ae.delete_flag = '0'
AND ae.status_enum != #{registeredFlag}
AND ae.class_enum = #{classEnum}
ORDER BY ae.create_time DESC) AS api
${ew.customSqlSegment}
<if test="wardLocationId != null">
AND api.ward_location_id = #{wardLocationId}
</if>
</select>
<select id="getAdvancePaymentFlowRecordList"

View File

@@ -15,7 +15,10 @@
ihri.patient_name,
ihri.gender_enum,
ihri.birth_date,
ihri.ward_name
ihri.ward_name,
ihri.contract_no,
ihri.bus_no,
ihri.admit_source_code
from (SELECT ae.tenant_id,
ae.ID AS encounter_id,
ae.amb_encounter_id AS amb_encounter_id,
@@ -26,7 +29,10 @@
ap.NAME AS patient_name,
ap.gender_enum AS gender_enum,
ap.birth_date AS birth_date,
al.NAME AS ward_name
al.NAME AS ward_name,
aa.contract_no,
ae.bus_no,
ae.admit_source_code
FROM adm_encounter AS ae
LEFT JOIN adm_encounter AS ambae ON ae.amb_encounter_id = ambae.
ID
@@ -41,6 +47,9 @@
AND al.delete_flag = '0'
LEFT JOIN adm_practitioner AS aper ON aper.ID = ae.registrar_id
AND aper.delete_flag = '0'
LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.ID
AND aa.delete_flag = '0'
AND aa.type_code = '04'
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{encounterClass}
<if test="registeredFlag == '0'.toString()">
@@ -51,6 +60,7 @@
</if>
) AS ihri
${ew.customSqlSegment}
ORDER BY ihri.request_time DESC
</select>
<select id="getPatientInfo" resultType="com.openhis.web.inhospitalcharge.dto.InHospitalPatientInfoDto">
@@ -94,30 +104,44 @@
ap.ID AS amb_doctor_practitioner_id,
ap.NAME AS amb_doctor_practitioner_name,
ccd.NAME AS amb_diagnosis_name,
aa.contract_no AS contract_no,
COALESCE(aa.balance_amount, 0) AS balance_amount
FROM adm_encounter AS ae
LEFT JOIN adm_organization AS ao ON ao.ID = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_encounter_location AS ael ON ael.encounter_id = ae.ID
AND ael.delete_flag = '0'
AND ael.form_enum = #{formEnum}
LEFT JOIN adm_location AS al ON al.ID = ael.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS aep ON aep.encounter_id = ae.amb_encounter_id
AND aep.delete_flag = '0'
AND aep.type_code = #{participantType}
LEFT JOIN adm_practitioner AS ap ON ap.ID = aep.practitioner_id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS aed ON aed.encounter_id = ae.amb_encounter_id
AND aed.delete_flag = '0'
AND aed.maindise_flag = #{maindiseFlag}
LEFT JOIN cli_condition AS cc ON cc.ID = aed.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.ID = cc.definition_id
AND ccd.delete_flag = '0'
LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.ID
AND aa.delete_flag = '0'
AND aa.type_code = #{accountType}
LEFT JOIN adm_organization AS ao
ON ao.ID = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_encounter_location AS ael
ON ael.encounter_id = ae.ID
AND ael.delete_flag = '0'
AND ael.form_enum = #{formEnum}
LEFT JOIN adm_location AS al
ON al.ID = ael.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS aep
ON aep.encounter_id = ae.amb_encounter_id
AND aep.delete_flag = '0'
AND aep.status_enum = #{status}
AND aep.type_code = #{participantType}
LEFT JOIN adm_practitioner AS ap
ON ap.ID = aep.practitioner_id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS aed
ON aed.delete_flag = '0'
AND aed.maindise_flag = #{maindiseFlag}
AND aed.encounter_id = CASE
WHEN ae.amb_encounter_id IS NOT NULL THEN ae.amb_encounter_id
ELSE ae.ID
END
LEFT JOIN cli_condition AS cc
ON cc.ID = aed.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd
ON ccd.ID = cc.definition_id
AND ccd.delete_flag = '0'
LEFT JOIN adm_account AS aa
ON aa.encounter_id = ae.ID
AND aa.delete_flag = '0'
AND aa.type_code = #{accountType}
WHERE ae.ID = #{encounterId}
</select>
@@ -145,4 +169,20 @@
, '%')
</select>
<select id="selectWardList" resultType="com.openhis.administration.domain.Location">
SELECT
id,
name,
bus_no
FROM
adm_location
WHERE
delete_flag = '0'
AND status_enum = #{status}
AND form_enum = #{formEnum}
<if test="orgId != null">
AND organization_id = #{orgId}
</if>
AND tenant_id = 1 <!-- 多租户ID若为动态可改为参数传入 -->
</select>
</mapper>