- 在HomeStatisticsDto中新增我的患者数量和待写病历数量字段 - 实现医生患者查询功能,支持按租户隔离数据 - 更新首页统计服务,为医生用户提供专属患者统计数据 - 添加菜单名称点击跳转功能,支持路由导航和外部链接打开 - 修复首页统计数据显示,确保医生看到正确的患者数量 - 添加医保日结结算相关实体、服务和前端页面 - 配置前端路由控制器,支持Vue Router History模式
155 lines
5.8 KiB
XML
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>
|