需求111
This commit is contained in:
@@ -75,11 +75,19 @@ public class NursingRecordAppServiceImpl implements INursingRecordAppService {
|
||||
public R<?> getPatientInfoPage(NursingSearchParam nursingSearchParam, String searchKey, Integer pageNo,
|
||||
Integer pageSize, HttpServletRequest request) {
|
||||
|
||||
// 构建查询条件
|
||||
QueryWrapper<NursingSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(nursingSearchParam, searchKey,
|
||||
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo)),
|
||||
// 构建查询条件(租户ID)
|
||||
QueryWrapper<NursingSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(nursingSearchParam, null, null,
|
||||
request);
|
||||
|
||||
// 搜索条件:姓名、病历号、床位号(全部放入一个 and() 块,避免 AND 重复)
|
||||
if (searchKey != null && !searchKey.isEmpty()) {
|
||||
queryWrapper.and(wrapper -> {
|
||||
wrapper.or().like("T5.patient_name", searchKey);
|
||||
wrapper.or().like("T5.patient_bus_no", searchKey);
|
||||
wrapper.or().like("T5.bed_location_name", searchKey);
|
||||
});
|
||||
}
|
||||
|
||||
// 分页查询,查询患者信息
|
||||
IPage<NursingPageDto> NursingInfoPage = nursingRecordAppMapper.getPatientPage(new Page<>(pageNo, pageSize),
|
||||
EncounterClass.IMP.getValue(), LocationForm.BED.getValue(), LocationForm.WARD.getValue(),
|
||||
|
||||
@@ -62,7 +62,8 @@ public class NursingPageDto {
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
@Dict(dictTable = "adm_location", dictCode = "id", dictText = "name")
|
||||
private Long bedLocationId;
|
||||
private String bedLocationId_dictText;
|
||||
/** 床位号名称(用于搜索) */
|
||||
private String bedLocationName;
|
||||
|
||||
/** 病区 */
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
|
||||
@@ -17,6 +17,9 @@ public class NursingSearchParam {
|
||||
/** 床位号 */
|
||||
private Long bedLocationId;
|
||||
|
||||
/** 床位名称(用于模糊搜索) */
|
||||
private String bedLocationName;
|
||||
|
||||
/** 科室ID */
|
||||
private Long orgId;
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
T5.admissionDate,
|
||||
T5.wardAdmissionDate,
|
||||
T5.ward_location_id,
|
||||
T5.bed_location_id
|
||||
T5.bed_location_id,
|
||||
T5.bed_location_name
|
||||
FROM (SELECT T1.tenant_id,
|
||||
T1.id AS patient_id, --患者ID
|
||||
T1.name AS patient_name, --患者姓名
|
||||
@@ -27,7 +28,8 @@
|
||||
T2.start_time AS admissionDate, --入院日期
|
||||
T3.ward_admission_date AS wardAdmissionDate, --入科日期
|
||||
T3.location_id AS ward_location_id, --病区
|
||||
T4.location_id AS bed_location_id --床号
|
||||
T4.location_id AS bed_location_id, --床号
|
||||
T4L.name AS bed_location_name --床位号名称(用于搜索)
|
||||
FROM adm_patient AS T1
|
||||
INNER JOIN adm_encounter AS T2
|
||||
ON T2.patient_id = T1.id
|
||||
@@ -55,13 +57,32 @@
|
||||
) ranked
|
||||
WHERE rn = 1) AS T3
|
||||
ON T3.encounter_id = T2.ID
|
||||
LEFT JOIN adm_encounter_location AS T4
|
||||
LEFT JOIN (SELECT encounter_id,
|
||||
location_id,
|
||||
form_enum,
|
||||
delete_flag
|
||||
FROM (SELECT encounter_id,
|
||||
location_id,
|
||||
form_enum,
|
||||
delete_flag,
|
||||
ROW_NUMBER() OVER (PARTITION BY encounter_id
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN update_time IS NULL THEN create_time
|
||||
ELSE update_time
|
||||
END DESC) AS rn
|
||||
FROM adm_encounter_location
|
||||
WHERE form_enum = #{bed}
|
||||
AND status_enum = #{active}
|
||||
AND delete_flag = '0'
|
||||
) ranked
|
||||
WHERE rn = 1) AS T4
|
||||
ON T4.encounter_id = T2.ID
|
||||
AND T4.form_enum = #{bed}
|
||||
AND T4.status_enum = #{active}
|
||||
AND T4.delete_flag = '0'
|
||||
WHERE T1.delete_flag = '0'
|
||||
ORDER BY T4.location_id ASC) AS T5
|
||||
LEFT JOIN adm_location AS T4L
|
||||
ON T4L.id = T4.location_id
|
||||
AND T4L.delete_flag = '0'
|
||||
WHERE T1.delete_flag = '0'
|
||||
ORDER BY T4.location_id ASC) AS T5
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
@@ -121,11 +142,27 @@
|
||||
) ranked
|
||||
WHERE rn = 1) AS T3
|
||||
ON T3.encounter_id = T2.ID
|
||||
LEFT JOIN adm_encounter_location AS T4
|
||||
LEFT JOIN (SELECT encounter_id,
|
||||
location_id,
|
||||
form_enum,
|
||||
delete_flag
|
||||
FROM (SELECT encounter_id,
|
||||
location_id,
|
||||
form_enum,
|
||||
delete_flag,
|
||||
ROW_NUMBER() OVER (PARTITION BY encounter_id
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN update_time IS NULL THEN create_time
|
||||
ELSE update_time
|
||||
END DESC) AS rn
|
||||
FROM adm_encounter_location
|
||||
WHERE form_enum = #{bed}
|
||||
AND status_enum = #{active}
|
||||
AND delete_flag = '0'
|
||||
) ranked
|
||||
WHERE rn = 1) AS T4
|
||||
ON T4.encounter_id = T2.ID
|
||||
AND T4.form_enum = #{bed}
|
||||
AND T4.status_enum = #{active}
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN doc_emr AS T5
|
||||
ON T5.patient_id = T1.id
|
||||
AND T5.encounter_id = T2.ID
|
||||
@@ -166,4 +203,4 @@
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user