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

@@ -164,6 +164,8 @@
T1.create_by,
T1.update_time,
T1.update_by,
T1.system_discount_price,
T1.manual_adjusted_price,
T2.charge_name,
T2.title,
T2.status_enum,
@@ -188,4 +190,164 @@
</foreach>
AND T1.delete_flag = '0'
</select>
<!-- 查询费用明细 -->
<select id="getCostDetails" resultType="com.openhis.administration.dto.CostDetailDto">
SELECT final_res.charge_name,
final_res.charge_item_enum,
final_res.unit_price,
final_res.quantity_value,
final_res.total_price,
final_res.org_id,
final_res.practitioner,
final_res.recorded_time,
final_res.chrgitm_lv,
final_res.remark,
final_res.encounter_id,
final_res.patient_id,
final_res.patient_name,
final_res.birth_date,
final_res.gender_enum,
final_res.bus_no,
final_res.bed_name,
final_res.condition_names,
final_res.admitting_doctor_name,
final_res.balance_amount,
final_res.contract_name
FROM (WITH execution_table AS (SELECT cp.request_id,
cp.org_id,
ap.NAME,
cp.occurrence_time AS recorded_time
FROM cli_procedure cp
LEFT JOIN cli_procedure_performer cpp ON cpp.procedure_id = cp.ID
AND cpp.delete_flag = '0'
LEFT JOIN adm_practitioner ap ON ap.ID = cpp.practitioner_id
AND ap.active_flag = 1
AND ap.delete_flag = '0'
WHERE cp.delete_flag = '0'),
diagnosis AS (SELECT aed.encounter_id,
STRING_AGG(ccd.NAME, ', ') AS condition_names
FROM adm_encounter_diagnosis aed
INNER JOIN cli_condition cc ON cc.ID = aed.condition_id
AND cc.delete_flag = '0'
INNER JOIN cli_condition_definition ccd ON ccd.ID = cc.definition_id
AND ccd.delete_flag = '0'
WHERE aed.delete_flag = '0'
GROUP BY aed.encounter_id),
hospitalization AS (SELECT aep.encounter_id,
pra.NAME
FROM adm_encounter_participant aep
LEFT JOIN adm_practitioner pra ON aep.practitioner_id = pra.ID
AND pra.delete_flag = '0'
WHERE aep.delete_flag = '0'
AND aep.status_enum = #{ active }
AND aep.type_code = #{ admittingDoctor }),
account AS (SELECT aa.ID,
aa.encounter_id,
(
aa.balance_amount - COALESCE(SUM(CASE
WHEN aci.status_enum IN (#{ billed }, #{ billable })
THEN aci.total_price
ELSE 0 END), 0) + COALESCE(
SUM(CASE WHEN aci.status_enum = #{refunded} THEN aci.total_price ELSE 0 END),
0)
) AS balance_amount
FROM adm_account aa
LEFT JOIN adm_charge_item aci ON aa.encounter_id = aci.encounter_id
AND aci.delete_flag = '0'
WHERE aa.type_code = #{ personalCashAccount }
AND aa.delete_flag = '0'
GROUP BY aa.ID,
aa.encounter_id,
aa.balance_amount),
contract AS (SELECT fc.contract_name, aa.encounter_id
FROM adm_account aa
LEFT JOIN fin_contract fc ON aa.contract_no = fc.bus_no AND fc.delete_flag = '0'
WHERE aa.encounter_flag = 1
AND aa.delete_flag = '0')
SELECT T1.tenant_id,
T2.charge_name,
T2.yb_type AS charge_item_enum,
T1.unit_price,
T1.quantity_value,
T1.total_price,
T6.org_id,
T6.NAME AS practitioner,
T6.recorded_time,
CASE
WHEN T2.instance_table = 'adm_device_definition' THEN
T3.chrgitm_lv
WHEN T2.instance_table = 'med_medication_definition' THEN
T4.chrgitm_lv
WHEN T2.instance_table = 'wor_activity_definition' THEN
T5.chrgitm_lv
ELSE NULL
END AS chrgitm_lv,
'' AS remark,
T1.encounter_id,
T1.patient_id,
T7.NAME AS patient_name,
T7.birth_date,
T7.gender_enum,
T8.bus_no,
T10.NAME AS bed_name,
T11.condition_names,
T12.NAME AS admitting_doctor_name,
T13.balance_amount,
T14.contract_name
FROM adm_charge_item T1
LEFT JOIN adm_charge_item_definition T2 ON T2.ID = T1.definition_id
AND T2.delete_flag = '0'
LEFT JOIN adm_device_definition T3 ON T2.instance_id = T3.ID
AND T2.instance_table = 'adm_device_definition'
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition T4 ON T2.instance_id = T4.ID
AND T2.instance_table = 'med_medication_definition'
AND T4.delete_flag = '0'
LEFT JOIN wor_activity_definition T5 ON T2.instance_id = T5.ID
AND T2.instance_table = 'wor_activity_definition'
AND T5.delete_flag = '0'
LEFT JOIN execution_table T6 ON T6.request_id = T1.service_id
LEFT JOIN adm_patient T7 ON T7.ID = T1.patient_id
AND T7.delete_flag = '0'
LEFT JOIN adm_encounter T8 ON T8.ID = T1.encounter_id
AND T8.delete_flag = '0'
LEFT JOIN adm_encounter_location T9 ON T8.ID = T9.encounter_id
AND T9.delete_flag = '0'
AND T9.status_enum = #{active}
AND T9.form_enum = #{bed}
LEFT JOIN adm_location T10 ON T9.location_id = T10.ID
AND T10.delete_flag = '0'
LEFT JOIN diagnosis T11 ON T1.encounter_id = T11.encounter_id
LEFT JOIN hospitalization T12 ON T1.encounter_id = T12.encounter_id
LEFT JOIN account T13 ON T1.encounter_id = T13.encounter_id
LEFT JOIN contract T14 ON T1.encounter_id = T14.encounter_id
WHERE T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T2.charge_name,
T2.yb_type,
T1.unit_price,
T1.quantity_value,
T1.total_price,
T6.org_id,
T6.NAME,
T6.recorded_time,
T2.instance_table,
T3.chrgitm_lv,
T4.chrgitm_lv,
T5.chrgitm_lv,
T1.encounter_id,
T1.patient_id,
T7.NAME,
T7.birth_date,
T7.gender_enum,
T8.bus_no,
T10.NAME,
T11.condition_names,
T12.NAME,
T13.balance_amount,
T14.contract_name
ORDER BY T6.recorded_time DESC) final_res
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,7 @@
<?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.administration.mapper.ObservationDefinitionMapper">
</mapper>

View File

@@ -0,0 +1,7 @@
<?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.administration.mapper.SpecimenDefinitionMapper">
</mapper>

View File

@@ -15,17 +15,16 @@
AND item_id = #{itemId}
AND location_id = #{locationId}
AND lot_number = #{lotNumber}
AND (trace_no) IN (
SELECT trace_no
FROM adm_trace_no_manage
WHERE item_table = #{itemTable}
AND item_id = #{itemId}
AND location_id = #{locationId}
AND lot_number = #{lotNumber}
AND delete_flag = '0'
GROUP BY trace_no
HAVING SUM(CASE WHEN status_enum = 1 THEN 1 ELSE 0 END) > -- 库次数
SUM(CASE WHEN status_enum = 2 THEN 1 ELSE 0 END) -- 出库次数
AND (trace_no) IN (SELECT trace_no
FROM adm_trace_no_manage
WHERE item_table = #{itemTable}
AND item_id = #{itemId}
AND location_id = #{locationId}
AND lot_number = #{lotNumber}
AND delete_flag = '0'
GROUP BY trace_no
HAVING SUM(CASE WHEN status_enum = 1 THEN 1 ELSE 0 END) > -- 进库次数
SUM(CASE WHEN status_enum = 2 THEN 1 ELSE 0 END) -- 库次数
)
AND delete_flag = '0'
GROUP BY item_table,
@@ -34,4 +33,22 @@
lot_number,
trace_no
</select>
<select id="tracePatient" resultType="com.openhis.administration.dto.TracePatientInfoDto">
SELECT T2.name,
T2.gender_enum,
T2.birth_date,
T2.phone,
T3.create_time AS register_time
FROM med_medication_dispense T1
LEFT JOIN adm_patient T2 ON T2.ID = T1.patient_id
AND T2.delete_flag = '0'
LEFT JOIN adm_encounter T3 ON T3.ID = T1.encounter_id
AND T3.delete_flag = '0'
WHERE T1.medication_id = #{ medId }
<if test="dispenseStatus != null">
AND T1.status_enum = #{dispenseStatus}
</if>
AND T1.trace_no = #{traceNo}
</select>
</mapper>