修复101 门诊医生站-》门诊病历配置了未显示

This commit is contained in:
HuangShun
2026-01-26 16:05:41 +08:00
parent a9fb093d9c
commit ea5215a1b0

View File

@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.document.mapper.DocDefinitionAppMapper"> <mapper namespace="com.openhis.web.document.mapper.DocDefinitionAppMapper">
<!-- 患者信息分页查询-->
<select id="getDefinationList" parameterType="java.util.Map" <select id="getDefinationList" parameterType="java.util.Map"
resultType="com.openhis.web.document.dto.DocDefinitionDto"> resultType="com.openhis.web.document.dto.DocDefinitionDto">
SELECT SELECT
dd.id, dd.id,
dd.name, dd.name,
@@ -20,29 +22,67 @@
dd.nursing_permission_enum, dd.nursing_permission_enum,
dd.medical_permission_enum, dd.medical_permission_enum,
dd.pharmacist_permission_enum, dd.pharmacist_permission_enum,
ARRAY_AGG(ddo.organization_id) FILTER (WHERE ddo.organization_id IS NOT NULL) AS organization_Ids ARRAY_AGG(ddo.organization_id) FILTER (WHERE ddo.organization_id IS NOT NULL) AS organization_ids
FROM doc_definition dd FROM doc_definition dd
LEFT JOIN doc_definition_organization ddo LEFT JOIN doc_definition_organization ddo
ON dd.id = ddo.definition_id -- 使用 definition_id 关联 ON dd.id = ddo.definition_id
AND ddo.delete_flag = '0'
WHERE dd.delete_flag = '0' WHERE dd.delete_flag = '0'
and dd.hospital_id = #{hospitalId}
<!-- 关键:医院 + 科室联合可见 -->
<if test="organizationId != null and organizationId != 0">
AND (
-- 本医院的文书
dd.hospital_id = #{hospitalId}
-- 或者:已分配给当前科室的文书(允许跨医院)
OR EXISTS (
SELECT 1
FROM doc_definition_organization z
WHERE z.definition_id = dd.id
AND z.organization_id = #{organizationId}
AND z.delete_flag = '0'
)
)
</if>
<if test="useRanges != null and !useRanges.isEmpty()"> <if test="useRanges != null and !useRanges.isEmpty()">
AND dd.use_range_enum IN AND dd.use_range_enum IN
<foreach collection="useRanges" item="useRange" open="(" separator="," close=")"> <foreach collection="useRanges" item="useRange" open="(" separator="," close=")">
#{useRange} #{useRange}
</foreach> </foreach>
</if> </if>
<!-- 使用范围过滤 -->
<if test="organizationId != null and organizationId != 0"> <if test="organizationId != null and organizationId != 0">
AND (ddo.organization_id = #{organizationId} OR dd.use_range_enum = 1) AND (
-- 全院可用
dd.use_range_enum = 1
OR dd.use_range_enum IS NULL
-- 科室可用(必须真的分配给该科室)
OR (
dd.use_range_enum = 2
AND EXISTS (
SELECT 1
FROM doc_definition_organization y
WHERE y.definition_id = dd.id
AND y.organization_id = #{organizationId}
AND y.delete_flag = '0'
)
)
)
</if> </if>
<if test="name != null and !name.isEmpty()"> <if test="name != null and !name.isEmpty()">
AND dd.name LIKE CONCAT('%', #{name}, '%') AND dd.name LIKE CONCAT('%', #{name}, '%')
</if> </if>
GROUP BY
dd.id, dd.primary_menu_enum , GROUP BY dd.id, dd.primary_menu_enum, dd.sub_menu
dd.sub_menu
ORDER BY dd.display_order ORDER BY dd.display_order
</select> </select>
</mapper> </mapper>