fix: 修复护理记录患者列表不显示在院患者的问题 (Bug #175)

- 将INNER JOIN改为LEFT JOIN,允许患者未分配床位时也能显示在列表中
- 修复getPatientPage和getNursingPatientPage两个查询
- 解决患者已入院但无床位信息时查询不到数据的问题
This commit is contained in:
2026-03-12 14:15:56 +08:00
parent 9aad809322
commit 3c47979913

View File

@@ -31,33 +31,33 @@
ON T2.patient_id = T1.id ON T2.patient_id = T1.id
AND T2.class_enum = #{classEnum} AND T2.class_enum = #{classEnum}
AND T2.delete_flag = '0' AND T2.delete_flag = '0'
INNER JOIN (SELECT encounter_id, INNER JOIN (SELECT encounter_id,
location_id, location_id,
form_enum, form_enum,
delete_flag delete_flag
FROM (SELECT encounter_id, FROM (SELECT encounter_id,
location_id, location_id,
form_enum, form_enum,
delete_flag, delete_flag,
ROW_NUMBER() OVER (PARTITION BY encounter_id ROW_NUMBER() OVER (PARTITION BY encounter_id
ORDER BY ORDER BY
CASE CASE
WHEN update_time IS NULL THEN create_time WHEN update_time IS NULL THEN create_time
ELSE update_time ELSE update_time
END DESC) AS rn END DESC) AS rn
FROM adm_encounter_location FROM adm_encounter_location
WHERE form_enum = #{ward} WHERE form_enum = #{ward}
AND delete_flag = '0' AND delete_flag = '0'
) ranked ) ranked
WHERE rn = 1) AS T3 WHERE rn = 1) AS T3
ON T3.encounter_id = T2.ID ON T3.encounter_id = T2.ID
INNER JOIN adm_encounter_location AS T4 LEFT JOIN adm_encounter_location AS T4
ON T4.encounter_id = T2.ID ON T4.encounter_id = T2.ID
AND T4.form_enum = #{bed} AND T4.form_enum = #{bed}
AND T4.status_enum = #{active} AND T4.status_enum = #{active}
AND T4.delete_flag = '0' AND T4.delete_flag = '0'
WHERE T1.delete_flag = '0' WHERE T1.delete_flag = '0'
ORDER BY T4.location_id ASC) AS T5 ORDER BY T4.location_id ASC) AS T5
${ew.customSqlSegment} ${ew.customSqlSegment}
</select> </select>
@@ -97,32 +97,32 @@
ON T2.patient_id = T1.id ON T2.patient_id = T1.id
AND T2.class_enum = #{classEnum} AND T2.class_enum = #{classEnum}
AND T2.delete_flag = '0' AND T2.delete_flag = '0'
INNER JOIN (SELECT encounter_id, INNER JOIN (SELECT encounter_id,
location_id, location_id,
form_enum, form_enum,
delete_flag delete_flag
FROM (SELECT encounter_id, FROM (SELECT encounter_id,
location_id, location_id,
form_enum, form_enum,
delete_flag, delete_flag,
ROW_NUMBER() OVER (PARTITION BY encounter_id ROW_NUMBER() OVER (PARTITION BY encounter_id
ORDER BY ORDER BY
CASE CASE
WHEN update_time IS NULL THEN create_time WHEN update_time IS NULL THEN create_time
ELSE update_time ELSE update_time
END DESC) AS rn END DESC) AS rn
FROM adm_encounter_location FROM adm_encounter_location
WHERE form_enum = #{ward} WHERE form_enum = #{ward}
AND delete_flag = '0' AND delete_flag = '0'
) ranked ) ranked
WHERE rn = 1) AS T3 WHERE rn = 1) AS T3
ON T3.encounter_id = T2.ID ON T3.encounter_id = T2.ID
INNER JOIN adm_encounter_location AS T4 LEFT JOIN adm_encounter_location AS T4
ON T4.encounter_id = T2.ID ON T4.encounter_id = T2.ID
AND T4.form_enum = #{bed} AND T4.form_enum = #{bed}
AND T4.status_enum = #{active} AND T4.status_enum = #{active}
AND T4.delete_flag = '0' AND T4.delete_flag = '0'
LEFT JOIN doc_emr AS T5 LEFT JOIN doc_emr AS T5
ON T5.patient_id = T1.id ON T5.patient_id = T1.id
AND T5.encounter_id = T2.ID AND T5.encounter_id = T2.ID
AND T5.class_enum = 1 --护理记录单 AND T5.class_enum = 1 --护理记录单