From f78d8902da9551c5d9796065f0add8947752a70e Mon Sep 17 00:00:00 2001 From: "Wang.Huan" Date: Mon, 10 Mar 2025 13:52:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E7=94=9F=E7=AB=99-=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IDoctorStationEmrAppService.java | 23 ++++++ .../impl/DoctorStationEmrAppServiceImpl.java | 61 ++++++++++++++++ .../DoctorStationAdviceController.java | 21 ++++++ .../DoctorStationDiagnosisController.java | 21 ++++++ .../DoctorStationEmrController.java | 58 +++++++++++++++ .../dto/DoctorStationInitDto.java | 50 +++++++++++++ .../web/doctorstation/dto/PatientInfoDto.java | 73 +++++++++++++++++++ .../mapper/DoctorStationEmrAppMapper.java | 34 +++++++++ ...OutpatientRegistrationAppServiceImpl.java} | 6 +- .../OutpatientRegistrationAppMapper.java | 2 + .../DoctorStationEmrAppMapper.xml | 70 ++++++++++++++++++ .../OutpatientRegistrationAppMapper.xml | 18 ++--- .../openhis/common/enums/EncounterStatus.java | 9 ++- 13 files changed, 430 insertions(+), 16 deletions(-) create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationAdviceController.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationDiagnosisController.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DoctorStationInitDto.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientInfoDto.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/mapper/DoctorStationEmrAppMapper.java rename openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/{IOutpatientRegistrationAppServiceImpl.java => OutpatientRegistrationAppServiceImpl.java} (97%) create mode 100644 openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationEmrAppMapper.xml diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java new file mode 100644 index 00000000..58a1755e --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java @@ -0,0 +1,23 @@ +package com.openhis.web.doctorstation.appservice; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.openhis.web.doctorstation.dto.PatientInfoDto; + +/** + * 医生站-电子病历 应用Service + */ +public interface IDoctorStationEmrAppService { + + /** + * 查询就诊患者信息 + * + * @param patientInfoDto 查询条件 (前端传 statusEnum 区分就诊状态tab) + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 就诊患者信息 + */ + IPage getPatientInfo(PatientInfoDto patientInfoDto, String searchKey, Integer pageNo, + Integer pageSize); + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java new file mode 100644 index 00000000..d6653da7 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java @@ -0,0 +1,61 @@ +package com.openhis.web.doctorstation.appservice.impl; + +import java.util.Arrays; +import java.util.HashSet; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.utils.AgeCalculatorUtil; +import com.openhis.common.enums.AdministrativeGender; +import com.openhis.common.enums.ClinicalStatus; +import com.openhis.common.enums.EncounterStatus; +import com.openhis.common.enums.ParticipantType; +import com.openhis.common.utils.EnumUtils; +import com.openhis.common.utils.HisQueryUtils; +import com.openhis.web.doctorstation.appservice.IDoctorStationEmrAppService; +import com.openhis.web.doctorstation.dto.PatientInfoDto; +import com.openhis.web.doctorstation.mapper.DoctorStationEmrAppMapper; + +/** + * 医生站-电子病历 应用实现类 + */ +@Service +public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppService { + + @Resource + DoctorStationEmrAppMapper doctorStationEmrAppMapper; + + /** + * 查询就诊患者信息 + * + * @param patientInfoDto 查询条件 (前端传 statusEnum 区分就诊状态tab) + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 就诊患者信息 + */ + @Override + public IPage getPatientInfo(PatientInfoDto patientInfoDto, String searchKey, Integer pageNo, + Integer pageSize) { + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(patientInfoDto, searchKey, + new HashSet<>(Arrays.asList("patient_name", "id_card", "phone")), null); + IPage patientInfo = doctorStationEmrAppMapper.getPatientInfo(new Page<>(pageNo, pageSize), + ParticipantType.ADMITTER.getCode(), ClinicalStatus.INACTIVE.getValue(), null, null, queryWrapper); + patientInfo.getRecords().forEach(e -> { + // 性别 + e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum())); + // 计算年龄 + e.setAge(AgeCalculatorUtil.getAge(e.getBirthDate())); + // 就诊状态 + e.setStatusEnum_enumText(EnumUtils.getInfoByValue(EncounterStatus.class, e.getStatusEnum())); + }); + return patientInfo; + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationAdviceController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationAdviceController.java new file mode 100644 index 00000000..95eaa916 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationAdviceController.java @@ -0,0 +1,21 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.doctorstation.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 医生站-医嘱 controller + */ +@RestController +@RequestMapping("/doctor-station/advice") +@Slf4j +@AllArgsConstructor +public class DoctorStationAdviceController { + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationDiagnosisController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationDiagnosisController.java new file mode 100644 index 00000000..2579bc9b --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationDiagnosisController.java @@ -0,0 +1,21 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.doctorstation.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 医生站-诊断 controller + */ +@RestController +@RequestMapping("/doctor-station/diagnosis") +@Slf4j +@AllArgsConstructor +public class DoctorStationDiagnosisController { + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java new file mode 100644 index 00000000..cd29874e --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java @@ -0,0 +1,58 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.doctorstation.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.core.common.core.domain.R; +import com.openhis.web.doctorstation.appservice.IDoctorStationEmrAppService; +import com.openhis.web.doctorstation.dto.DoctorStationInitDto; +import com.openhis.web.doctorstation.dto.PatientInfoDto; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 医生站-电子病历 controller + */ +@RestController +@RequestMapping("/doctor-station/emr") +@Slf4j +@AllArgsConstructor +public class DoctorStationEmrController { + + private final IDoctorStationEmrAppService iDoctorStationEmrAppService; + + /** + * 医生站基础数据初始化 + * + * @return 基础数据 + */ + @GetMapping(value = "/init") + public R init() { + // DoctorStationInitDto doctorStationInitDto = new DoctorStationInitDto(); + return R.ok(new DoctorStationInitDto()); + } + + /** + * 查询就诊患者信息 + * + * @param patientInfoDto 查询条件 (前端传 statusEnum 区分就诊状态tab) + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 就诊患者信息 + */ + @GetMapping(value = "/patient-info") + public R getPatientInfo(PatientInfoDto patientInfoDto, + @RequestParam(value = "searchKey", defaultValue = "") String searchKey, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { + return R.ok(iDoctorStationEmrAppService.getPatientInfo(patientInfoDto, searchKey, pageNo, pageSize)); + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DoctorStationInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DoctorStationInitDto.java new file mode 100644 index 00000000..8a8738fc --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DoctorStationInitDto.java @@ -0,0 +1,50 @@ +package com.openhis.web.doctorstation.dto; + +import java.util.ArrayList; +import java.util.List; + +import com.openhis.common.enums.EncounterStatus; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 医生站 init基础数据 + */ +@Data +@Accessors(chain = true) +public class DoctorStationInitDto { + + private List patientEncounterStatusOptions; + + /** + * 患者就诊状态 + */ + @Data + public static class patientEncounterStatusOption { + private Integer value; + private String label; + + public patientEncounterStatusOption(Integer value, String label) { + this.value = value; + this.label = label; + } + } + + /** + * 设置默认值 + */ + public DoctorStationInitDto() { + List options = new ArrayList<>(); + options.add( + new patientEncounterStatusOption(EncounterStatus.PLANNED.getValue(), EncounterStatus.PLANNED.getInfo())); + options.add(new patientEncounterStatusOption(EncounterStatus.IN_PROGRESS.getValue(), + EncounterStatus.IN_PROGRESS.getInfo())); + options.add( + new patientEncounterStatusOption(EncounterStatus.ON_HOLD.getValue(), EncounterStatus.ON_HOLD.getInfo())); + options.add(new patientEncounterStatusOption(EncounterStatus.DISCHARGED.getValue(), + EncounterStatus.DISCHARGED.getInfo())); + this.patientEncounterStatusOptions = options; + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientInfoDto.java new file mode 100644 index 00000000..7b6bf160 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientInfoDto.java @@ -0,0 +1,73 @@ +package com.openhis.web.doctorstation.dto; + +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 就诊患者信息 dto + */ +@Data +@Accessors(chain = true) +public class PatientInfoDto { + + /** + * 就诊ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long encounterId; + + /** + * 患者id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long patientId; + + /** + * 患者姓名 + */ + private String patientName; + + /** + * 患者性别 + */ + private Integer genderEnum; + private String genderEnum_enumText; + + /** + * 证件号 + */ + private String idCard; + + /** + * 电话 + */ + private String phone; + + /** + * 生日 + */ + + private Date birthDate; + + /** + * 年龄 + */ + private String age; + + /** + * 就诊状态 + */ + private Integer statusEnum; + private String statusEnum_enumText; + + /** + * 过敏史标记 + */ + private Integer allergyHistoryFlag; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/mapper/DoctorStationEmrAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/mapper/DoctorStationEmrAppMapper.java new file mode 100644 index 00000000..965a39df --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/mapper/DoctorStationEmrAppMapper.java @@ -0,0 +1,34 @@ +package com.openhis.web.doctorstation.mapper; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.openhis.web.doctorstation.dto.PatientInfoDto; + +/** + * 医生站-电子病历 应用Mapper + */ +@Repository +public interface DoctorStationEmrAppMapper { + + /** + * 查询就诊患者信息 + * + * @param page 分页参数 + * @param participantType 参与者类型 + * @param ClinicalStatus 过敏史状态 + * @param userId 当前登录账号ID + * @param currentUserOrganizationId 当前登录账号所属的科室ID + * @param queryWrapper 查询条件 + * @return 就诊患者信息 + */ + IPage getPatientInfo(@Param("page") Page page, + @Param("participantType") String participantType, @Param("ClinicalStatus") Integer ClinicalStatus, + @Param("userId") Long userId, @Param("currentUserOrganizationId") Long currentUserOrganizationId, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/OutpatientRegistrationAppServiceImpl.java similarity index 97% rename from openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java rename to openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/OutpatientRegistrationAppServiceImpl.java index 25e27e38..94cae88b 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/OutpatientRegistrationAppServiceImpl.java @@ -41,7 +41,7 @@ import com.openhis.web.outpatientservice.mapper.OutpatientRegistrationAppMapper; * 门诊挂号 应用实现类 */ @Service -public class IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistrationAppService { +public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistrationAppService { @Resource PatientMapper patientMapper; @@ -283,8 +283,8 @@ public class IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistr new HashSet<>(Arrays.asList("patient_name", "organization_name", "practitioner_name", "healthcare_name")), null); - IPage currentDayEncounter = - outpatientRegistrationAppMapper.getCurrentDayEncounter(new Page<>(pageNo, pageSize), queryWrapper); + IPage currentDayEncounter = outpatientRegistrationAppMapper + .getCurrentDayEncounter(new Page<>(pageNo, pageSize), ParticipantType.ADMITTER.getCode(), queryWrapper); currentDayEncounter.getRecords().forEach(e -> { // 性别 e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum())); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/mapper/OutpatientRegistrationAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/mapper/OutpatientRegistrationAppMapper.java index deb9f5b4..10f4248d 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/mapper/OutpatientRegistrationAppMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/mapper/OutpatientRegistrationAppMapper.java @@ -32,10 +32,12 @@ public interface OutpatientRegistrationAppMapper { * 查询当日就诊数据 * * @param page 分页参数 + * @param participantType 参与者类型 * @param queryWrapper 查询条件 * @return 当日就诊数据 */ IPage getCurrentDayEncounter(@Param("page") Page page, + @Param("participantType") String participantType, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); } diff --git a/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationEmrAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationEmrAppMapper.xml new file mode 100644 index 00000000..68e29c72 --- /dev/null +++ b/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationEmrAppMapper.xml @@ -0,0 +1,70 @@ + + + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/resources/mapper/outpatientservice/OutpatientRegistrationAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/outpatientservice/OutpatientRegistrationAppMapper.xml index a0072820..11a244a6 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/outpatientservice/OutpatientRegistrationAppMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/outpatientservice/OutpatientRegistrationAppMapper.xml @@ -70,15 +70,15 @@ T1.status_enum AS status_enum, T1.create_time AS register_time FROM adm_encounter AS T1 - LEFT JOIN adm_organization AS T2 ON T1.organization_id = T2. - ID - LEFT JOIN adm_healthcare_service AS T3 ON T1.service_type_id = T3. - ID - LEFT JOIN adm_encounter_participant AS T4 ON T1.ID = T4.encounter_id - LEFT JOIN adm_practitioner AS T5 ON T5.ID = T4.practitioner_id - LEFT JOIN adm_account AS T6 ON T1.ID = T6.encounter_id - LEFT JOIN fin_contract AS T7 ON T6.contract_no = T7.bus_no - LEFT JOIN adm_patient AS T8 ON T1.patient_id = T8.ID + LEFT JOIN adm_organization AS T2 ON T1.organization_id = T2.ID AND T2.delete_flag = '0' + LEFT JOIN adm_healthcare_service AS T3 ON T1.service_type_id = T3.ID AND T3.delete_flag = '0' + LEFT JOIN adm_encounter_participant AS T4 + ON T1.ID = T4.encounter_id AND T4.type_code = #{participantType} AND + T4.delete_flag = '0' + LEFT JOIN adm_practitioner AS T5 ON T5.ID = T4.practitioner_id AND T5.delete_flag = '0' + LEFT JOIN adm_account AS T6 ON T1.ID = T6.encounter_id AND T6.delete_flag = '0' + LEFT JOIN fin_contract AS T7 ON T6.contract_no = T7.bus_no AND T7.delete_flag = '0' + LEFT JOIN adm_patient AS T8 ON T1.patient_id = T8.ID AND T8.delete_flag = '0' WHERE T1.delete_flag = '0' AND T1.create_time > CURRENT_DATE) AS T9 ${ew.customSqlSegment} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java index ed502f78..eb2cad89 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java @@ -1,19 +1,20 @@ package com.openhis.common.enums; + import com.baomidou.mybatisplus.annotation.EnumValue; + import lombok.AllArgsConstructor; import lombok.Getter; - @Getter @AllArgsConstructor public enum EncounterStatus implements HisEnumInterface { - PLANNED(1, "draft", "已安排"), + PLANNED(1, "draft", "待诊"), // 已安排 - IN_PROGRESS(2, "in-progress", "进行中"), + IN_PROGRESS(2, "in-progress", "在诊"), // 进行中 ON_HOLD(3, "on-hold", "暂离"), - DISCHARGED(4, "on-discharged", "诊毕,出院"), + DISCHARGED(4, "on-discharged", "诊毕"), // 诊毕,出院 COMPLETED(5, "completed", "完成,已结算"),