Bladeren bron

保存信息

zhoutg 5 jaren geleden
bovenliggende
commit
29b9b85e6d

+ 119 - 9
zzcx-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -23,6 +23,7 @@ import com.diagbot.util.HttpUtils;
 import com.diagbot.util.IdCard;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
+import com.diagbot.vo.CheckAndSyncVO;
 import com.diagbot.vo.GetInquiryIdVO;
 import com.diagbot.vo.GetInquiryVO;
 import com.diagbot.vo.HospitalVO;
@@ -30,6 +31,7 @@ import com.diagbot.vo.InquiryCodeVO;
 import com.diagbot.vo.InquiryDetailVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
+import com.diagbot.vo.SaveInquiry2VO;
 import com.diagbot.vo.SaveInquiryDetailVO;
 import com.diagbot.vo.SaveInquiryVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -158,14 +160,24 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
 
     public GetInquiryDTO getInquiry(GetInquiryVO getInquiryVO) {
         GetInquiryDTO getInquiryDTO = new GetInquiryDTO();
-
-        InquiryInfo inquiryInfo = this.getOne(new QueryWrapper<InquiryInfo>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("hospital_code", getInquiryVO.getHospitalCode())
-                .eq("inquiry_code", getInquiryVO.getInquiryCode())
-                .orderByDesc("gmt_modified"), false
-        );
-
+        InquiryInfo inquiryInfo = null;
+        if (StringUtil.isNotBlank(getInquiryVO.getInquiryCode())) {
+             inquiryInfo = this.getOne(new QueryWrapper<InquiryInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_code", getInquiryVO.getHospitalCode())
+                    .eq("inquiry_code", getInquiryVO.getInquiryCode())
+                    .orderByDesc("gmt_modified"), false
+            );
+        }
+        if (inquiryInfo == null) {
+             inquiryInfo = this.getOne(new QueryWrapper<InquiryInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_code", getInquiryVO.getHospitalCode())
+                    .eq("id_type", getInquiryVO.getIdType())
+                    .eq("id_num", getInquiryVO.getIdNum())
+                    .orderByDesc("gmt_modified"), false
+            );
+        }
         if (null != inquiryInfo) {
             BeanUtil.copyProperties(inquiryInfo, getInquiryDTO);
             List<InquiryDetail> list = inquiryDetailFacade.list(new QueryWrapper<InquiryDetail>()
@@ -188,7 +200,7 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
                 getInquiryDTO.setInquiryDetailDTOS(inquiryDetailDTOS);
             }
         } else {
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该医院下该就诊序列号无病历信息!");
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该医院下无病历信息!");
         }
         return getInquiryDTO;
     }
@@ -243,4 +255,102 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         );
     }
 
+
+    public Boolean checkAndSync(CheckAndSyncVO checkAndSyncVO) {
+        Date now = DateUtil.now();
+        String dateStr = DateUtil.formatDate(now);
+        List<InquiryInfo> inquiryInfoList = this.list(new QueryWrapper<InquiryInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_code", checkAndSyncVO.getHospitalCode())
+                .eq("id_type", checkAndSyncVO.getIdType())
+                .eq("id_num", checkAndSyncVO.getIdNum())
+                .eq("source", checkAndSyncVO.getSource())
+                .apply("date_format(gmt_create, '%Y-%m-%d')={0}", dateStr)
+        );
+        // 未填写
+        if (ListUtil.isEmpty(inquiryInfoList)) {
+            return false;
+        }
+//        // 已填写
+//        List<String> inquiryCode = inquiryInfoList.stream().map(r -> r.getInquiryCode()).collect(Collectors.toList());
+//        if (inquiryCode.contains(checkAndSyncVO.getInquiryCode())) {
+//            return true; // 当前病历已同步
+//        }
+//        // 添加主表
+//        InquiryInfo inquiryInfoSave = new InquiryInfo();
+//        BeanUtil.copyProperties(checkAndSyncVO, inquiryInfoSave);
+//        inquiryInfoSave.setIp(HttpUtils.getIpAddress());
+//        inquiryInfoSave.setGmtCreate(now);
+//        inquiryInfoSave.setGmtModified(now);
+//        this.save(inquiryInfoSave);
+//
+//        // 添加明细表
+//        List<InquiryDetail> inquiryDetailList = inquiryDetailFacade.list(new QueryWrapper<InquiryDetail>()
+//                .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .eq("inquiry_id", inquiryInfoList.get(0).getId())
+//        );
+//        // 添加明细表
+//        for (InquiryDetail inquiryDetail : inquiryDetailList) {
+//            inquiryDetail.setId(null);
+//            inquiryDetail.setInquiryId(inquiryInfoSave.getId());
+//            inquiryDetail.setGmtCreate(now);
+//            inquiryDetail.setGmtModified(now);
+//        }
+//        inquiryDetailService.saveBatch(inquiryDetailList);
+        return true;
+    }
+
+
+    public Long saveInquiry2(SaveInquiry2VO saveInquiry2VO) {
+        if (StringUtil.isBlank(saveInquiry2VO.getHospitalCode())) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "医院名称不能为空!");
+        }
+        Date now = DateUtil.now();
+        String dateStr = DateUtil.formatDate(now);
+        InquiryInfo inquiryInfo = this.getOne(new QueryWrapper<InquiryInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_code", saveInquiry2VO.getHospitalCode())
+                .eq("id_type", saveInquiry2VO.getIdType())
+                .eq("id_num", saveInquiry2VO.getIdNum())
+                .eq("source", saveInquiry2VO.getSource())
+                .apply("date_format(gmt_create, '%Y-%m-%d')={0}", dateStr)
+                .orderByDesc("gmt_modified"), false
+        );
+        // 已填写
+        if (inquiryInfo != null) {
+            return inquiryInfo.getId();
+        }
+        // 未填写,保存主表
+        InquiryInfo inquiryInfoSave = new InquiryInfo();
+        BeanUtil.copyProperties(saveInquiry2VO, inquiryInfoSave);
+        inquiryInfo.setGmtCreate(now);
+        inquiryInfo.setGmtModified(now);
+        inquiryInfo.setIp(HttpUtils.getIpAddress());
+        save(inquiryInfo);
+
+        // 保存明细表
+        Long id = inquiryInfoSave.getId();
+        List<InquiryDetail> inquiryDetailList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(saveInquiry2VO.getDetailList())) {
+            for (SaveInquiryDetailVO saveInquiryDetailVO : saveInquiry2VO.getDetailList()) {
+                InquiryDetail inquiryDetail = new InquiryDetail();
+                BeanUtil.copyProperties(saveInquiryDetailVO, inquiryDetail);
+                inquiryDetail.setInquiryId(id);
+                inquiryDetail.setGmtCreate(now);
+                inquiryDetail.setGmtModified(now);
+                if (ListUtil.isNotEmpty(saveInquiryDetailVO.getOptions())) {
+                    inquiryDetail.setRemark(GsonUtil.toJson(saveInquiryDetailVO.getOptions()));
+                }
+                inquiryDetailList.add(inquiryDetail);
+            }
+        }
+        inquiryDetailService.saveBatch(inquiryDetailList);
+
+        HospitalVO hospitalVO = new HospitalVO();
+        hospitalVO.setHospitalCode(saveInquiry2VO.getHospitalCode());
+        // 保存记录表
+        optInfoFacade.saveOptOnfo(hospitalVO, "2");
+        return id;
+    }
+
 }

+ 70 - 0
zzcx-service/src/main/java/com/diagbot/vo/CheckAndSyncVO.java

@@ -0,0 +1,70 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/11/19 18:58
+ */
+@ApiModel(value = "问诊记录校验传参")
+@Getter
+@Setter
+public class CheckAndSyncVO {
+
+    @ApiModelProperty(value = "医院名称")
+    private String hospitalCode;
+
+    @ApiModelProperty(value = "访问者的IP", hidden = true)
+    private String ip;
+
+    @ApiModelProperty(value = "证件类型(1:身份证,2:护照,3:病历号)")
+    private Integer idType;
+
+    @ApiModelProperty(value = "证件号")
+    private String idNum;
+
+    @ApiModelProperty(value = "厂商")
+    private String source;
+
+//    @ApiModelProperty(value = "诊断", required = true)
+//    private String diagnosis;
+
+//    @ApiModelProperty(value = "姓名")
+//    private String patName;
+//
+//    @ApiModelProperty(value = "年龄")
+//    private Integer patAge;
+//
+//    @ApiModelProperty(value = "性别")
+//    private Integer patSex;
+
+//    @ApiModelProperty(value = "就诊序列号")
+//    private String inquiryCode;
+
+//    @ApiModelProperty(value = "诊断程度(1:高,2:中,3:低)")
+//    private Integer degree;
+
+//    /**
+//     * 对接科室主键
+//     */
+//    private String deptCode;
+//
+//    /**
+//     * 对接科室名称
+//     */
+//    private String deptName;
+//
+//    /**
+//     * 对接医生主键
+//     */
+//    private String doctorCode;
+//
+//    /**
+//     * 对接医生姓名
+//     */
+//    private String doctorName;
+}

+ 11 - 1
zzcx-service/src/main/java/com/diagbot/vo/GetInquiryVO.java

@@ -23,6 +23,16 @@ public class GetInquiryVO {
     /**
      * 诊序列号
      */
-    @NotBlank(message = "请输入就诊序列号")
     private String inquiryCode;
+
+    /**
+     * "证件类型(1:身份证,2:护照,3:病历号)"
+     */
+    private Integer idType;
+
+    /**
+     * 证件号
+     */
+    private String idNum;
+
 }

+ 76 - 0
zzcx-service/src/main/java/com/diagbot/vo/SaveInquiry2VO.java

@@ -0,0 +1,76 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description: 有科室和医生信息
+ * @author: zhoutg
+ * @time: 2018/11/19 18:58
+ */
+@ApiModel(value = "问诊记录保存接口传参")
+@Getter
+@Setter
+public class SaveInquiry2VO {
+
+    @ApiModelProperty(value = "医院名称")
+    private String hospitalCode;
+
+    @ApiModelProperty(value = "访问者的IP", hidden = true)
+    private String ip;
+
+    @ApiModelProperty(value = "问诊明细")
+    private List<SaveInquiryDetailVO> detailList;
+
+    @ApiModelProperty(value = "证件类型(1:身份证,2:护照)")
+    private Integer idType;
+
+    @ApiModelProperty(value = "证件号")
+    private String idNum;
+
+    @ApiModelProperty(value = "就诊序列号")
+    private String inquiryCode;
+
+    @ApiModelProperty(value = "厂商")
+    private String source;
+
+    @ApiModelProperty(value = "姓名")
+    private String patName;
+
+    @ApiModelProperty(value = "年龄")
+    private Integer patAge;
+
+    @ApiModelProperty(value = "性别")
+    private Integer patSex;
+
+//    /**
+//     * 对接科室主键
+//     */
+//    private String deptCode;
+//
+//    /**
+//     * 对接科室名称
+//     */
+//    private String deptName;
+//
+//    /**
+//     * 对接医生主键
+//     */
+//    private String doctorCode;
+//
+//    /**
+//     * 对接医生姓名
+//     */
+//    private String doctorName;
+
+//    @ApiModelProperty(value = "诊断", required = true)
+//    private String diagnosis;
+
+//    @ApiModelProperty(value = "诊断程度(1:高,2:中,3:低)")
+//    private Integer degree;
+
+}

+ 28 - 1
zzcx-service/src/main/java/com/diagbot/web/InquiryInfoController.java

@@ -8,12 +8,14 @@ import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.facade.InquiryInfoFacade;
+import com.diagbot.vo.CheckAndSyncVO;
 import com.diagbot.vo.GetInquiryIdVO;
 import com.diagbot.vo.GetInquiryVO;
 import com.diagbot.vo.InquiryCodeVO;
 import com.diagbot.vo.InquiryDetailVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
+import com.diagbot.vo.SaveInquiry2VO;
 import com.diagbot.vo.SaveInquiryVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -89,6 +91,7 @@ public class InquiryInfoController {
         return RespDTO.onSuc(data);
     }
 
+
     @ApiOperation(value = "更新病历就诊号[by:gaodm]",
             notes = "hospitalCode:医院名称<br>" +
                     "inquiryId:病历ID<br>" +
@@ -99,7 +102,8 @@ public class InquiryInfoController {
         return RespDTO.onSuc(inquiryInfoFacade.upInquiryCode(inquiryCodeVO));
     }
 
-    @ApiOperation(value = "获取病历[by:gaodm]",
+
+    @ApiOperation(value = "获取病历【HIS】[by:gaodm]",
             notes = "hospitalCode:医院名称<br>" +
                     "inquiryCode:诊序列号<br>")
     @PostMapping("/getInquiry")
@@ -119,6 +123,7 @@ public class InquiryInfoController {
         return RespDTO.onSuc(inquiryInfoFacade.getInquiryIdByIdnum(getInquiryIdVO));
     }
 
+
     @ApiOperation(value = "获取IDO就诊信息[by:zhoutg]",
             notes = "hospitalCode:医院名称<br>" +
                     "source:厂商" +
@@ -129,4 +134,26 @@ public class InquiryInfoController {
     public RespDTO<InquiryInfoDTO> getInquiryInfoByIdnum(@RequestBody @Valid GetInquiryIdVO getInquiryIdVO) {
         return RespDTO.onSuc(inquiryInfoFacade.getInquiryInfoByIdnum(getInquiryIdVO));
     }
+
+
+    @ApiOperation(value = "校验【当天】该【病人】(不是病历)是否填写[by:zhoutg]",
+            notes = "返回false:表示当天该病人未填写" +
+                    "返回true:表示当天该病人已填写")
+    @PostMapping("/checkAndSync")
+    @SysLogger("checkAndSync")
+    @Transactional
+    public RespDTO<Boolean> checkAndSync(@RequestBody CheckAndSyncVO checkAndSyncVO) {
+        Boolean data = inquiryInfoFacade.checkAndSync(checkAndSyncVO);
+        return RespDTO.onSuc(data);
+    }
+
+
+    @ApiOperation(value = "问诊记录保存,保存【病人】[by:zhoutg]")
+    @PostMapping("/saveInquiry2")
+    @SysLogger("saveInquiry2")
+    @Transactional
+    public RespDTO<Long> saveInquiry2(@RequestBody SaveInquiry2VO saveInquiry2VO) {
+        Long inquiryId = inquiryInfoFacade.saveInquiry2(saveInquiry2VO);
+        return RespDTO.onSuc(inquiryId);
+    }
 }