Bläddra i källkod

手术信息跟医生端绑定逻辑修改提交

wangzl 3 månader sedan
förälder
incheckning
769d395374

+ 15 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/app/controller/AppClinicRoomController.java

@@ -96,7 +96,7 @@ public class AppClinicRoomController extends BaseController {
         return CommonResult.success(clinicRoomService.stdAppSelectListByPatientCode(source));
     }
 
-    @ApiOperationSupport(author = "lf",order = 7)
+    @ApiOperationSupport(author = "lf",order = 8)
     @ApiOperation(value="判断当前手术是否可以推送消息至服务号   -1、不可推送 1、可推送至服务号和小程序 2、只可推送至小程序")
     @GetMapping("/judgeConcernMp/{clinicId}")
     public CommonResult<Integer> judgeConcernMp(@PathVariable("clinicId") String clinicId) {
@@ -109,4 +109,18 @@ public class AppClinicRoomController extends BaseController {
         }
         return CommonResult.success(1);
     }
+
+    @ApiOperationSupport(author = "wangzl",order = 8)
+    @ApiOperation(value="查询住院号相关最新的手术信息",notes = "权限: 无")
+    @PostMapping("/queryPatientCode")
+    public CommonResult<List<WxDoctorClinicRoomThumbnailVO>> queryPatientCodeLast(@RequestBody@Validated AppDoctorClinicQueryByPatientCodeDTO source) {
+        return CommonResult.success(clinicRoomService.stdAppSelectListByPatientCodeLast(source));
+    }
+    @ApiOperationSupport(author = "wangzl",order = 9)
+    @ApiOperation(value="绑定最新一条手术信息",notes = "权限: 无")
+    @PostMapping("/bindLastClinic")
+    public CommonResult<Boolean> stdBindLastClinic(@RequestBody@Validated(Insert.class) BizClinicAddOrEditDTO source) {
+        return CommonResult.success(clinicRoomService.stdBindLastClinic(source));
+    }
+
 }

+ 3 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizClinicAddOrEditDTO.java

@@ -69,4 +69,7 @@ public class BizClinicAddOrEditDTO implements Serializable {
     @NotNull  (message = "手术开始时间不能为空",groups = {Update.class, Insert.class})
     private Date clinicStartTime;
 
+    @ApiModelProperty(value = "诊疗室ID", position = 10)
+    private String clinicRoomIdApp;
+
 }

+ 1 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizClinicRoomRepository.java

@@ -60,4 +60,5 @@ public interface BizClinicRoomRepository extends BaseMapper<BizClinicRoomPO> {
     BizClinicAndAssessmentVO selectClinicAndAssessmentByClinicId(@Param("clinicId") String clinicId);
 
     List<WxDoctorClinicRoomThumbnailVO> stdAppselectListByPatientCode(@Param("query") AppDoctorClinicQueryByPatientCodeDTO source);
+    List<WxDoctorClinicRoomThumbnailVO> stdAppselectListByPatientCodeLast(@Param("query") AppDoctorClinicQueryByPatientCodeDTO source);
 }

+ 11 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizClinicRoomService.java

@@ -134,6 +134,8 @@ public interface IBizClinicRoomService {
 
     List<WxDoctorClinicRoomThumbnailVO> stdAppSelectListByPatientCode(AppDoctorClinicQueryByPatientCodeDTO source);
 
+    List<WxDoctorClinicRoomThumbnailVO> stdAppSelectListByPatientCodeLast(AppDoctorClinicQueryByPatientCodeDTO source);
+
     AppDoctorInfusionHistoryVO selectByClinicRoomAndPatientByClinicId(String clinicId);
 
     BizMpPublishInfoDTO selectMpPushTaskInfoById(String clinicId);
@@ -167,6 +169,7 @@ public interface IBizClinicRoomService {
 
     /**
      * 绑定手术和输注信息
+     *
      * @param source
      * @return
      */
@@ -178,4 +181,12 @@ public interface IBizClinicRoomService {
      * @date 2025/9/11
      */
     Boolean shiftDoctor(BizClinicShiftDoctorDTO source);
+
+
+    /**
+     * @description: 医生端对最新收信息进行更新绑定
+     * @author wangzl
+     * @date 2025/9/22
+     */
+    Boolean stdBindLastClinic(BizClinicAddOrEditDTO source);
 }

+ 48 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizClinicRoomServiceImpl.java

@@ -427,6 +427,9 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
             clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
             //更新监护信息
             updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
+            clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
+            clinicRoom.setClinicStartTime(source.getClinicStartTime());
+            clinicRoom.setClinicEndTime(null);
             baseRepository.updateById(clinicRoom);
         } else {
             //手术不存在,则新增手术信息
@@ -489,6 +492,10 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
     public List<WxDoctorClinicRoomThumbnailVO> stdAppSelectListByPatientCode(AppDoctorClinicQueryByPatientCodeDTO source) {
         return baseRepository.stdAppselectListByPatientCode(source);
     }
+    @Override
+    public List<WxDoctorClinicRoomThumbnailVO> stdAppSelectListByPatientCodeLast(AppDoctorClinicQueryByPatientCodeDTO source) {
+        return baseRepository.stdAppselectListByPatientCodeLast(source);
+    }
 
     @Override
     public AppDoctorInfusionHistoryVO selectByClinicRoomAndPatientByClinicId(String clinicId) {
@@ -644,6 +651,47 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         return clinicRoomDoctorUserService.saveBatch(collect);
     }
 
+    /**
+     * @param source
+     * @description: 医生端对最新收信息进行更新绑定
+     * @author wangzl
+     * @date 2025/9/22
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean stdBindLastClinic(BizClinicAddOrEditDTO source) {
+        BizClinicRoomPO clinicRoom = baseRepository.selectById(source.getClinicRoomIdApp());
+        if (ObjectUtil.isNull(clinicRoom)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息不存在");
+        }
+        String userId = LoginUserStrategy.tr.getCurrentUserId();
+        String patientCode = source.getPatientCode();
+        Date clinicStartTime = source.getClinicStartTime();
+        //手术已经存在,判断该手术是否已被医生监护
+        BizClinicRoomDoctorUserPO clinicRoomDoctorUserPO = clinicRoomDoctorUserRepository.selectOne(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
+                .eq(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicRoom.getId())
+                .last("limit 1"));
+        if (ObjectUtil.isNotNull(clinicRoomDoctorUserPO)) {
+            if (ObjectUtil.equal(clinicRoomDoctorUserPO.getUserId(), userId)) {
+                throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, String.format("住院号{%s}于{%s}已存在手术:{%s},请勿重复添加", patientCode, DateUtil.formatDate(clinicStartTime), clinicRoom.getClinicName()));
+            } else {
+                throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, String.format("住院号{%s}于{%s}已存在手术:{%s},已被其他医生看护", patientCode, DateUtil.formatDate(clinicStartTime), clinicRoom.getClinicName()));
+            }
+        }
+        //若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
+        clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
+        //更新监护信息
+        updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
+        //更新医生录入手术信息
+        clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
+        clinicRoom.setClinicStartTime(clinicStartTime);
+        clinicRoom.setClinicEndTime(null);
+        clinicRoom.setDeptId(source.getDeptId());
+        clinicRoom.setDeptName(source.getDeptName());
+        clinicRoom.setClinicName(source.getClinicName());
+        return baseRepository.updateById(clinicRoom)!=0;
+    }
+
     /**
      * 微信小程序基于医生已填写的信息更新数据
      */

+ 32 - 0
tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizClinicRoomMapper.xml

@@ -620,4 +620,36 @@
             </if>
         </where>
     </select>
+    <select id="stdAppselectListByPatientCodeLast" resultMap="stdThumbnailResult">
+        select
+        bcr.id as clinic_room_id,
+        bcr.clinic_name as clinic_name,
+        bcr.clinic_start_time as clinic_start_time,
+        bcr.dept_id as dept_id,
+        bp.id as patient_id,
+        bcr.dept_name as dept_name,
+        bcr.patient_code as patient_code,
+        bcr.patient_name as patient_name,
+        bcr.patient_gender as patient_gender,
+        bcr.patient_age as patient_age,
+        bcr.image_url as patient_avatar,
+        bcr.last_modify_user_type as last_modify_user_type,
+        bp.card_no as card_no,
+        bp.new_human as new_human,
+        bcrdu.user_id as doctor_id,
+        bcrwu.wx_user_id as wx_user_id
+        from
+        biz_patient as bp
+        join biz_clinic_room as bcr on bp.current_clinic_id  = bcr.id
+        left join biz_clinic_room_wx_user as bcrwu on bcr.id = bcrwu.clinic_room_id
+        left join biz_clinic_room_doctor_user as bcrdu on bcr.id = bcrdu.clinic_room_id
+        <where>
+            bcrdu.id is null and bp.deleted = 0 and bcr.deleted = 0 and bp.patient_code like concat('%',#{query.patientCode},'%')
+            <if test="query.wxUserId !=null and query.wxUserId != ''">
+                and bcrwu.wx_user_id = #{query.wxUserId}
+            </if>
+        </where>
+        order by bcr.clinic_start_time desc
+         LIMIT 1
+    </select>
 </mapper>