瀏覽代碼

Merge branch 'dev/zzcx20200228_duijie' into develop_znwz_zzcx_xlcs

zhoutg 5 年之前
父節點
當前提交
355f172cbe

+ 11 - 0
docs/032.20200228自诊程序对接/init_zzcx.sql

@@ -0,0 +1,11 @@
+use `sys-zzcx`;
+
+ALTER TABLE `zzcx_inquiry_info` ADD `inquiry_code` varchar(50) NOT NULL DEFAULT '' COMMENT '就诊序列号' AFTER `id_num`;
+ALTER TABLE `zzcx_inquiry_info` ADD `dept_code` varchar(100) NOT NULL DEFAULT '' COMMENT '对接科室主键' AFTER `inquiry_code`;
+ALTER TABLE `zzcx_inquiry_info` ADD `dept_name` varchar(100) NOT NULL DEFAULT '' COMMENT '对接科室名称' AFTER `dept_id`;
+ALTER TABLE `zzcx_inquiry_info` ADD `doctor_code` varchar(100) NOT NULL DEFAULT '' COMMENT '对接医生主键' AFTER `dept_name`;
+ALTER TABLE `zzcx_inquiry_info` ADD `doctor_name` varchar(100) NOT NULL DEFAULT '' COMMENT '对接医生姓名' AFTER `doctor_id`;
+ALTER TABLE `zzcx_inquiry_info` ADD `source` varchar(100) NOT NULL DEFAULT '' COMMENT '厂商' AFTER `hospital_code`;
+
+
+ALTER TABLE `zzcx_inquiry_detail` MODIFY COLUMN `remark` varchar(3000) DEFAULT NULL COMMENT '备注';

+ 1 - 0
znwz-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -152,6 +152,7 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         if (saveInquiryVO.getDepartment().indexOf("全科") != -1) {
             body.put("diagnosis", saveInquiryVO.getDiagnosis());
         }
+        body.put("inquiryId", saveInquiryVO.getInquiryId());
         bodyList.add(body);
 
         //X-Service-Id对应的值

+ 2 - 0
znwz-service/src/main/java/com/diagbot/vo/SaveInquiryVO.java

@@ -102,5 +102,7 @@ public class SaveInquiryVO {
     @ApiModelProperty(value = "大数据推送结果")
     private List<String> pushList;
 
+    @ApiModelProperty(value = "自诊程序产生的ID")
+    private Long inquiryId;
 
 }

+ 64 - 0
zzcx-service/src/main/java/com/diagbot/dto/GetInquiryDTO.java

@@ -0,0 +1,64 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/28 15:46
+ */
+@Getter
+@Setter
+public class GetInquiryDTO {
+
+    /**
+     * 医院名称
+     */
+    private String hospitalCode;
+
+    /**
+     * 厂商
+     */
+    private String source;
+
+    /**
+     * 诊序列号
+     */
+    private String inquiryCode;
+
+    /**
+     * 姓名
+     */
+    private String patName;
+
+    /**
+     * 对接科室主键
+     */
+    private String deptCode;
+
+    /**
+     * 对接科室名称
+     */
+    private String deptName;
+
+    /**
+     * 对接医生主键
+     */
+    private String doctorCode;
+
+    /**
+     * 对接医生姓名
+     */
+    private String doctorName;
+
+    /**
+     * 诊断
+     */
+    private String diagnosis;
+
+
+    private List<GetInquiryDetailDTO> inquiryDetailDTOS;
+}

+ 33 - 0
zzcx-service/src/main/java/com/diagbot/dto/GetInquiryDetailDTO.java

@@ -0,0 +1,33 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.Option;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/28 15:46
+ */
+@Getter
+@Setter
+public class GetInquiryDetailDTO {
+
+    /**
+     * 问题
+     */
+    private String question;
+
+    /**
+     * 答案
+     */
+    private String answer;
+
+    /**
+     * 题目选项
+     */
+    private List<Option> options;
+
+}

+ 30 - 0
zzcx-service/src/main/java/com/diagbot/entity/InquiryInfo.java

@@ -66,6 +66,11 @@ public class InquiryInfo implements Serializable {
      */
     private String hospitalCode;
 
+    /**
+     * 厂商
+     */
+    private String source;
+
     /**
      * 访问者的IP
      */
@@ -96,6 +101,31 @@ public class InquiryInfo implements Serializable {
      */
     private String idNum;
 
+    /**
+     * 就诊序列号
+     */
+    private String inquiryCode;
+
+    /**
+     * 对接科室主键
+     */
+    private String deptCode;
+
+    /**
+     * 对接科室名称
+     */
+    private String deptName;
+
+    /**
+     * 对接医生主键
+     */
+    private String doctorCode;
+
+    /**
+     * 对接医生姓名
+     */
+    private String doctorName;
+
     /**
      * 诊断程度(1:高,2:中,3:低)
      */

+ 16 - 0
zzcx-service/src/main/java/com/diagbot/entity/Option.java

@@ -0,0 +1,16 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 题目选项
+ * @author: gaodm
+ * @time: 2020/2/28 15:57
+ */
+@Getter
+@Setter
+public class Option {
+    private Boolean select;
+    private String name;
+}

+ 80 - 10
zzcx-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -2,10 +2,13 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.GetInquiryDTO;
+import com.diagbot.dto.GetInquiryDetailDTO;
 import com.diagbot.dto.InquiryDTO;
 import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.entity.InquiryInfo;
+import com.diagbot.entity.Option;
 import com.diagbot.enums.IdTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
@@ -14,19 +17,24 @@ import com.diagbot.service.impl.InquiryDetailServiceImpl;
 import com.diagbot.service.impl.InquiryInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.GsonUtil;
 import com.diagbot.util.HttpUtils;
 import com.diagbot.util.IdCard;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
+import com.diagbot.vo.GetInquiryVO;
 import com.diagbot.vo.HospitalVO;
+import com.diagbot.vo.InquiryCodeVO;
 import com.diagbot.vo.InquiryDetailVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
+import com.diagbot.vo.SaveInquiryDetailVO;
 import com.diagbot.vo.SaveInquiryVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -48,7 +56,7 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
     @Qualifier("inquiryDetailServiceImpl")
     private InquiryDetailServiceImpl inquiryDetailService;
 
-    public void saveInquiry(SaveInquiryVO saveInquiryVO) {
+    public Long saveInquiry(SaveInquiryVO saveInquiryVO) {
         if (StringUtil.isBlank(saveInquiryVO.getHospitalCode())) {
             saveInquiryVO.setHospitalCode("朗通通用");
         }
@@ -96,24 +104,36 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
             );
             // 删除原明细
             inquiryDetailFacade.update(new UpdateWrapper<InquiryDetail>()
-                   .set("gmt_modified", now)
-                   .set("is_deleted", IsDeleteEnum.Y.getKey())
-                   .eq("inquiry_id", inquiryInfo.getId())
+                    .set("gmt_modified", now)
+                    .set("is_deleted", IsDeleteEnum.Y.getKey())
+                    .eq("inquiry_id", inquiryInfo.getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
             );
         }
         Long id = inquiryInfo.getId();
-        List<InquiryDetail> inquiryDetailList = BeanUtil.listCopyTo(saveInquiryVO.getDetailList(), InquiryDetail.class);
-        inquiryDetailList.forEach(i -> {
-            i.setInquiryId(id);
-            i.setGmtCreate(now);
-            i.setGmtModified(now);
-        });
+        List<InquiryDetail> inquiryDetailList = new ArrayList<>();
+        if (ListUtil.isNotEmpty(saveInquiryVO.getDetailList())) {
+            for (SaveInquiryDetailVO saveInquiryDetailVO : saveInquiryVO.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(saveInquiryVO.getHospitalCode());
         // 保存记录表
         optInfoFacade.saveOptOnfo(hospitalVO, "2");
+
+        return id;
+
     }
 
 
@@ -134,5 +154,55 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         return list;
     }
 
+    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()), false
+        );
+
+        if (null != inquiryInfo) {
+            BeanUtil.copyProperties(inquiryInfo, getInquiryDTO);
+            List<InquiryDetail> list = inquiryDetailFacade.list(new QueryWrapper<InquiryDetail>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("inquiry_id", inquiryInfo.getId())
+                    .orderByAsc("id")
+            );
+
+            List<GetInquiryDetailDTO> inquiryDetailDTOS = new ArrayList<>();
+            if (ListUtil.isNotEmpty(list)) {
+                for (InquiryDetail inquiryDetail : list) {
+                    GetInquiryDetailDTO getInquiryDetailDTO = new GetInquiryDetailDTO();
+                    BeanUtil.copyProperties(inquiryDetail, getInquiryDetailDTO);
+                    if (StringUtil.isNotBlank(inquiryDetail.getRemark())) {
+                        List<Option> options = GsonUtil.toList(inquiryDetail.getRemark(), Option.class);
+                        getInquiryDetailDTO.setOptions(options);
+                    }
+                    inquiryDetailDTOS.add(getInquiryDetailDTO);
+                }
+                getInquiryDTO.setInquiryDetailDTOS(inquiryDetailDTOS);
+            }
+        } else {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该医院下该就诊序列号无病历信息!");
+        }
+        return getInquiryDTO;
+    }
+
+    public Boolean upInquiryCode(InquiryCodeVO inquiryCodeVO) {
+        Date now = DateUtil.now();
+        return this.update(new UpdateWrapper<InquiryInfo>()
+                .set("gmt_modified", now)
+                .set("inquiry_code", inquiryCodeVO.getInquiryCode())
+                .set("source", inquiryCodeVO.getSource())
+                .set("dept_code", inquiryCodeVO.getDeptCode())
+                .set("dept_name", inquiryCodeVO.getDeptName())
+                .set("doctor_code", inquiryCodeVO.getDoctorCode())
+                .set("doctor_name", inquiryCodeVO.getDoctorName())
+                .eq("id", inquiryCodeVO.getInquiryId())
+                .eq("hospital_code", inquiryCodeVO.getHospitalCode())
+        );
+    }
 
 }

+ 28 - 0
zzcx-service/src/main/java/com/diagbot/vo/GetInquiryVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/28 15:46
+ */
+@Getter
+@Setter
+public class GetInquiryVO {
+
+    /**
+     * 医院名称
+     */
+    @NotBlank(message = "请输入医院名称")
+    private String hospitalCode;
+
+    /**
+     * 诊序列号
+     */
+    @NotBlank(message = "请输入就诊序列号")
+    private String inquiryCode;
+}

+ 65 - 0
zzcx-service/src/main/java/com/diagbot/vo/InquiryCodeVO.java

@@ -0,0 +1,65 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/2/28 15:46
+ */
+@Getter
+@Setter
+public class InquiryCodeVO {
+
+    /**
+     * 病历ID
+     */
+    @NotNull(message = "请输入病历ID")
+    private Long inquiryId;
+
+    /**
+     * 医院名称
+     */
+    @NotBlank(message = "请输入医院名称")
+    private String hospitalCode;
+
+    /**
+     * 厂商
+     */
+    @NotBlank(message = "厂商")
+    private String source;
+
+    /**
+     * 诊序列号
+     */
+    @NotBlank(message = "请输入就诊序列号")
+    private String inquiryCode;
+
+    /**
+     * 对接科室主键
+     */
+    @NotBlank(message = "对接科室主键")
+    private String deptCode;
+
+    /**
+     * 对接科室名称
+     */
+    @NotBlank(message = "对接科室名称")
+    private String deptName;
+
+    /**
+     * 对接医生主键
+     */
+    @NotBlank(message = "对接医生主键")
+    private String doctorCode;
+
+    /**
+     * 对接医生姓名
+     */
+    @NotBlank(message = "对接医生姓名")
+    private String doctorName;
+}

+ 8 - 0
zzcx-service/src/main/java/com/diagbot/vo/SaveInquiryDetailVO.java

@@ -1,8 +1,11 @@
 package com.diagbot.vo;
 
+import com.diagbot.entity.Option;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author rengb
  * @Description
@@ -22,5 +25,10 @@ public class SaveInquiryDetailVO {
      */
     private String answer;
 
+    /**
+     * 题目选项
+     */
+    private List<Option> options;
+
 
 }

+ 26 - 6
zzcx-service/src/main/java/com/diagbot/web/InquiryInfoController.java

@@ -1,27 +1,28 @@
 package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetInquiryDTO;
 import com.diagbot.dto.InquiryDTO;
 import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.SaveInquiryDTO;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.facade.InquiryInfoFacade;
+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.SaveInquiryVO;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -41,9 +42,9 @@ public class InquiryInfoController {
     @PostMapping("/saveInquiry")
     @SysLogger("saveInquiry")
     @Transactional
-    public RespDTO<Boolean> saveInquiry(@RequestBody SaveInquiryVO saveInquiryVO) {
-        inquiryInfoFacade.saveInquiry(saveInquiryVO);
-        return RespDTO.onSuc(true);
+    public RespDTO<Long> saveInquiry(@RequestBody SaveInquiryVO saveInquiryVO) {
+        Long inquiryId = inquiryInfoFacade.saveInquiry(saveInquiryVO);
+        return RespDTO.onSuc(inquiryId);
     }
 
 
@@ -84,4 +85,23 @@ public class InquiryInfoController {
         List<InquiryDetail> data = inquiryInfoFacade.getDetail(inquiryDetailVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "更新病历就诊号[by:gaodm]",
+            notes = "hospitalCode:医院名称<br>" +
+                    "inquiryId:病历ID<br>" +
+                    "inquiryCode:诊序列号<br>")
+    @PostMapping("/upInquiryCode")
+    @SysLogger("upInquiryCode")
+    public RespDTO<Boolean> upInquiryCode(@RequestBody @Validated InquiryCodeVO inquiryCodeVO) {
+        return RespDTO.onSuc(inquiryInfoFacade.upInquiryCode(inquiryCodeVO));
+    }
+
+    @ApiOperation(value = "获取病历[by:gaodm]",
+            notes = "hospitalCode:医院名称<br>" +
+                    "inquiryCode:诊序列号<br>")
+    @PostMapping("/getInquiry")
+    @SysLogger("getInquiry")
+    public RespDTO<GetInquiryDTO> getInquiry(@RequestBody @Validated GetInquiryVO getInquiryVO) {
+        return RespDTO.onSuc(inquiryInfoFacade.getInquiry(getInquiryVO));
+    }
 }