Ver código fonte

优化益寿缘医生端确认处方逻辑

cgp 1 semana atrás
pai
commit
ddf57925df

+ 5 - 0
fs-service/src/main/java/com/fs/his/domain/PrescriptionTaskRecord.java

@@ -68,4 +68,9 @@ public class PrescriptionTaskRecord {
     * 备注信息
     */
    private String remark;
+
+   /**
+    * 签名标志:1-医生签名,2-医生签名+药师签名
+    */
+   private Integer signFlag;
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/enums/PrescriptionTaskStepEnum.java

@@ -12,6 +12,7 @@ import lombok.Getter;
  * 3 - 待药师审核
  * 4 - 待建议
  * 5 - 待用户二次确认
+ * 6 - 完成
  */
 @Getter
 public enum PrescriptionTaskStepEnum {

+ 5 - 0
fs-service/src/main/java/com/fs/his/mapper/FsExportTaskMapper.java

@@ -3,6 +3,7 @@ package com.fs.his.mapper;
 import java.util.List;
 import com.fs.his.domain.FsExportTask;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 /**
  * 导出任务Mapper接口
@@ -67,4 +68,8 @@ public interface FsExportTaskMapper
 
     @Select("update prescription_task_record set execute_status=0 where prescribe_id=#{id}")
     void updateFsExportTaskByPrescribeId(Long id);
+
+
+    @Update("update prescription_task_record set execute_status=0, sign_flag=#{signFlag} where prescribe_id=#{id}")
+    void resetFsExportTaskByPrescribeIdAndSignFlag(Long id, Integer signFlag);
 }

+ 4 - 2
fs-service/src/main/java/com/fs/his/mapper/PrescriptionTaskRecordMapper.java

@@ -16,9 +16,9 @@ public interface PrescriptionTaskRecordMapper {
     @Insert("<script>" +
             "INSERT INTO prescription_task_record " +
             "(prescribe_id, prescribe_url, retry_count, execute_status, error_message, " +
-            "first_execute_time, last_execute_time, success_time, remark) " +
+            "first_execute_time, last_execute_time, success_time, remark,sign_flag) " +
             "VALUES (#{prescribeId}, #{prescribeUrl}, #{retryCount}, #{executeStatus}, #{errorMessage}, " +
-            "#{firstExecuteTime}, #{lastExecuteTime}, #{successTime}, #{remark})" +
+            "#{firstExecuteTime}, #{lastExecuteTime}, #{successTime}, #{remark}, #{signFlag})" +
             "</script>")
     @Options(useGeneratedKeys = true, keyProperty = "id")
     int insert(PrescriptionTaskRecord record);
@@ -37,6 +37,7 @@ public interface PrescriptionTaskRecordMapper {
             "<if test='lastExecuteTime != null'>last_execute_time = #{lastExecuteTime},</if>" +
             "<if test='successTime != null'>success_time = #{successTime},</if>" +
             "<if test='remark != null'>remark = #{remark},</if>" +
+            "<if test='signFlag != null'>sign_flag = #{signFlag},</if>" +
             "</set>" +
             "WHERE id = #{id}" +
             "</script>")
@@ -56,6 +57,7 @@ public interface PrescriptionTaskRecordMapper {
             "<if test='lastExecuteTime != null'>last_execute_time = #{lastExecuteTime},</if>" +
             "<if test='successTime != null'>success_time = #{successTime},</if>" +
             "<if test='remark != null'>remark = #{remark},</if>" +
+            "<if test='signFlag != null'>sign_flag = #{signFlag},</if>" +
             "</set>" +
             "WHERE prescribe_id = #{prescribeId}" +
             "</script>")

+ 2 - 0
fs-service/src/main/java/com/fs/his/service/IFsExportTaskService.java

@@ -75,4 +75,6 @@ public interface IFsExportTaskService
 
     void updateFsExportTaskByPrescribeId(Long id);
 
+    void resetFsExportTaskByPrescribeIdAndSignFlag(Long id,Integer signFlag);
+
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/service/IFsPrescribeService.java

@@ -88,6 +88,8 @@ public interface IFsPrescribeService
      String PrescribeImg(Long prescribeId);
      String PrescribeImgYsy(Long prescribeId);
 
+    String PrescribeImgYsyTask(Long prescribeId,Integer signFlag);
+
     Long insertFsPrescribeByPackageOrder(FsPackageOrder packageOrder);
 
     List<FsPrescribeExcelListVO> selectFsPrescribeExcelListVO(FsPrescribeParam fsPrescribe);

+ 7 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsExportTaskServiceImpl.java

@@ -283,4 +283,11 @@ public class FsExportTaskServiceImpl implements IFsExportTaskService
     public void updateFsExportTaskByPrescribeId(Long id) {
          fsExportTaskMapper.updateFsExportTaskByPrescribeId(id);
     }
+
+    @Override
+    public void resetFsExportTaskByPrescribeIdAndSignFlag(Long id, Integer signFlag) {
+        fsExportTaskMapper.resetFsExportTaskByPrescribeIdAndSignFlag(id, signFlag);
+    }
+
+
 }

+ 64 - 61
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java

@@ -525,7 +525,7 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
     }
 
     @Override
-    public String PrescribeImgYsy(Long prescribeId) {
+    public String PrescribeImgYsyTask(Long prescribeId,Integer signFlag) {
         FsPrescribeVO f = fsPrescribeMapper.selectFsPrescribeByPrescribeIdVO(prescribeId);
         Asserts.notNull(f,String.format("处方 %d 未找到!",prescribeId));
 
@@ -553,16 +553,6 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
             } else {
                 o.setBedId("中医科");
             }
-//            String remark = "";
-//            if (f.getUsageJson() != null) {
-//                FsPrescribeUsageDTO usage = JSONUtil.toBean(f.getUsageJson(), FsPrescribeUsageDTO.class);
-//                remark = usage.getRemark();
-//            }
-//            if (remark != null && remark != "") {
-//                o.setRemark(remark);
-//            } else {
-//                o.setRemark("请按照用药说明书服用药品,如有不适,请及时就医!");
-//            }
             if (StringUtils.isNotBlank(f.getRemark())){
                 o.setRemark(f.getRemark());
             } else {
@@ -573,10 +563,20 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
             // 在这里添加处方药品列表的值
             List<FsPrescribeDrug> PrescribeDrugList=filterNonDrugPrescribe(list);
             o.setPrescribeDrug(PrescribeDrugList);
-            //医生签名
-            o.setUrl(f.getUrl());
-            //药师签名
-            o.setDrugDoctorUrl(f.getDrugDoctorSignUrl());
+            if (signFlag!=null&&signFlag==1){
+                //医生签名
+                o.setUrl(f.getUrl());
+            }else if (signFlag!=null&&signFlag==2){
+                //医生签名
+                o.setUrl(f.getUrl());
+                //药师签名
+                o.setDrugDoctorUrl(f.getDrugDoctorSignUrl());
+            } else if (signFlag==null){//保底策略 默认
+                //医生签名
+                o.setUrl(f.getUrl());
+                //药师签名
+                o.setDrugDoctorUrl(f.getDrugDoctorSignUrl());
+            }
             //医生名称
             o.setDoctorName(f.getDoctorName());
             //审核药师
@@ -602,17 +602,16 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         return f.getPrescribeImgUrl();
     }
 
+    @Override
+    public String PrescribeImgYsy(Long prescribeId) {
+        FsPrescribeVO f = fsPrescribeMapper.selectFsPrescribeByPrescribeIdVO(prescribeId);
+        Asserts.notNull(f,String.format("处方 %d 未找到!",prescribeId));
 
-    //更新处方单图片
-    private void prescriptionPicUpdate(PrescribeXyImgParam param,Long prescribeId){
-        FsPrescribeVO prescribeVO = fsPrescribeMapper.selectFsPrescribeByPrescribeIdVO(prescribeId);
-        Asserts.notNull(prescribeVO,String.format("处方 %d 未找到!",prescribeId));
-
-        FsStoreOrder fsStoreOrder = storeOrderService.selectFsStoreOrderByOrderId(prescribeVO.getStoreOrderId());
-        FsInquiryOrderVO order = fsInquiryOrderMapper.selectFsInquiryOrderVOByOrderId(prescribeVO.getInquiryOrderId());
-        if (StringUtils.isNotBlank(prescribeVO.getPrescribeImgUrl())) {
+        FsStoreOrder fsStoreOrder = storeOrderService.selectFsStoreOrderByOrderId(f.getStoreOrderId());
+        FsInquiryOrderVO order = fsInquiryOrderMapper.selectFsInquiryOrderVOByOrderId(f.getInquiryOrderId());
+        if (StringUtils.isBlank(f.getPrescribeImgUrl())) {
             FsPrescribeDrug d = new FsPrescribeDrug();
-            d.setPrescribeId(prescribeVO.getPrescribeId());
+            d.setPrescribeId(f.getPrescribeId());
             List<FsPrescribeDrug> list = fsPrescribeDrugMapper.selectFsPrescribeDrugList(d);
 
             if (CollectionUtils.isEmpty(list)) {
@@ -621,55 +620,66 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
             PrescribeXyImgParam o = new PrescribeXyImgParam();
             o.setStatus(fsStoreOrder.getStatus());
             o.setTotalPrice(fsStoreOrder.getPayPrice());
-            o.setTime(prescribeVO.getCreateTime());
-            o.setPrescribeId(prescribeVO.getPrescribeCode());
-            o.setPatientName(prescribeVO.getPatientName());
-            o.setPatientGender(prescribeVO.getPatientGender());
-            o.setPatientAge(prescribeVO.getPatientAge());
-            o.setOutpatientId(prescribeVO.getPrescribeCode());
+            o.setTime(f.getCreateTime());
+            o.setPrescribeId(f.getPrescribeCode());
+            o.setPatientName(f.getPatientName());
+            o.setPatientGender(f.getPatientGender());
+            o.setPatientAge(f.getPatientAge());
+            o.setOutpatientId(f.getPrescribeCode());
             if (order != null) {
                 o.setBedId(order.getDeptName());
             } else {
                 o.setBedId("中医科");
             }
-            if (StringUtils.isNotBlank(prescribeVO.getRemark())){
-                o.setRemark(prescribeVO.getRemark());
+//            String remark = "";
+//            if (f.getUsageJson() != null) {
+//                FsPrescribeUsageDTO usage = JSONUtil.toBean(f.getUsageJson(), FsPrescribeUsageDTO.class);
+//                remark = usage.getRemark();
+//            }
+//            if (remark != null && remark != "") {
+//                o.setRemark(remark);
+//            } else {
+//                o.setRemark("请按照用药说明书服用药品,如有不适,请及时就医!");
+//            }
+            if (StringUtils.isNotBlank(f.getRemark())){
+                o.setRemark(f.getRemark());
             } else {
                 o.setRemark("请按照用药说明书服用药品,如有不适,请及时就医!");
             }
-            o.setHistoryAllergic(prescribeVO.getHistoryAllergic());
-            o.setDiagnose(prescribeVO.getDiagnose());
+            o.setHistoryAllergic(f.getHistoryAllergic());
+            o.setDiagnose(f.getDiagnose());
             // 在这里添加处方药品列表的值
             List<FsPrescribeDrug> PrescribeDrugList=filterNonDrugPrescribe(list);
             o.setPrescribeDrug(PrescribeDrugList);
-
-
+            //医生签名
+            o.setUrl(f.getUrl());
+            //药师签名
+            o.setDrugDoctorUrl(f.getDrugDoctorSignUrl());
             //医生名称
-            o.setDoctorName(prescribeVO.getDoctorName());
+            o.setDoctorName(f.getDoctorName());
             //审核药师
-            o.setAuditDoctor(prescribeVO.getDoctorDrugName());
+            o.setAuditDoctor(f.getDoctorDrugName());
             o.setDispatcher("");
             o.setCheckDoctor("");
-            o.setTelPhone(prescribeVO.getPatientTel());
-            FsDoctor fsDoctor = doctorMapper.selectFsDoctorByDoctorId(prescribeVO.getDoctorId());
-            Asserts.notNull(fsDoctor,String.format("医生 %s 未找到!",prescribeVO.getDoctorId()));
+            o.setTelPhone(f.getPatientTel());
+            FsDoctor fsDoctor = doctorMapper.selectFsDoctorByDoctorId(f.getDoctorId());
+            Asserts.notNull(fsDoctor,String.format("医生 %s 未找到!",f.getDoctorId()));
             o.setDoctorNo(fsDoctor.getCertificateCode());
             o.setDoctorTitle(fsDoctor.getPosition());
-            //TODO 在医生确认开放及以后阶段可赋值 医生签名
-            param.setUrl(prescribeVO.getUrl());
-            //TODO 在药师审核及以后阶段可赋值 药师签名
-            param.setDrugDoctorUrl(prescribeVO.getDrugDoctorSignUrl());
+
             String url = prescriptionImageService.generatePrescriptionImage(o);
             FsPrescribe fsPrescribe = new FsPrescribe();
             fsPrescribe.setPrescribeImgUrl(url);
-            fsPrescribe.setPrescribeId(prescribeVO.getPrescribeId());
+            fsPrescribe.setPrescribeId(f.getPrescribeId());
             fsPrescribeMapper.updateFsPrescribe(fsPrescribe);
-            prescribeVO.setPrescribeImgUrl(url);
+            f.setPrescribeImgUrl(url);
 
         } else {
             log.info("处方 {} 对应处方单已经被生成!",prescribeId);
         }
+        return f.getPrescribeImgUrl();
     }
+
     /**
      * 根据产品最新状态过滤处方单药品列表。
      * <p>
@@ -1197,7 +1207,9 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         prescribeRecordService.insertFsPrescribeRecord(prescribeRecord);
         if (param.getStatus() == 1) {
             map.setAuditReason("");
-            fsExportTaskService.updateFsExportTaskByPrescribeId(param.getPrescribeId());
+            //fsExportTaskService.updateFsExportTaskByPrescribeId(param.getPrescribeId());
+            //重置处方单定时任务(药师审核通过后生成拥有药师签名的标识)
+            fsExportTaskService.resetFsExportTaskByPrescribeIdAndSignFlag(param.getPrescribeId(),2);
 
             //审核通过 同步用户信息采集进度
             FsStoreOrder order = storeOrderMapper.selectByPrescriptionId(prescribe.getPrescribeId());
@@ -1233,17 +1245,7 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
                 }
             }
         }
-        //同步用户信息采集进度
-        FsStoreOrder order = storeOrderMapper.selectByPrescriptionId(prescribe.getPrescribeId());
-        if (order != null){
-            FsUserInformationCollectionSchedule schedule = scheduleMapper.selectFsUserInformationCollectionByOrderCode(order.getOrderCode());
-            if (schedule != null){
-                //"待用户二次确认"节点
-                schedule.setCurrentStep(PrescriptionTaskStepEnum.WAITING_SECOND_CONFIRM.getCode());
-                scheduleMapper.updateFsUserInformationCollectionSchedule(schedule);
-                log.info("同步用户信息采集进度节点为:{},信息采集表id:{}",PrescriptionTaskStepEnum.WAITING_SECOND_CONFIRM.getDesc(),schedule.getCollectionId());
-            }
-        }
+
 
         delUrl(param.getPrescribeId());
         if (this.updateFsPrescribe(map) > 0){
@@ -1349,13 +1351,14 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
 
             }
         }
-
-        //TODO 医生确认后生成处方单
+        //医生确认后生成处方单
         PrescriptionTaskRecord record = new PrescriptionTaskRecord();
         record.setPrescribeId(param.getPrescribeId());
         record.setCreateTime(LocalDateTime.now());
         record.setExecuteStatus(0);
         record.setRetryCount(0);
+        //可生成医生签名图片标识
+        record.setSignFlag(1);
         prescriptionTaskRecordMapper.insert(record);
 
         //生成药师审核消息

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/impl/PrescriptionTaskRecordServiceImpl.java

@@ -47,7 +47,7 @@ public class PrescriptionTaskRecordServiceImpl implements PrescriptionTaskRecord
                     log.warn("处方不存在,处方ID: {}", record.getPrescribeId());
                     throw new IllegalArgumentException(String.format("处方 %d 没有找到!",record.getPrescribeId()));
                 }
-                String prescribeImgUrl = fsPrescribeService.PrescribeImgYsy(record.getPrescribeId());
+                String prescribeImgUrl = fsPrescribeService.PrescribeImgYsyTask(record.getPrescribeId(),record.getSignFlag());
                 fsPrescribe.setPrescribeImgUrl(prescribeImgUrl);
                 fsPrescribeService.updateFsPrescribe(fsPrescribe);