Files
his/openhis-server-new/openhis-application/src/main/resources/mapper/patientmanage/PatientManageMapper.xml
chenqi 9ed43c9413 feat(home): 添加医生专属患者统计和菜单跳转功能
- 在HomeStatisticsDto中新增我的患者数量和待写病历数量字段
- 实现医生患者查询功能,支持按租户隔离数据
- 更新首页统计服务,为医生用户提供专属患者统计数据
- 添加菜单名称点击跳转功能,支持路由导航和外部链接打开
- 修复首页统计数据显示,确保医生看到正确的患者数量
- 添加医保日结结算相关实体、服务和前端页面
- 配置前端路由控制器,支持Vue Router History模式
2026-02-02 16:28:31 +08:00

155 lines
5.8 KiB
XML

<?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.patientmanage.mapper.PatientManageMapper">
<!-- 病人信息相关查询-->
<select id="getPatientPage" resultType="com.openhis.web.patientmanage.dto.PatientBaseInfoDto">
SELECT T1.tenant_id,
T1.id,
T1.active_flag,
T1.temp_flag,
T1.name,
T1.name_json,
T1.bus_no,
T1.gender_enum,
T1.birth_date,
T1.deceased_date,
T1.marital_status_enum,
T1.prfs_enum,
T1.phone,
T1.address,
T1.address_province,
T1.address_city,
T1.address_district,
T1.address_street,
T1.address_json,
T1.nationality_code,
T1.id_card,
T1.py_str,
T1.wb_str,
T1.blood_abo,
T1.blood_rh,
T1.work_company,
T1.native_place,
T1.country_code,
T1.link_name,
T1.link_relation_code,
T1.link_telcom,
T1.link_jsons,
T1.organization_id,
T1.create_time
FROM (
SELECT pt.tenant_id,
pt.id,
pt.active_flag,
pt.temp_flag,
pt.name,
pt.name_json,
pt.bus_no,
pt.gender_enum,
pt.birth_date,
pt.deceased_date,
pt.marital_status_enum,
pt.prfs_enum,
pt.phone,
pt.address,
pt.address_province,
pt.address_city,
pt.address_district,
pt.address_street,
pt.address_json,
pt.nationality_code,
pt.id_card,
pt.py_str,
pt.wb_str,
pt.blood_abo,
pt.blood_rh,
pt.work_company,
pt.native_place,
pt.country_code,
pt.link_name,
pt.link_relation_code,
pt.link_telcom,
pt.link_jsons,
pt.organization_id,
pt.create_time
FROM adm_patient pt
where pt.delete_flag = '0'
ORDER BY pt.bus_no DESC
) AS T1
${ew.customSqlSegment}
</select>
<select id="getPatientIdInfo" resultType="com.openhis.web.patientmanage.dto.PatientIdInfoDto">
SELECT patient_id,
type_code,
identifier_no,
start_time,
end_time
FROM adm_patient_identifier
WHERE delete_flag = '0'
<if test="patientIdList != null and !patientIdList.isEmpty()">
AND patient_id IN
<foreach collection="patientIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
<!-- 查询门诊记录 -->
<select id="getOutpatientRecord" resultType="com.openhis.web.patientmanage.dto.OutpatientRecordDto">
SELECT
enc.id as encounterId,
pt.name,
pt.id_card,
pt.bus_no as patientBusNo,
enc.bus_no as encounterBusNo,
pt.gender_enum,
pt.phone,
enc.create_time as encounterTime,
enc.status_enum as subjectStatusEnum,
org.name as organizationName,
prac.name as doctorName
FROM adm_encounter AS enc
LEFT JOIN adm_organization AS org ON enc.organization_id = org.ID AND org.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS ep
ON enc.ID = ep.encounter_id AND ep.type_code = #{participantType} AND ep.delete_flag = '0'
LEFT JOIN adm_practitioner AS prac ON ep.practitioner_id = prac.ID AND prac.delete_flag = '0'
LEFT JOIN adm_patient AS pt ON enc.patient_id = pt.ID AND pt.delete_flag = '0'
<where>
enc.delete_flag = '0'
<if test="ew.sqlSegment != null and ew.sqlSegment != ''">
AND ${ew.sqlSegment}
</if>
</where>
ORDER BY enc.create_time DESC
</select>
<!-- 获取医生名字列表 -->
<select id="getDoctorNames" resultType="java.lang.String">
SELECT DISTINCT prac.name
FROM adm_practitioner AS prac
WHERE prac.delete_flag = '0'
ORDER BY prac.name
</select>
<!-- 根据医生ID和参与者类型获取相关的患者ID列表 -->
<select id="getPatientIdsByPractitionerId" resultType="java.lang.Long">
SELECT DISTINCT enc.patient_id
FROM adm_encounter_participant AS ep
INNER JOIN adm_encounter AS enc ON ep.encounter_id = enc.ID AND enc.delete_flag = '0'
INNER JOIN adm_patient AS pt ON enc.patient_id = pt.id AND pt.delete_flag = '0'
WHERE ep.delete_flag = '0'
AND ep.practitioner_id = #{practitionerId}
AND ep.tenant_id = #{tenantId}
AND enc.tenant_id = #{tenantId}
AND pt.tenant_id = #{tenantId}
<if test="typeCodes != null and !typeCodes.isEmpty()">
AND ep.type_code IN
<foreach collection="typeCodes" item="typeCode" open="(" separator="," close=")">
#{typeCode}
</foreach>
</if>
</select>
</mapper>