Browse Source

自诊程序新需求接口开发

zhoutg 5 years ago
parent
commit
6daaae8927

+ 10 - 0
common/src/main/java/com/diagbot/util/IdCard.java

@@ -33,6 +33,16 @@ public class IdCard {
         return iAge;
     }
 
+    /**
+     * 根据身份编号获取年龄加1
+     *
+     * @param idCard 身份编号
+     * @return 年龄
+     */
+    public static int getAgeByIdCardAddOne(String idCard) {
+        return getAgeByIdCard(idCard) + 1;
+    }
+
     /**
      * 根据身份编号获取生日
      *

+ 20 - 0
docs/031.20200229自诊程序配置/zzcx20200220.sql

@@ -0,0 +1,20 @@
+ALTER TABLE `zzcx_inquiry_info`
+ADD COLUMN `pat_name` varchar(50) NOT NULL DEFAULT '' COMMENT '姓名' after `ip`;
+
+ALTER TABLE `zzcx_inquiry_info`
+ADD COLUMN `pat_age` int(8) NOT NULL DEFAULT '0' COMMENT '年龄' after `pat_name`;
+
+ALTER TABLE `zzcx_inquiry_info`
+ADD COLUMN `pat_sex` tinyint(4)  NOT NULL DEFAULT '0' COMMENT '性别' after `pat_age`;
+
+ALTER TABLE `zzcx_inquiry_info`
+ADD COLUMN `id_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '证件类型(1:身份证,2:护照)' after `pat_sex`;
+
+ALTER TABLE `zzcx_inquiry_info`
+ADD COLUMN `id_num` varchar(100) NOT NULL DEFAULT '' COMMENT '证件号' after `id_type`;
+
+ALTER TABLE `zzcx_inquiry_info`
+ADD COLUMN `degree` tinyint(4) NOT NULL DEFAULT '0' COMMENT '诊断程度(1:高,2:中,3:低)' after `id_num`;
+
+
+

+ 80 - 0
zzcx-service/src/main/java/com/diagbot/dto/InquiryDTO.java

@@ -0,0 +1,80 @@
+package com.diagbot.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class InquiryDTO {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 诊断
+     */
+    private String diagnosis;
+
+    /**
+     * 医院名称
+     */
+    private String hospitalCode;
+
+    /**
+     * 访问者的IP
+     */
+    private String ip;
+
+    /**
+     * 姓名
+     */
+    private String patName;
+
+    /**
+     * 年龄
+     */
+    private Integer patAge;
+
+    /**
+     * 性别
+     */
+    private Integer patSex;
+
+    /**
+     * 证件类型(1:身份证,2:护照)
+     */
+    private Integer idType;
+
+    /**
+     * 证件号
+     */
+    private String idNum;
+
+    /**
+     * 诊断程度(1:高,2:中,3:低)
+     */
+    private Integer degree;
+}

+ 43 - 0
zzcx-service/src/main/java/com/diagbot/dto/InquiryPatDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class InquiryPatDTO {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 姓名
+     */
+    private String patName;
+
+    /**
+     * 年龄
+     */
+    private Integer patAge;
+
+    /**
+     * 性别
+     */
+    private Integer patSex;
+
+    /**
+     * 证件类型(1:身份证,2:护照)
+     */
+    private Integer idType;
+
+    /**
+     * 证件号
+     */
+    private String idNum;
+}

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

@@ -3,6 +3,7 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -70,6 +71,36 @@ public class InquiryInfo implements Serializable {
      */
     private String ip;
 
+    /**
+     * 姓名
+     */
+    private String patName;
+
+    /**
+     * 年龄
+     */
+    private Integer patAge;
+
+    /**
+     * 性别
+     */
+    private Integer patSex;
+
+    /**
+     * 证件类型(1:身份证,2:护照)
+     */
+    private Integer idType;
+
+    /**
+     * 证件号
+     */
+    private String idNum;
+
+    /**
+     * 诊断程度(1:高,2:中,3:低)
+     */
+    private Integer degree;
+
     /**
      * 备注
      */

+ 50 - 0
zzcx-service/src/main/java/com/diagbot/enums/IdTypeEnum.java

@@ -0,0 +1,50 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author zhoutg
+ * @Description: 证件类型
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum IdTypeEnum implements KeyedNamed {
+    IdentityCard (1, "身份证"),
+    Passport(2, "护照");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    IdTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static IdTypeEnum getEnum(int key) {
+        for (IdTypeEnum item : IdTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        IdTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 69 - 8
zzcx-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -1,14 +1,26 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.InquiryDTO;
+import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.entity.InquiryInfo;
+import com.diagbot.enums.IdTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 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.HttpUtils;
+import com.diagbot.util.IdCard;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.HospitalVO;
+import com.diagbot.vo.InquiryPatInquiryVO;
+import com.diagbot.vo.InquiryPatVO;
 import com.diagbot.vo.SaveInquiryVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -28,6 +40,8 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
 
     @Autowired
     OptInfoFacade optInfoFacade;
+    @Autowired
+    InquiryDetailFacade inquiryDetailFacade;
 
     @Autowired
     @Qualifier("inquiryDetailServiceImpl")
@@ -38,17 +52,54 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
             saveInquiryVO.setHospitalCode("朗通通用");
         }
         Date now = DateUtil.now();
+        // 如果是身份证,获取性别和年龄
+        if (IdTypeEnum.IdentityCard.getKey() == saveInquiryVO.getIdType()) {
+            String idNum = saveInquiryVO.getIdNum();
+            if (StringUtil.isNotBlank(idNum)) {
+                saveInquiryVO.setPatAge(IdCard.getAgeByIdCardAddOne(idNum));
+                saveInquiryVO.setPatSex(IdCard.getGenderByIdCard(idNum));
+            }
+        }
 
-        InquiryInfo inquiryInfo = new InquiryInfo();
-        BeanUtil.copyProperties(saveInquiryVO, inquiryInfo);
-        inquiryInfo.setGmtCreate(now);
-        inquiryInfo.setGmtModified(now);
-        inquiryInfo.setIp(HttpUtils.getIpAddress());
-        save(inquiryInfo);
-
+        String dateStr = DateUtil.formatDate(now);
+        InquiryInfo inquiryInfo = this.getOne(new QueryWrapper<InquiryInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_code", saveInquiryVO.getHospitalCode())
+                .eq("pat_name", saveInquiryVO.getPatName())
+                .eq("id_type", saveInquiryVO.getIdType())
+                .eq("id_num", saveInquiryVO.getIdNum())
+                .apply("date_format(gmt_modified, '%Y-%m-%d')={0}", dateStr), false
+        );
+        if (inquiryInfo == null) {
+            inquiryInfo = new InquiryInfo();
+            BeanUtil.copyProperties(saveInquiryVO, inquiryInfo);
+            inquiryInfo.setGmtCreate(now);
+            inquiryInfo.setGmtModified(now);
+            inquiryInfo.setIp(HttpUtils.getIpAddress());
+            save(inquiryInfo);
+        } else {
+            inquiryInfo.setGmtModified(now);
+            inquiryInfo.setIp(HttpUtils.getIpAddress());
+            inquiryInfo.setDiagnosis(saveInquiryVO.getDiagnosis());
+            inquiryInfo.setDegree(saveInquiryVO.getDegree());
+            this.update(new UpdateWrapper<InquiryInfo>()
+                    .set("ip", HttpUtils.getIpAddress())
+                    .set("gmt_modified", now)
+                    .set("diagnosis", saveInquiryVO.getDiagnosis())
+                    .set("degree", saveInquiryVO.getDegree())
+                    .eq("id", inquiryInfo.getId())
+            );
+            // 删除原明细
+            inquiryDetailFacade.update(new UpdateWrapper<InquiryDetail>()
+                   .set("gmt_modified", now)
+                   .set("is_deleted", IsDeleteEnum.Y.getKey())
+                   .eq("inquiry_id", inquiryInfo.getId())
+            );
+        }
+        Long id = inquiryInfo.getId();
         List<InquiryDetail> inquiryDetailList = BeanUtil.listCopyTo(saveInquiryVO.getDetailList(), InquiryDetail.class);
         inquiryDetailList.forEach(i -> {
-            i.setInquiryId(inquiryInfo.getId());
+            i.setInquiryId(id);
             i.setGmtCreate(now);
             i.setGmtModified(now);
         });
@@ -60,4 +111,14 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         optInfoFacade.saveOptOnfo(hospitalVO, "2");
     }
 
+
+    public List<InquiryPatDTO> getPatListFac(InquiryPatVO inquiryPatVO) {
+        return this.getPatList(inquiryPatVO);
+    }
+
+    public List<InquiryDTO> getPatInquiryFac(InquiryPatInquiryVO inquiryPatInquiryVO) {
+        return this.getPatInquiryList(inquiryPatInquiryVO);
+    }
+
+
 }

+ 10 - 0
zzcx-service/src/main/java/com/diagbot/mapper/InquiryInfoMapper.java

@@ -1,7 +1,13 @@
 package com.diagbot.mapper;
 
+import com.diagbot.dto.InquiryDTO;
+import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.InquiryPatInquiryVO;
+import com.diagbot.vo.InquiryPatVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface InquiryInfoMapper extends BaseMapper<InquiryInfo> {
 
+    public List<InquiryPatDTO> getPatList(InquiryPatVO inquiryPatVO);
+
+    public List<InquiryDTO> getPatInquiryList(InquiryPatInquiryVO inquiryPatInquiryVO);
+
 }

+ 9 - 0
zzcx-service/src/main/java/com/diagbot/service/InquiryInfoService.java

@@ -1,7 +1,13 @@
 package com.diagbot.service;
 
+import com.diagbot.dto.InquiryDTO;
+import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.InquiryPatInquiryVO;
+import com.diagbot.vo.InquiryPatVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface InquiryInfoService extends IService<InquiryInfo> {
 
+    public List<InquiryPatDTO> getPatList(InquiryPatVO inquiryPatVO);
+
+    public List<InquiryDTO> getPatInquiryList(InquiryPatInquiryVO inquiryPatInquiryVO);
 }

+ 16 - 0
zzcx-service/src/main/java/com/diagbot/service/impl/InquiryInfoServiceImpl.java

@@ -1,11 +1,17 @@
 package com.diagbot.service.impl;
 
+import com.diagbot.dto.InquiryDTO;
+import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryInfo;
 import com.diagbot.mapper.InquiryInfoMapper;
 import com.diagbot.service.InquiryInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.InquiryPatInquiryVO;
+import com.diagbot.vo.InquiryPatVO;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 问诊记录-主表 服务实现类
@@ -17,4 +23,14 @@ import org.springframework.stereotype.Service;
 @Service
 public class InquiryInfoServiceImpl extends ServiceImpl<InquiryInfoMapper, InquiryInfo> implements InquiryInfoService {
 
+    @Override
+    public List<InquiryPatDTO> getPatList(InquiryPatVO inquiryPatVO) {
+        return baseMapper.getPatList(inquiryPatVO);
+    }
+
+    @Override
+    public List<InquiryDTO> getPatInquiryList(InquiryPatInquiryVO inquiryPatInquiryVO) {
+        return baseMapper.getPatInquiryList(inquiryPatInquiryVO);
+    }
+
 }

+ 41 - 0
zzcx-service/src/main/java/com/diagbot/vo/InquiryPatInquiryVO.java

@@ -0,0 +1,41 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class InquiryPatInquiryVO {
+    private static final long serialVersionUID = 1L;
+
+    private String hospitalCode;
+    /**
+     * 姓名
+     */
+    private String patName;
+
+    /**
+     * 性别
+     */
+    private Integer patSex;
+
+    /**
+     * 证件类型(1:身份证,2:护照)
+     */
+    private Integer idType;
+
+    /**
+     * 证件号
+     */
+    private String idNum;
+
+}

+ 41 - 0
zzcx-service/src/main/java/com/diagbot/vo/InquiryPatVO.java

@@ -0,0 +1,41 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class InquiryPatVO {
+    private static final long serialVersionUID = 1L;
+
+    private String hospitalCode;
+    /**
+     * 姓名
+     */
+    private String patName;
+
+    /**
+     * 性别
+     */
+    private Integer patSex;
+
+    /**
+     * 证件类型(1:身份证,2:护照)
+     */
+    private Integer idType;
+
+    /**
+     * 证件号
+     */
+    private String idNum;
+
+    /**
+     * 诊断程度(1:高,2:中,3:低)
+     */
+    private Integer degree;
+}

+ 18 - 12
zzcx-service/src/main/java/com/diagbot/vo/SaveInquiryVO.java

@@ -18,28 +18,34 @@ import java.util.List;
 @Setter
 public class SaveInquiryVO {
 
-    //医院名称
-//    @NotBlank(message = "请输入医院信息")
+    @ApiModelProperty(value = "医院名称")
     private String hospitalCode;
 
-    /**
-     * 访问者的IP
-     */
     @ApiModelProperty(value = "访问者的IP", hidden = true)
     private String ip;
 
-    /**
-     * 诊断
-     */
     @ApiModelProperty(value = "诊断", required = true)
     private String diagnosis;
 
-
-    /**
-     * 问诊明细
-     */
     @Valid
     @ApiModelProperty(value = "问诊明细", required = true)
     private List<SaveInquiryDetailVO> detailList;
 
+    @ApiModelProperty(value = "姓名")
+    private String patName;
+
+    @ApiModelProperty(value = "年龄")
+    private Integer patAge;
+
+    @ApiModelProperty(value = "性别")
+    private Integer patSex;
+
+    @ApiModelProperty(value = "证件类型(1:身份证,2:护照)")
+    private Integer idType;
+
+    @ApiModelProperty(value = "证件号")
+    private String idNum;
+
+    @ApiModelProperty(value = "诊断程度(1:高,2:中,3:低)")
+    private Integer degree;
 }

+ 33 - 0
zzcx-service/src/main/java/com/diagbot/web/InquiryInfoController.java

@@ -1,11 +1,16 @@
 package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.InquiryDTO;
+import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SaveInquiryDTO;
 import com.diagbot.facade.InquiryInfoFacade;
+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;
@@ -15,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @author zhoutg
@@ -39,4 +45,31 @@ public class InquiryInfoController {
     }
 
 
+    @ApiOperation(value = "获取机构下病人列表[by:zhoutg]",
+            notes = "hospitalCode:医院名称<br>" +
+                    "patName:姓名<br>" +
+                    "patSex:性别<br>" +
+                    "idType:证件类型(1:身份证,2:护照)<br>" +
+                    "idNum:证件号<br>" +
+                    "degree:诊断程度(1:高,2:中,3:低)<br>")
+    @PostMapping("/getPatList")
+    @SysLogger("getPatList")
+    public RespDTO<List<InquiryPatDTO>> getPatList(@RequestBody InquiryPatVO inquiryPatVO) {
+        List<InquiryPatDTO> data = inquiryInfoFacade.getPatListFac(inquiryPatVO);
+        return RespDTO.onSuc(data);
+    }
+
+
+    @ApiOperation(value = "获取机构下病人病历[by:zhoutg]",
+            notes = "hospitalCode:医院名称<br>" +
+            "patName:姓名<br>" +
+            "patSex:性别<br>" +
+            "idNum:证件号<br>" +
+            "idType:证件类型(1:身份证,2:护照)<br>")
+    @PostMapping("/getPatInquiry")
+    @SysLogger("getPatInquiry")
+    public RespDTO<List<InquiryDTO>> getPatInquiry(@RequestBody InquiryPatInquiryVO inquiryPatInquiryVO) {
+        List<InquiryDTO> data = inquiryInfoFacade.getPatInquiryFac(inquiryPatInquiryVO);
+        return RespDTO.onSuc(data);
+    }
 }

+ 45 - 0
zzcx-service/src/main/resources/mapper/InquiryInfoMapper.xml

@@ -16,4 +16,49 @@
         <result column="remark" property="remark" />
     </resultMap>
 
+    <select id="getPatList" resultType="com.diagbot.dto.InquiryPatDTO">
+        select distinct pat_name, id_type, id_num, pat_sex, pat_age from zzcx_inquiry_info
+        where is_deleted = 'N' and pat_name != ''
+        <if test="hospitalCode != null and hospitalCode != '' ">
+            and hospital_code = #{hospitalCode}
+        </if>
+        <if test="patName != null and patName != '' ">
+            and pat_name like concat('%', #{patName}, '%')
+        </if>
+        <if test="patSex != null and patSex != '' ">
+            and pat_sex = #{patSex}
+        </if>
+        <if test="idType != null and idType != '' ">
+            and id_type = #{idType}
+        </if>
+        <if test="idNum != null and idNum != '' ">
+            and id_num like concat('%', #{idNum}, '%')
+        </if>
+        <if test="degree != null and degree != '' ">
+            and degree = #{degree}
+        </if>
+        order by pat_name
+    </select>
+
+
+    <select id="getPatInquiryList" resultType="com.diagbot.dto.InquiryDTO">
+        select * from zzcx_inquiry_info where is_deleted = 'N'
+        <if test="hospitalCode != null and hospitalCode != '' ">
+            and hospital_code = #{hospitalCode}
+        </if>
+        <if test="patName != null and patName != '' ">
+            and pat_name like concat('%', #{patName}, '%')
+        </if>
+        <if test="patSex != null and patSex != '' ">
+            and pat_sex = #{patSex}
+        </if>
+        <if test="idType != null and idType != '' ">
+            and id_type = #{idType}
+        </if>
+        <if test="idNum != null and idNum != '' ">
+            and id_num like concat('%', #{idNum}, '%')
+        </if>
+        order by gmt_modified desc
+    </select>
+
 </mapper>