Ver código fonte

预问诊接口

zhoutg 3 anos atrás
pai
commit
335a3ef7e2

+ 20 - 0
docs/043.20211220邵逸夫预问诊定制版/prec_init.sql

@@ -0,0 +1,20 @@
+USE `sys-prec`;
+
+DROP TABLE IF EXISTS `prec_scale`;
+CREATE TABLE `prec_scale` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `inquiry_id` bigint(20) NOT NULL COMMENT '问诊记录id',
+  `scale_name` varchar(255) NOT NULL DEFAULT '' COMMENT '量表名称',
+  `score` varchar(255) NOT NULL DEFAULT '' COMMENT '得分',
+  `result` varchar(255) NOT NULL DEFAULT '' COMMENT '结果',
+  `data_json` text COMMENT 'json数据',
+  `remark` varchar(300) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`),
+  KEY `inquiry_id` (`inquiry_id`) USING BTREE,
+  KEY `scale_name` (`scale_name`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='量表';

+ 249 - 0
prec-service/src/main/java/com/diagbot/dto/GetInquiryDetailSyfDTO.java

@@ -0,0 +1,249 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2018/11/19 18:56
+ */
+@ApiModel(value="病历详情接口出参")
+@Getter
+@Setter
+public class GetInquiryDetailSyfDTO {
+	
+	/**
+	 * 病历id
+	 */
+	@ApiModelProperty(value="病历id")
+	private Long id;
+	
+	/**
+	 * 就诊日期
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+	@ApiModelProperty(value="就诊日期")
+	private Date inquiryDate;
+	
+	/**
+	 * 就诊时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+	@ApiModelProperty(value="就诊时间")
+	private Date inquiryTime;
+
+    /**
+     * 病历创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value="病历创建时间")
+    private Date gmtCreate;
+
+    /**
+     * 病历更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value="病历更新时间")
+    private Date gmtModified;
+	
+	/**
+     * 医院id
+     */
+	@ApiModelProperty(value="医院id")
+    private Long hospitalId;
+
+    /**
+     * 医院编码
+     */
+    @ApiModelProperty(value="医院编码")
+    private String hospitalCode;
+
+    /**
+     * 医院名称
+     */
+    @ApiModelProperty(value="医院名称")
+    private String hospitalName;
+
+    /**
+     * 子医院id
+     */
+    @ApiModelProperty(value="子医院id")
+    private Long sonHospitalId;
+
+    /**
+     * 子医院code
+     */
+    @ApiModelProperty(value="子医院code")
+    private String sonHospitalCode;
+
+    /**
+     * 子医院名称
+     */
+    @ApiModelProperty(value="子医院名称")
+    private String sonHospitalName;
+
+    /**
+     * 医院科室id
+     */
+    @ApiModelProperty(value="医院科室id")
+    private Long hospitalDeptId;
+
+    /**
+     * 医院科室编码
+     */
+    @ApiModelProperty(value="医院科室编码")
+    private String hospitalDeptCode;
+
+    /**
+     * 医院科室名称
+     */
+    @ApiModelProperty(value="医院科室名称")
+    private String hospitalDeptName;
+
+    /**
+     * 医生id
+     */
+    @ApiModelProperty(value="医生id")
+    private Long doctorId;
+
+    /**
+     * 医生编码
+     */
+    @ApiModelProperty(value="医生编码")
+    private String doctorCode;
+
+    /**
+     * 医生姓名
+     */
+    @ApiModelProperty(value="医生姓名")
+    private String doctorName;
+
+    /**
+     * 患者id
+     */
+    @ApiModelProperty(value="患者id")
+    private Long patientId;
+
+    /**
+     * 患者编号
+     */
+    @ApiModelProperty(value="患者编号")
+    private String patientCode;
+
+    /**
+     * 患者姓名
+     */
+    @ApiModelProperty(value="患者姓名")
+    private String patientName;
+
+    /**
+     * 患者性别:1男2女
+     */
+    @ApiModelProperty(value="患者性别:1男2女")
+    private Integer patientSex;
+    
+    /**
+     * 患者性别信息
+     */
+    @ApiModelProperty(value="患者性别信息")
+    private String patientSexMsg;
+
+    /**
+     * 患者联系电话
+     */
+    @ApiModelProperty(value="患者联系电话")
+    private String patientPhone;
+
+    /**
+     * 患者出生日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value="患者出生日期")
+    private Date patientBirthday;
+    
+    /**
+     * 患者年龄
+     */
+	@ApiModelProperty(value="患者年龄")
+    private Integer patientAge;
+
+    /**
+     * 患者病历号
+     */
+    @ApiModelProperty(value="患者病历号")
+    private String patientIdNo;
+
+    /**
+     * 就诊序列号
+     */
+    @ApiModelProperty(value="就诊序列号")
+    private String inquiryCode;
+
+    /**
+     * 就诊状态(0待接诊,1接诊中,2完成接诊)
+     */
+    @ApiModelProperty(value="就诊状态(0待接诊,1接诊中,2完成接诊)")
+    private Integer regVisitedState;
+
+    /**
+     * 分类(1:门诊,2:住院)
+     */
+    @ApiModelProperty(value="分类(1:门诊,2:住院)")
+    private Integer type;
+
+    /**
+     * 内容JSON字符串
+     */
+    @ApiModelProperty(value="内容JSON字符串")
+    private String dataJson;
+    
+    /**
+     * 主诉
+     */
+    @ApiModelProperty(value="主诉")
+    private String chiefComplaint;
+    
+    /**
+     * 现病史
+     */
+    @ApiModelProperty(value="现病史")
+    private String xbs;
+    
+    /**
+     * 其他史
+     */
+    @ApiModelProperty(value="其他史")
+    private String qts;
+    
+    /**
+     * 补充内容
+     */
+    @ApiModelProperty(value="补充内容")
+    private String supplement;
+	
+    /**
+     * 儿童体质辨识测试
+     */
+    @ApiModelProperty(value="儿童体质辨识测试")
+    private String physicalRes;
+	
+    /**
+     * 最近一次报告图
+     */
+    @ApiModelProperty(value="最近一次报告图")
+	private List<GetInquiryDetailImgDTO> imageList;
+
+    /**
+     * 量表结果
+     */
+    @ApiModelProperty(value = "量表结果")
+    private List<ScaleDTO> scaleList;
+	
+}

+ 208 - 0
prec-service/src/main/java/com/diagbot/dto/HisInquirySyfDTO.java

@@ -0,0 +1,208 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/11/19 18:56
+ */
+@ApiModel(value="历史病历列表接口出参")
+@Getter
+@Setter
+public class HisInquirySyfDTO {
+	
+	/**
+	 * 病历id
+	 */
+	@ApiModelProperty(value="病历id")
+	private Long id;
+	
+	/**
+	 * 创建时间
+	 */
+	private Date gmtCreate;
+
+	/**
+	 * 修改时间
+	 */
+	private Date gmtModified;
+	
+	/**
+	 * 就诊日期
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+	@ApiModelProperty(value="就诊日期")
+	private Date inquiryDate;
+	
+	/**
+	 * 就诊时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+	@ApiModelProperty(value="就诊时间")
+	private Date inquiryTime;
+	
+	/**
+     * 医院id
+     */
+	@ApiModelProperty(value="医院id")
+    private Long hospitalId;
+
+    /**
+     * 医院编码
+     */
+    @ApiModelProperty(value="医院编码")
+    private String hospitalCode;
+
+    /**
+     * 医院名称
+     */
+    @ApiModelProperty(value="医院名称")
+    private String hospitalName;
+
+    /**
+     * 子医院id
+     */
+    @ApiModelProperty(value="子医院id")
+    private Long sonHospitalId;
+
+    /**
+     * 子医院code
+     */
+    @ApiModelProperty(value="子医院code")
+    private String sonHospitalCode;
+
+    /**
+     * 子医院名称
+     */
+    @ApiModelProperty(value="子医院名称")
+    private String sonHospitalName;
+
+    /**
+     * 医院科室id
+     */
+    @ApiModelProperty(value="医院科室id")
+    private Long hospitalDeptId;
+
+    /**
+     * 医院科室编码
+     */
+    @ApiModelProperty(value="医院科室编码")
+    private String hospitalDeptCode;
+
+    /**
+     * 医院科室名称
+     */
+    @ApiModelProperty(value="医院科室名称")
+    private String hospitalDeptName;
+
+    /**
+     * 医生id
+     */
+    @ApiModelProperty(value="医生id")
+    private Long doctorId;
+
+    /**
+     * 医生编码
+     */
+    @ApiModelProperty(value="医生编码")
+    private String doctorCode;
+
+    /**
+     * 医生姓名
+     */
+    @ApiModelProperty(value="医生姓名")
+    private String doctorName;
+
+    /**
+     * 患者id
+     */
+    @ApiModelProperty(value="患者id")
+    private Long patientId;
+
+    /**
+     * 患者编号
+     */
+    @ApiModelProperty(value="患者编号")
+    private String patientCode;
+
+    /**
+     * 患者姓名
+     */
+    @ApiModelProperty(value="患者姓名")
+    private String patientName;
+
+    /**
+     * 患者性别:1男2女
+     */
+    @ApiModelProperty(value="患者性别:1男2女")
+    private Integer patientSex;
+    
+    /**
+     * 患者性别信息
+     */
+    @ApiModelProperty(value="患者性别信息")
+    private String patientSexMsg;
+
+    /**
+     * 患者联系电话
+     */
+    @ApiModelProperty(value="患者联系电话")
+    private String patientPhone;
+
+    /**
+     * 患者出生日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value="患者出生日期")
+    private Date patientBirthday;
+    
+    /**
+     * 患者年龄
+     */
+	@ApiModelProperty(value="患者年龄")
+    private Integer patientAge;
+
+    /**
+     * 患者病历号
+     */
+    @ApiModelProperty(value="患者病历号")
+    private String patientIdNo;
+
+    /**
+     * 就诊序列号
+     */
+    @ApiModelProperty(value="就诊序列号")
+    private String inquiryCode;
+
+    /**
+     * 就诊状态(0待接诊,1接诊中,2完成接诊)
+     */
+    @ApiModelProperty(value="就诊状态(0待接诊,1接诊中,2完成接诊)")
+    private Integer regVisitedState;
+
+    /**
+     * 分类(1:门诊,2:住院)
+     */
+    @ApiModelProperty(value="分类(1:门诊,2:住院)")
+    private Integer type;
+
+    /**
+     * 内容JSON字符串
+     */
+    @ApiModelProperty(value="内容JSON字符串")
+    private String dataJson;
+
+    /**
+     * 详情
+     */
+    @ApiModelProperty(value="详情")
+	private InquiryDetailFlatSyfDTO detail;
+
+}

+ 60 - 0
prec-service/src/main/java/com/diagbot/dto/InquiryDetailFlatSyfDTO.java

@@ -0,0 +1,60 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2019/12/3 13:44
+ */
+@Getter
+@Setter
+public class InquiryDetailFlatSyfDTO {
+
+    /**
+     * 主诉
+     */
+    @ApiModelProperty(value = "主诉")
+    private String chiefComplaint;
+
+    /**
+     * 现病史
+     */
+    @ApiModelProperty(value = "现病史")
+    private String xbs;
+
+    /**
+     * 其他史
+     */
+    @ApiModelProperty(value = "其他史")
+    private String qts;
+
+    /**
+     * 补充内容
+     */
+    @ApiModelProperty(value = "补充内容")
+    private String supplement;
+
+    /**
+     * 儿童体质辨识测试
+     */
+    @ApiModelProperty(value = "儿童体质辨识测试")
+    private String physicalRes;
+
+    /**
+     * 最近一次报告图
+     */
+    @ApiModelProperty(value = "最近一次报告图")
+    private List<GetInquiryDetailImgDTO> imageList;
+
+    /**
+     * 量表结果
+     */
+    @ApiModelProperty(value = "量表结果")
+    private List<ScaleDTO> scaleList;
+
+}

+ 20 - 0
prec-service/src/main/java/com/diagbot/dto/RecordCheckSyfDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @author: 周铁钢
+ * @time: 2018/11/19 18:56
+ */
+@Data
+public class RecordCheckSyfDTO {
+
+	// 预问诊条数
+	private long detailCount = 0;
+	// 量表条数
+	private long scaleCount = 0;
+	// 儿童体质辨识表
+	private long physicalCount = 0;
+		
+}

+ 35 - 0
prec-service/src/main/java/com/diagbot/dto/ScaleDTO.java

@@ -0,0 +1,35 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * <p>
+ * 量表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-12-20
+ */
+@Data
+public class ScaleDTO {
+
+    /**
+     * 量表名称
+     */
+    private String scaleName;
+
+    /**
+     * 得分
+     */
+    private String score;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * json数据
+     */
+    private String dataJson;
+}

+ 85 - 0
prec-service/src/main/java/com/diagbot/entity/Scale.java

@@ -0,0 +1,85 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 量表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-12-20
+ */
+@TableName("prec_scale")
+@Data
+public class Scale implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 问诊记录id
+     */
+    private Long inquiryId;
+
+    /**
+     * 量表名称
+     */
+    private String scaleName;
+
+    /**
+     * 得分
+     */
+    private String score;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * json数据
+     */
+    private String dataJson;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 477 - 0
prec-service/src/main/java/com/diagbot/facade/InquiryInfoSyfFacade.java

@@ -0,0 +1,477 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.TranServiceClient;
+import com.diagbot.dto.GetInquiryDetailImgDTO;
+import com.diagbot.dto.GetInquiryDetailSyfDTO;
+import com.diagbot.dto.HisInquirySyfDTO;
+import com.diagbot.dto.InquiryDetailFlatSyfDTO;
+import com.diagbot.dto.RecordCheckSyfDTO;
+import com.diagbot.dto.SaveInquiryDTO;
+import com.diagbot.dto.ScaleDTO;
+import com.diagbot.entity.InquiryDetail;
+import com.diagbot.entity.InquiryEvaluator;
+import com.diagbot.entity.InquiryInfo;
+import com.diagbot.entity.InquiryReport;
+import com.diagbot.entity.Scale;
+import com.diagbot.enums.InquiryQuotedTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.SexEnum;
+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.service.impl.InquiryReportServiceImpl;
+import com.diagbot.service.impl.ScaleServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.GetInquiryDetailVO;
+import com.diagbot.vo.GetScaleVO;
+import com.diagbot.vo.HisInquirysVO;
+import com.diagbot.vo.RecordCheckVO;
+import com.diagbot.vo.SaveInquirySyfVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author: zhoutg
+ * @time: 2018/8/6 9:11
+ */
+@Component
+public class InquiryInfoSyfFacade extends InquiryInfoServiceImpl {
+
+    @Value("${imageUrl.prefix}")
+    private String imageUrlPrefix;
+
+    @Autowired
+    private InquiryDetailFacade inquiryDetailFacade;
+    @Autowired
+    private InquiryReportFacade inquiryReportFacade;
+    @Autowired
+    private InquiryEvaluatorFacade inquiryEvaluatorFacade;
+    @Autowired
+    @Qualifier("inquiryDetailServiceImpl")
+    private InquiryDetailServiceImpl inquiryDetailServiceImpl;
+    @Autowired
+    @Qualifier("inquiryReportServiceImpl")
+    private InquiryReportServiceImpl inquiryReportServiceImpl;
+    @Autowired
+    @Qualifier("scaleServiceImpl")
+    private ScaleServiceImpl scaleServiceImpl;
+    @Autowired
+    private TranServiceClient tranServiceClient;
+    @Autowired
+    private InquiryQuoteFacade inquiryQuoteFacade;
+    @Autowired
+    private SysSetFacade sysSetFacade;
+    @Autowired
+    private InquiryScaleFacade inquiryScaleFacade;
+
+    /**
+     * 问诊记录保存
+     *
+     * @param saveInquirySyfVO
+     * @return
+     */
+    public SaveInquiryDTO saveInquiry(SaveInquirySyfVO saveInquirySyfVO) {
+        SaveInquiryDTO saveInquiryDTO = new SaveInquiryDTO();
+        Date now = DateUtil.now();
+
+        QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<>();
+        inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+        inquiryInfoQe.eq("hospital_dept_id", saveInquirySyfVO.getHospitalDeptId());
+        inquiryInfoQe.eq("hospital_id", saveInquirySyfVO.getHospitalId());
+        inquiryInfoQe.eq("patient_id", saveInquirySyfVO.getPatientId());
+        inquiryInfoQe.eq("is_quoted", 0);
+        inquiryInfoQe.eq(saveInquirySyfVO.getSonHospitalId() != null,
+                "son_hospital_id", saveInquirySyfVO.getSonHospitalId());
+        inquiryInfoQe.eq(saveInquirySyfVO.getDoctorId() != null,
+                "doctor_id", saveInquirySyfVO.getDoctorId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(saveInquirySyfVO.getInquiryCode()),
+                "inquiry_code", saveInquirySyfVO.getInquiryCode());
+        inquiryInfoQe.orderByDesc("gmt_modified");
+        InquiryInfo inquiryInfo = this.getOne(inquiryInfoQe, false);
+
+        if (inquiryInfo == null) {
+            inquiryInfo = new InquiryInfo();
+            inquiryInfo.setGmtCreate(now);
+        } else {
+            QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
+            inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
+            inquiryDetailFacade.remove(inquiryDetailQe);
+
+            QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
+            inquiryReportQe.eq("inquiry_id", inquiryInfo.getId());
+            inquiryReportFacade.remove(inquiryReportQe);
+
+            QueryWrapper<Scale> scaleQe = new QueryWrapper<>();
+            scaleQe.eq("inquiry_id", inquiryInfo.getId());
+            inquiryScaleFacade.remove(scaleQe);
+        }
+
+        BeanUtil.copyProperties(saveInquirySyfVO, inquiryInfo);
+        inquiryInfo.setGmtModified(now);
+        saveOrUpdate(inquiryInfo);
+
+        Long inquiryId = inquiryInfo.getId();
+
+        // 问诊明细
+        List<InquiryDetail> inquiryDetailList = BeanUtil.listCopyTo(saveInquirySyfVO.getDetailList(), InquiryDetail.class);
+        inquiryDetailList.forEach(i -> {
+            i.setInquiryId(inquiryId);
+            i.setGmtCreate(now);
+            i.setGmtModified(now);
+        });
+        inquiryDetailServiceImpl.saveBatch(inquiryDetailList);
+
+        // 治疗报告
+        List<InquiryReport> inquiryReportList = BeanUtil.listCopyTo(saveInquirySyfVO.getReportList(), InquiryReport.class);
+        inquiryReportList.forEach(i -> {
+            i.setInquiryId(inquiryId);
+            i.setNarrowImage("0");
+            i.setGmtCreate(now);
+            i.setGmtModified(now);
+        });
+        inquiryReportServiceImpl.saveBatch(inquiryReportList);
+
+        // 量表
+        List<Scale> scaleList = BeanUtil.listCopyTo(saveInquirySyfVO.getScaleList(), Scale.class);
+        scaleList.forEach(i -> {
+            i.setInquiryId(inquiryId);
+            i.setGmtCreate(now);
+            i.setGmtModified(now);
+        });
+        scaleServiceImpl.saveBatch(scaleList);
+
+        saveInquiryDTO.setInquiryId(inquiryId);
+        return saveInquiryDTO;
+    }
+
+    /**
+     * 问诊记录检查确认
+     *
+     * @param recordCheckVO
+     * @return
+     */
+    public RecordCheckSyfDTO recordCheck(RecordCheckVO recordCheckVO) {
+        RecordCheckSyfDTO recordCheckSyfDTO = new RecordCheckSyfDTO();
+        QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<>();
+        inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+        inquiryInfoQe.eq("hospital_id", recordCheckVO.getHospitalId());
+        inquiryInfoQe.eq("hospital_dept_id", recordCheckVO.getHospitalDeptId());
+        inquiryInfoQe.eq("doctor_id", recordCheckVO.getDoctorId());
+        inquiryInfoQe.eq("patient_id", recordCheckVO.getPatientId());
+        inquiryInfoQe.eq("inquiry_code", recordCheckVO.getInquiryCode());
+        InquiryInfo inquiryInfo = this.getOne(inquiryInfoQe, false);
+
+        if (inquiryInfo == null) {
+            return recordCheckSyfDTO;
+        } else {
+            QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
+            inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
+            recordCheckSyfDTO.setDetailCount(inquiryDetailFacade.count(inquiryDetailQe));
+
+            QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
+            inquiryEvaluatorQe.eq("inquiry_id", inquiryInfo.getId());
+            recordCheckSyfDTO.setPhysicalCount(inquiryEvaluatorFacade.count(inquiryEvaluatorQe));
+
+            QueryWrapper<Scale> inquiryScaleQe = new QueryWrapper<>();
+            inquiryScaleQe.eq("inquiry_id", inquiryInfo.getId());
+            recordCheckSyfDTO.setScaleCount(inquiryScaleFacade.count(inquiryScaleQe));
+        }
+        return recordCheckSyfDTO;
+    }
+
+    /**
+     * 历史病历列表
+     *
+     * @param hisInquirysVO
+     * @return
+     */
+    public List<HisInquirySyfDTO> hisInquirys(HisInquirysVO hisInquirysVO) {
+        if (StringUtil.isBlank(hisInquirysVO.getHospitalCode())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "医院信息(医院id或者医院编码)必传!");
+        }
+
+        QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<InquiryInfo>();
+        inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+        inquiryInfoQe.eq(!sysSetFacade.isQuoteShow(hisInquirysVO.getHospitalCode()),
+                "is_quoted", InquiryQuotedTypeEnum.Disable.getKey());
+        inquiryInfoQe.eq(hisInquirysVO.getHospitalId() != null,
+                "hospital_id", hisInquirysVO.getHospitalId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getHospitalCode()),
+                "hospital_code", hisInquirysVO.getHospitalCode());
+
+        if (StringUtil.isNotBlank(hisInquirysVO.getSonHospitalCode())) {
+            inquiryInfoQe.and(qe ->
+                    qe.eq("son_hospital_code", hisInquirysVO.getSonHospitalCode())
+                            .or()
+                            .eq("son_hospital_code", "")
+                            .or()
+                            .isNull("son_hospital_code"));
+        }
+
+        inquiryInfoQe.eq(hisInquirysVO.getHospitalDeptId() != null,
+                "hospital_dept_id", hisInquirysVO.getHospitalDeptId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getHospitalDeptCode()),
+                "hospital_dept_code", hisInquirysVO.getHospitalDeptCode());
+        inquiryInfoQe.eq(hisInquirysVO.getDoctorId() != null,
+                "doctor_id", hisInquirysVO.getDoctorId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getDoctorCode()),
+                "doctor_code", hisInquirysVO.getDoctorCode());
+        inquiryInfoQe.eq(hisInquirysVO.getPatientId() != null,
+                "patient_id", hisInquirysVO.getPatientId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getPatientCode()),
+                "patient_code", hisInquirysVO.getPatientCode());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getPatientIdNo()),
+                "patient_id_no", hisInquirysVO.getPatientIdNo());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getPatientName()),
+                "patient_name", hisInquirysVO.getPatientName());
+        inquiryInfoQe.eq(hisInquirysVO.getType() != null,
+                "type", hisInquirysVO.getType());
+        String day = DateUtil.formatDateTime(DateUtil.getFirstTimeOfDay(DateUtil.addDay(DateUtil.now(),
+                -hisInquirysVO.getDayLimit())));
+        inquiryInfoQe.ge("gmt_modified", day);
+
+        inquiryInfoQe.ge(hisInquirysVO.getStartDate() != null,
+                "gmt_create", hisInquirysVO.getStartDate());
+        inquiryInfoQe.le(hisInquirysVO.getEndDate() != null,
+                "gmt_create", hisInquirysVO.getEndDate());
+
+        if (hisInquirysVO.getOrderType() == null || hisInquirysVO.getOrderType() == 1) {
+            inquiryInfoQe.orderByDesc("gmt_modified");
+        } else if (hisInquirysVO.getOrderType() == 2) {
+            inquiryInfoQe.orderByAsc("gmt_modified");
+        } else if (hisInquirysVO.getOrderType() == 3) {
+            inquiryInfoQe.orderByDesc("inquiry_code");
+        } else if (hisInquirysVO.getOrderType() == 4) {
+            inquiryInfoQe.orderByAsc("inquiry_code");
+        } else {
+            inquiryInfoQe.orderByDesc("gmt_modified");
+        }
+
+        List<HisInquirySyfDTO> hisInquiryDTOList = BeanUtil.listCopyTo(list(inquiryInfoQe), HisInquirySyfDTO.class);
+        hisInquiryDTOList.forEach(i -> {
+            i.setPatientSexMsg(SexEnum.getName(i.getPatientSex()));
+            i.setInquiryDate(i.getGmtModified());
+            i.setInquiryTime(i.getGmtModified());
+            i.setPatientAge(DateUtil.yearCompare(i.getPatientBirthday(), DateUtil.now()));
+        });
+
+        if (ListUtil.isNotEmpty(hisInquiryDTOList) && hisInquirysVO.getIsHaveDetail() == 1) {
+            List<Long> inquiryIdList = hisInquiryDTOList.stream().map(i -> i.getId()).collect(Collectors.toList());
+
+            QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
+            inquiryDetailQe.in("inquiry_id", inquiryIdList);
+            Map<Long, List<InquiryDetail>> inquiryDetailListMap = inquiryDetailFacade.list(inquiryDetailQe)
+                    .stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));
+
+            QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
+            inquiryReportQe.in("inquiry_id", inquiryIdList);
+            Map<Long, List<InquiryReport>> inquiryReportListMap = inquiryReportFacade.list(inquiryReportQe)
+                    .stream().collect(Collectors.groupingBy(InquiryReport::getInquiryId));
+
+            QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
+            inquiryEvaluatorQe.in("inquiry_id", inquiryIdList);
+            Map<Long, List<InquiryEvaluator>> inquiryEvaluatorListMap = inquiryEvaluatorFacade.list(inquiryEvaluatorQe)
+                    .stream().collect(Collectors.groupingBy(InquiryEvaluator::getInquiryId));
+
+            hisInquiryDTOList.forEach(i -> {
+                i.setDetail(getInquiryDetailFlat(inquiryDetailListMap.get(i.getId()),
+                        inquiryReportListMap.get(i.getId()),
+                        inquiryEvaluatorListMap.get(i.getId()), null));
+            });
+        }
+
+        return hisInquiryDTOList;
+    }
+
+    /**
+     * 病历详情
+     *
+     * @param getInquiryDetailVO
+     * @return
+     */
+    public GetInquiryDetailSyfDTO getInquiryDetail(GetInquiryDetailVO getInquiryDetailVO) {
+        if (StringUtil.isBlank(getInquiryDetailVO.getHospitalCode())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "医院信息(医院id或者医院编码)必传!");
+        }
+        /*if (getInquiryDetailVO.getHospitalDeptId() == null && StringUtil.isBlank(getInquiryDetailVO.getHospitalDeptCode())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "科室信息(科室id或者科室编码)必传!");
+        }
+        if (getInquiryDetailVO.getDoctorId() == null && StringUtil.isBlank(getInquiryDetailVO.getDoctorCode())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "医生信息(医生id或者医生编码)必传!");
+        }*/
+        if (getInquiryDetailVO.getPatientId() == null
+                && StringUtil.isBlank(getInquiryDetailVO.getPatientCode())
+                && (StringUtil.isBlank(getInquiryDetailVO.getPatientIdNo())
+                || StringUtil.isBlank(getInquiryDetailVO.getPatientName()))) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "患者信息(患者id或者患者编码或者患者病历号)必传!");
+        }
+
+        QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<InquiryInfo>();
+        inquiryInfoQe.eq(getInquiryDetailVO.getInquiryId() != null,
+                "id", getInquiryDetailVO.getInquiryId());
+        inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+        inquiryInfoQe.eq(!sysSetFacade.isQuoteShow(getInquiryDetailVO.getHospitalCode()),
+                "is_quoted", InquiryQuotedTypeEnum.Disable.getKey());
+        inquiryInfoQe.eq(getInquiryDetailVO.getHospitalId() != null,
+                "hospital_id", getInquiryDetailVO.getHospitalId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getHospitalCode()),
+                "hospital_code", getInquiryDetailVO.getHospitalCode());
+
+        if (StringUtil.isNotBlank(getInquiryDetailVO.getSonHospitalCode())) {
+            inquiryInfoQe.and(qe ->
+                    qe.eq("son_hospital_code", getInquiryDetailVO.getSonHospitalCode())
+                            .or()
+                            .eq("son_hospital_code", "")
+                            .or()
+                            .isNull("son_hospital_code"));
+        }
+
+        inquiryInfoQe.eq(getInquiryDetailVO.getHospitalDeptId() != null,
+                "hospital_dept_id", getInquiryDetailVO.getHospitalDeptId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getHospitalDeptCode()),
+                "hospital_dept_code", getInquiryDetailVO.getHospitalDeptCode());
+        inquiryInfoQe.eq(getInquiryDetailVO.getDoctorId() != null,
+                "doctor_id", getInquiryDetailVO.getDoctorId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getDoctorCode()),
+                "doctor_code", getInquiryDetailVO.getDoctorCode());
+        inquiryInfoQe.eq(getInquiryDetailVO.getPatientId() != null,
+                "patient_id", getInquiryDetailVO.getPatientId());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getPatientCode()),
+                "patient_code", getInquiryDetailVO.getPatientCode());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getPatientIdNo()),
+                "patient_id_no", getInquiryDetailVO.getPatientIdNo());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getPatientName()),
+                "patient_name", getInquiryDetailVO.getPatientName());
+        inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getInquiryCode()),
+                "inquiry_code", getInquiryDetailVO.getInquiryCode());
+        String day = DateUtil.formatDateTime(DateUtil.getFirstTimeOfDay(DateUtil.addDay(DateUtil.now(),
+                -getInquiryDetailVO.getDayLimit())));
+        inquiryInfoQe.ge("gmt_modified", day);
+        inquiryInfoQe.orderByDesc("gmt_modified");
+
+        InquiryInfo inquiryInfo = this.getOne(inquiryInfoQe, false);
+        if (inquiryInfo == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历不存在!");
+        }
+
+        QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
+        inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
+        List<InquiryDetail> inquiryDetailList = inquiryDetailFacade.list(inquiryDetailQe);
+
+        QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
+        inquiryReportQe.eq("inquiry_id", inquiryInfo.getId());
+        List<InquiryReport> inquiryReportList = inquiryReportFacade.list(inquiryReportQe);
+
+        QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
+        inquiryEvaluatorQe.eq("inquiry_id", inquiryInfo.getId());
+        inquiryEvaluatorQe.orderByDesc("gmt_modified");
+        inquiryEvaluatorQe.last("limit 0,1");
+        List<InquiryEvaluator> inquiryEvaluatorList = inquiryEvaluatorFacade.list(inquiryEvaluatorQe);
+
+        QueryWrapper<Scale> scaleQe = new QueryWrapper<>();
+        scaleQe.eq("inquiry_id", inquiryInfo.getId());
+        List<Scale> scaleList = inquiryScaleFacade.list(scaleQe);
+
+        GetInquiryDetailSyfDTO getInquiryDetailDTO = new GetInquiryDetailSyfDTO();
+        BeanUtil.copyProperties(inquiryInfo, getInquiryDetailDTO);
+        getInquiryDetailDTO.setPatientSexMsg(SexEnum.getName(inquiryInfo.getPatientSex()));
+        getInquiryDetailDTO.setInquiryDate(inquiryInfo.getGmtModified());
+        getInquiryDetailDTO.setInquiryTime(inquiryInfo.getGmtModified());
+        getInquiryDetailDTO.setPatientAge(DateUtil.yearCompare(inquiryInfo.getPatientBirthday(), DateUtil.now()));
+
+        BeanUtil.copyProperties(
+                getInquiryDetailFlat(inquiryDetailList, inquiryReportList, inquiryEvaluatorList, scaleList),
+                getInquiryDetailDTO);
+
+        return getInquiryDetailDTO;
+    }
+
+    /**
+     * 获取预问诊病历详情
+     *
+     * @param inquiryDetailList    病历明细
+     * @param inquiryReportList    报告图
+     * @param inquiryEvaluatorList 体质辨识
+     * @param scaleList            量表结果
+     * @return
+     */
+    private InquiryDetailFlatSyfDTO getInquiryDetailFlat(List<InquiryDetail> inquiryDetailList,
+                                                         List<InquiryReport> inquiryReportList,
+                                                         List<InquiryEvaluator> inquiryEvaluatorList,
+                                                         List<Scale> scaleList) {
+        InquiryDetailFlatSyfDTO inquiryDetailFlatSyfDTO = new InquiryDetailFlatSyfDTO();
+
+        if (ListUtil.isNotEmpty(inquiryDetailList)) {
+            Map<Integer, InquiryDetail> inquiryDetailMap
+                    = EntityUtil.makeEntityMap(inquiryDetailList, "type");
+            if (null != inquiryDetailMap.get(1)) {
+                inquiryDetailFlatSyfDTO.setChiefComplaint(inquiryDetailMap.get(1).getContentValue());
+            }
+            if (null != inquiryDetailMap.get(2)) {
+                inquiryDetailFlatSyfDTO.setXbs(inquiryDetailMap.get(2).getContentValue());
+            }
+            if (null != inquiryDetailMap.get(3)) {
+                inquiryDetailFlatSyfDTO.setQts(inquiryDetailMap.get(3).getContentValue());
+            }
+            if (null != inquiryDetailMap.get(4)) {
+                inquiryDetailFlatSyfDTO.setSupplement(inquiryDetailMap.get(4).getContentValue());
+            }
+        }
+        inquiryDetailFlatSyfDTO.setPhysicalRes(
+                ListUtil.isNotEmpty(inquiryEvaluatorList) ?
+                        inquiryEvaluatorList.stream()
+                                .max(Comparator.comparing(InquiryEvaluator::getGmtModified))
+                                .map(i -> i.getPhysicalRes())
+                                .get() :
+                        null
+        );
+        if (ListUtil.isNotEmpty(inquiryReportList)) {
+            inquiryReportList.stream()
+                    .sorted(Comparator.comparing(InquiryReport::getOrderNum))
+                    .forEach(inquiryReport -> {
+                        if (StringUtil.isNotBlank(inquiryReport.getOriginalImage())) {
+                            inquiryReport.setOriginalImage(imageUrlPrefix + inquiryReport.getOriginalImage());
+                        }
+                    });
+            inquiryDetailFlatSyfDTO.setImageList(BeanUtil.listCopyTo(inquiryReportList, GetInquiryDetailImgDTO.class));
+        }
+        if (ListUtil.isNotEmpty(scaleList)) {
+            inquiryDetailFlatSyfDTO.setScaleList(BeanUtil.listCopyTo(scaleList, ScaleDTO.class));
+        }
+        return inquiryDetailFlatSyfDTO;
+    }
+
+    /**
+     * 获取量表数据
+     *
+     * @param getScaleVO
+     * @return
+     */
+    public ScaleDTO getScale(GetScaleVO getScaleVO) {
+        ScaleDTO scaleDTO = new ScaleDTO();
+        Scale scale = inquiryScaleFacade.getOne(new QueryWrapper<Scale>().lambda()
+                .eq(Scale::getIsDeleted, IsDeleteEnum.N.getKey())
+                .eq(Scale::getInquiryId, getScaleVO.getInquiryId())
+                .eq(Scale::getScaleName, getScaleVO.getScaleName()), false);
+        if (scale == null) {
+            return null;
+        }
+        BeanUtil.copyProperties(scale, scaleDTO);
+        return scaleDTO;
+    }
+
+}

+ 13 - 0
prec-service/src/main/java/com/diagbot/facade/InquiryScaleFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.ScaleServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author: zhoutg
+ * @time: 2018/8/6 9:11
+ */
+@Component
+public class InquiryScaleFacade extends ScaleServiceImpl {
+
+}

+ 16 - 0
prec-service/src/main/java/com/diagbot/mapper/ScaleMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.Scale;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 量表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-12-20
+ */
+public interface ScaleMapper extends BaseMapper<Scale> {
+
+}

+ 16 - 0
prec-service/src/main/java/com/diagbot/service/ScaleService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.Scale;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 量表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-12-20
+ */
+public interface ScaleService extends IService<Scale> {
+
+}

+ 20 - 0
prec-service/src/main/java/com/diagbot/service/impl/ScaleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.Scale;
+import com.diagbot.mapper.ScaleMapper;
+import com.diagbot.service.ScaleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 量表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-12-20
+ */
+@Service
+public class ScaleServiceImpl extends ServiceImpl<ScaleMapper, Scale> implements ScaleService {
+
+}

+ 22 - 0
prec-service/src/main/java/com/diagbot/vo/GetScaleVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/11/19 18:58
+ */
+@Data
+public class GetScaleVO {
+	
+	/**
+     * 问诊记录id
+     */
+    private Long inquiryId;
+
+    /**
+     * 量表名称
+     */
+    private String scaleName;
+}

+ 33 - 0
prec-service/src/main/java/com/diagbot/vo/SaveInquiryScaleSyfVO.java

@@ -0,0 +1,33 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description
+ * @author zhoutg
+ * @time 2018年11月23日下午2:29:43
+ */
+@Data
+public class SaveInquiryScaleSyfVO {
+
+    /**
+     * 量表名称
+     */
+    private String scaleName;
+
+    /**
+     * 得分
+     */
+    private String score;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * json数据
+     */
+    private String dataJson;
+
+}

+ 200 - 0
prec-service/src/main/java/com/diagbot/vo/SaveInquirySyfVO.java

@@ -0,0 +1,200 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.validator.constraints.Range;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description: 
+ * @author: zhoutg
+ * @date: 2021/12/20 16:56
+ */
+@ApiModel(value="问诊记录保存接口传参")
+@Getter
+@Setter
+public class SaveInquirySyfVO {
+	
+	/**
+     * 医院id
+     */
+	@ApiModelProperty(value="医院id",required=true)
+	@NotNull(message="医院id必传")
+    private Long hospitalId;
+	
+	/**
+     * 医院编码
+     */
+	@ApiModelProperty(value="医院编码",required=true)
+	@NotBlank(message="医院编码必传")
+    private String hospitalCode;
+
+    /**
+     * 医院名称
+     */
+	@ApiModelProperty(value="医院名称",required=true)
+	@NotBlank(message="医院名称必传")
+    private String hospitalName;
+
+	/**
+	 * 子医院id
+	 */
+	@ApiModelProperty(value="子医院id")
+	private Long sonHospitalId;
+
+	/**
+	 * 子医院编码
+	 */
+	@ApiModelProperty(value="子医院编码")
+	private String sonHospitalCode;
+
+	/**
+	 * 子医院名称
+	 */
+	@ApiModelProperty(value="子医院名称")
+	private String sonHospitalName;
+
+    /**
+     * 医院科室id
+     */
+	@ApiModelProperty(value="科室id",required=true)
+	@NotNull(message="科室id必传")
+    private Long hospitalDeptId;
+	
+	/**
+     * 医院科室编码
+     */
+	@ApiModelProperty(value="医院科室编码",required=true)
+	@NotBlank(message="医院科室编码必传")
+    private String hospitalDeptCode;
+
+    /**
+     * 医院科室名称
+     */
+	@ApiModelProperty(value="医院科室名称",required=true)
+	@NotBlank(message="医院科室名称必传")
+    private String hospitalDeptName;
+
+    /**
+     * 医生id
+     */
+	@ApiModelProperty(value="医生id")
+    private Long doctorId;
+	
+	/**
+     * 医生编码
+     */
+	@ApiModelProperty(value="医生编码")
+    private String doctorCode;
+
+    /**
+     * 医生姓名
+     */
+	@ApiModelProperty(value="医生姓名")
+    private String doctorName;
+
+    /**
+     * 患者id
+     */
+	@ApiModelProperty(value="患者id",required=true)
+	@NotNull(message="患者id必传")
+    private Long patientId;
+	
+	/**
+     * 患者编号
+     */
+	@ApiModelProperty(value="患者编号",required=true)
+	@NotBlank(message="患者编号必传")
+    private String patientCode;
+
+    /**
+     * 患者姓名
+     */
+	@ApiModelProperty(value="患者姓名",required=true)
+	@NotBlank(message="患者姓名必传")
+    private String patientName;
+
+    /**
+     * 患者性别:1男2女
+     */
+	@ApiModelProperty(value="患者性别:1男2女")
+    private Integer patientSex;
+
+    /**
+     * 患者联系电话
+     */
+	@ApiModelProperty(value="患者联系电话")
+    private String patientPhone;
+
+    /**
+     * 患者出生日期
+     */
+	@ApiModelProperty(value="患者出生日期,格式为:2018-11-28 17:25",required=true)
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@NotNull(message="患者出生日期必传")
+    private Date patientBirthday;
+    
+    /**
+     * 患者证件号码(病历号)
+     */
+	@ApiModelProperty(value="患者证件号码(病历号)",required=true)
+	@NotBlank(message="患者证件号码(病历号)必传")
+    private String patientIdNo;
+
+    /**
+     * 就诊序列号
+     */
+	@ApiModelProperty(value="就诊序列号")
+    private String inquiryCode;
+
+    /**
+     * 就诊状态(0待接诊,1接诊中,2完成接诊)
+     */
+	@ApiModelProperty(value="就诊状态(0待接诊,1接诊中,2完成接诊)")
+	@Range(min=0,max=2,message="就诊状态必须是0、1、2")
+	private Integer regVisitedState=1;
+
+    /**
+     * 病历分类(1:门诊,2:住院)
+     */
+	@ApiModelProperty(value="病历分类(1:门诊,2:住院)")
+	@Range(min=1,max=2,message="病历分类必须是1、2")
+    private Integer type=1;
+
+    /**
+     * 内容JSON字符串
+     */
+	@ApiModelProperty(value="内容JSON字符串",required=true)
+    @NotBlank(message="内容JSON字符串必传")
+    private String dataJson;
+    
+	/**
+	 * 问诊明细
+	 */
+    @Valid
+    @ApiModelProperty(value="问诊明细",required=true)
+    @NotEmpty(message="问诊明细不能为空")
+    private List<SaveInquiryDetailVO> detailList;
+    
+	/**
+	 * 治疗报告图片集合
+	 */
+    @ApiModelProperty(value="治疗报告图片集合")
+    private List<SaveInquiryReportVO> reportList;
+
+	/**
+	 * 量表列表
+	 */
+	@ApiModelProperty(value="量表列表")
+	private List<SaveInquiryScaleSyfVO> scaleList;
+    
+}

+ 79 - 0
prec-service/src/main/java/com/diagbot/web/InquiryInfoSYFController.java

@@ -0,0 +1,79 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetInquiryDetailSyfDTO;
+import com.diagbot.dto.HisInquirySyfDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.SaveInquiryDTO;
+import com.diagbot.dto.ScaleDTO;
+import com.diagbot.facade.InquiryInfoSyfFacade;
+import com.diagbot.vo.GetInquiryDetailVO;
+import com.diagbot.vo.GetScaleVO;
+import com.diagbot.vo.HisInquirysVO;
+import com.diagbot.vo.RecordCheckVO;
+import com.diagbot.vo.SaveInquirySyfVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+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;
+
+/**
+ * @description: 邵逸夫加入量表定制
+ * @author: zhoutg
+ * @date: 2021/12/20 16:39
+ */
+@RestController
+@RequestMapping("/inquiryInfoSyf")
+@Api(value = "邵逸夫智能预问诊-问诊记录API", tags = { "邵逸夫智能预问诊-问诊记录API" })
+@SuppressWarnings("unchecked")
+public class InquiryInfoSYFController {
+
+    @Autowired
+    InquiryInfoSyfFacade inquiryInfoSyfFacade;
+
+    @ApiOperation(value = "问诊记录保存[by:zhoutg]")
+    @PostMapping("/saveInquiry")
+    @SysLogger("saveInquiry")
+    @Transactional
+    public RespDTO<SaveInquiryDTO> saveInquiry(@Valid @RequestBody SaveInquirySyfVO saveInquirySyfVO) {
+        return RespDTO.onSuc(inquiryInfoSyfFacade.saveInquiry(saveInquirySyfVO));
+    }
+
+    @ApiOperation(value = "历史病历列表(医院对接用)[by:zhoutg]")
+    @PostMapping("/hisInquirys")
+    @SysLogger("hisInquirys")
+    public RespDTO<List<HisInquirySyfDTO>> hisInquirys(@Valid @RequestBody HisInquirysVO hisInquirysVO) {
+        return RespDTO.onSuc(inquiryInfoSyfFacade.hisInquirys(hisInquirysVO));
+    }
+
+    @ApiOperation(value = "病历详情(医院对接用)[by:zhoutg]")
+    @PostMapping("/getInquiryDetail")
+    @SysLogger("getInquiryDetail")
+    public RespDTO<GetInquiryDetailSyfDTO> getInquiryDetail(@Valid @RequestBody GetInquiryDetailVO getInquiryDetailVO) {
+        return RespDTO.onSuc(inquiryInfoSyfFacade.getInquiryDetail(getInquiryDetailVO));
+    }
+
+    @ApiOperation(value = "问诊记录检查确认[by:zhoutg]")
+    @PostMapping("/recordCheck")
+    @SysLogger("recordCheck")
+    public RespDTO<Boolean> recordCheck(@Valid @RequestBody RecordCheckVO recordCheckVO) {
+        return RespDTO.onSuc(inquiryInfoSyfFacade.recordCheck(recordCheckVO));
+    }
+
+    @ApiOperation(value = "获取量表结果[by:zhoutg]",
+            notes = "inquiryId:病历id<br>" +
+                    "scaleName:量表名称")
+    @PostMapping("/getScale")
+    @SysLogger("getScale")
+    public RespDTO<ScaleDTO> getScale(@RequestBody GetScaleVO getScaleVO) {
+        return RespDTO.onSuc(inquiryInfoSyfFacade.getScale(getScaleVO));
+    }
+
+}

+ 21 - 0
prec-service/src/main/resources/mapper/ScaleMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.ScaleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.Scale">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="inquiry_id" property="inquiryId" />
+        <result column="scale_name" property="scaleName" />
+        <result column="score" property="score" />
+        <result column="result" property="result" />
+        <result column="data_json" property="dataJson" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 2 - 2
prec-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -34,7 +34,7 @@ public class CodeGeneration {
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("gaodm");// 作者
+        gc.setAuthor("zhoutg");// 作者
         gc.setDateType(DateType.ONLY_DATE);
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
@@ -58,7 +58,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
         strategy.setTablePrefix(new String[] { "prec_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "prec_inquiry_quote" }); // 需要生成的表
+        strategy.setInclude(new String[] { "prec_scale" }); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);