Kaynağa Gözat

Merge remote-tracking branch 'origin/dev/20220309_v2.2.1通用版_病历详情其他文书信息' into test

wangsy 3 yıl önce
ebeveyn
işleme
8b3ac909af

+ 33 - 0
doc/042.20220303病案首页字段新增/qc_initv2.1.5.sql

@@ -0,0 +1,33 @@
+use `qc`;
+
+-- 最先执行字段添加
+
+  ALTER TABLE `med_home_page` ADD  `treatment_type` varchar(2) DEFAULT NULL COMMENT '治疗类别(1.中医<1.1 中医;1.2 民族医>、2.中西医、3.西医 )'AFTER `behospital_day_num`;
+  ALTER TABLE `med_home_page` ADD `outpatient_emr_ch_diagnose` varchar(64) DEFAULT NULL COMMENT '门急诊诊断(中医)'AFTER `outpatient_emr_diagnose`;
+  ALTER TABLE `med_home_page` ADD  `outpatient_emr_ch_diagnose_code` varchar(64) DEFAULT NULL COMMENT '门急诊诊断编码(中医)'AFTER `outpatient_emr_diagnose_code`;
+  ALTER TABLE `med_home_page` ADD  `implementation_clinical_pathway` varchar(2) DEFAULT NULL COMMENT '实施临床路径(1中医、2西医、3否)'AFTER `outpatient_emr_ch_diagnose_code`;
+  ALTER TABLE `med_home_page` ADD  `is_chinese_medicine_preparation` varchar(2) DEFAULT NULL COMMENT '使用医疗机构中药制剂(1是、2否)'AFTER `implementation_clinical_pathway`;
+  ALTER TABLE `med_home_page` ADD  `is_chinese_diagnose_equipment` varchar(2) DEFAULT NULL COMMENT '使用中医诊疗设备(1是、2否)	'AFTER `is_chinese_medicine_preparation`;
+  ALTER TABLE `med_home_page` ADD  `is_chinese_diagnose_technology` varchar(2) DEFAULT NULL COMMENT '使用中医诊疗技术(1是 、2否)	'AFTER `is_chinese_diagnose_equipment`;
+  ALTER TABLE `med_home_page` ADD  `dialectical_nursing` varchar(2) DEFAULT NULL COMMENT '辩证施护(1是、2否)'AFTER `is_chinese_diagnose_technology`;
+
+
+
+  ALTER TABLE `med_home_diagnose_info` ADD  `chinese_western_type` varchar(2) DEFAULT '0' COMMENT '中西医类别(0 西医 1中医)'AFTER `hospital_id`;
+
+
+
+
+ -- ALTER TABLE `med_behospital_info` ADD `in_state` varchar(20) DEFAULT NULL COMMENT 'R-住院登记I-病房接诊B-出院登记O-出院结算P-预约出院N-无费退院'AFTER `placefile_date`;
+
+
+
+
+
+
+
+
+
+
+
+

+ 8 - 0
doc/044.20220311v2.2.1/qc_initv2.2.1.sql

@@ -0,0 +1,8 @@
+use `qc`;
+
+UPDATE `qc_mode` SET `name`='其他信息' WHERE (`name`='其他');
+
+
+
+
+

+ 2 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -209,6 +209,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/export/badLevelPagePageExport").permitAll()
                 .antMatchers("/console/export/badLevelPageXYExport").permitAll()
                 .antMatchers("/qc/medNurse/getMedNursePage").permitAll()
+                .antMatchers("/qc/medRecordOther/getMedRecordOtherPage").permitAll()
+                .antMatchers("/qc/medRecordOther/getMedRecordContentOther").permitAll()
                 .antMatchers("/qc/behospitalInfo/exportQcresultByPerson").permitAll()
                 .antMatchers("/consoleByDept/beHosCountByDept").permitAll()
                 .antMatchers("/consoleByDept/casesEntryStatisticsByDept").permitAll()

+ 2 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -286,6 +286,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/export/badLevelPagePageExport", request)
                 || matchers("/console/export/badLevelPageXYExport", request)
                 || matchers("/qc/medNurse/getMedNursePage", request)
+                || matchers("/qc/medRecordOther/getMedRecordOtherPage", request)
+                || matchers("/qc/medRecordOther/getMedRecordContentOther", request)
                 || matchers("/qc/behospitalInfo/exportQcresultByPerson", request)
                 || matchers("/consoleByDept/beHosCountByDept", request)
                 || matchers("/consoleByDept/casesEntryStatisticsByDept", request)

+ 40 - 0
src/main/java/com/diagbot/dto/MedRecordContentOtherDTO.java

@@ -0,0 +1,40 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author Wsy
+ * @since 2022-03-09
+ */
+@Getter
+@Setter
+public class MedRecordContentOtherDTO implements Serializable {
+
+    /**
+     * 病历ID
+     */
+    private String recId;
+
+    /**
+     * 文书内容
+     */
+    private String htmlText;
+
+    /**
+     * 创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 修改时间(如果时间是1970年则表示纪录未修改)
+     */
+    private Date gmtModified;
+}

+ 5 - 0
src/main/java/com/diagbot/entity/BehospitalInfo.java

@@ -158,6 +158,11 @@ public class BehospitalInfo implements Serializable {
      */
     private Date placefileDate;
 
+    /**
+     * R-住院登记I-病房接诊B-出院登记O-出院结算P-预约出院N-无费退院
+     */
+    private String inState;
+
     /**
      * 是否删除,N:未删除,Y:删除
      */

+ 6 - 0
src/main/java/com/diagbot/entity/HomeDiagnoseInfo.java

@@ -33,6 +33,12 @@ public class HomeDiagnoseInfo implements Serializable {
      */
     private Long hospitalId;
 
+    /**
+     * 中西医类别(0 西医 1中医)
+     */
+
+    private String chineseWesternType;
+
     /**
      * 诊断序号
      */

+ 40 - 0
src/main/java/com/diagbot/entity/HomePage.java

@@ -278,16 +278,56 @@ public class HomePage implements Serializable {
      */
     private String behospitalDayNum;
 
+    /**
+     * 治疗类别(1.中医<1.1 中医;1.2 民族医>、2.中西医、3.西医 )
+     */
+    private String treatmentType;
+
     /**
      * 门急诊诊断
      */
     private String outpatientEmrDiagnose;
 
+    /**
+     * 门急诊诊断(中医)
+     */
+    private String outpatientEmrChDiagnose;
+
     /**
      * 门急诊诊断编码
      */
     private String outpatientEmrDiagnoseCode;
 
+    /**
+     * 门急诊诊断编码(中医)
+     */
+    private String outpatientEmrChDiagnoseCode;
+
+    /**
+     * 实施临床路径(1中医、2西医、3否)
+     */
+    private String implementationClinicalPathway;
+
+    /**
+     * 使用医疗机构中药制剂(1是、2否)
+     */
+    private String isChineseMedicinePreparation;
+
+    /**
+     * 使用中医诊疗设备(1是、2否)
+     */
+    private String isChineseDiagnoseEquipment;
+
+    /**
+     * 使用中医诊疗技术(1是 、2否)
+     */
+    private String isChineseDiagnoseTechnology;
+
+    /**
+     * 辩证施护(1是、2否)
+     */
+    private String dialecticalNursing;
+
     /**
      * 损伤中毒因素
      */

+ 2 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -2431,6 +2431,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         pageMap.put("检验信息", null);
         // 护理信息
         pageMap.put("护理信息", null);
+        // 其他信息
+        pageMap.put("其他信息", null);
         // 知情同意书 = 【知情同意书】 + 【手术知情同意书】
         pageMap.put("知情同意书", recordDTOList);
         pageMap.put("谈话告知书", recordMap.get(54L));

+ 121 - 0
src/main/java/com/diagbot/facade/MedicalRecordOtherFacade.java

@@ -0,0 +1,121 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.dto.*;
+import com.diagbot.entity.MedicalRecord;
+import com.diagbot.entity.MedicalRecordContent;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.facade.data.AMedicalRecordContentFacade;
+import com.diagbot.service.impl.MedicalRecordServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EncrypDES;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.MedRecordContentOtherVO;
+import com.diagbot.vo.MedRecordOtherVO;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: Wsy
+ * @time: 2022/3/9 11:39
+ */
+@Component
+public class MedicalRecordOtherFacade extends MedicalRecordServiceImpl {
+
+    @Autowired
+    private MedicalRecordFacade medicalRecordFacade;
+
+    @Autowired
+    private AMedicalRecordContentFacade AMedicalRecordContentFacade;
+
+    @Value("${encrypt.enable}")
+    Boolean encryptFlag;
+
+    /**
+     * @param medRecordOtherVO
+     * @return
+     */
+    public IPage<MedicalRecord> pageFac(MedRecordOtherVO medRecordOtherVO) {
+        Boolean flag = false;
+        QueryWrapper<MedicalRecord> medicalRecordQueryWrapper = new QueryWrapper<>();
+        medicalRecordQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        medicalRecordQueryWrapper.eq("hospital_id", Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        medicalRecordQueryWrapper.eq("mode_id", 0);
+        if (medRecordOtherVO != null) {
+            medicalRecordQueryWrapper.eq("behospital_code", medRecordOtherVO.getBehospitalCode());
+        }
+
+        if (medRecordOtherVO.getRecTitle() != null && medRecordOtherVO != null) {
+            medicalRecordQueryWrapper.like("rec_title", medRecordOtherVO.getRecTitle());
+        }
+        if (medRecordOtherVO.getRecDateStart() != null && medRecordOtherVO != null) {
+            medicalRecordQueryWrapper.ge("rec_date", medRecordOtherVO.getRecDateStart());
+        }
+        if (medRecordOtherVO.getRecDateEnd() != null && medRecordOtherVO != null) {
+            medicalRecordQueryWrapper.le("rec_date", medRecordOtherVO.getRecDateEnd());
+        }
+        for (Object order : medRecordOtherVO.getOrders()) {
+            ObjectMapper objectMapper = new ObjectMapper();
+            OrderItem orderName = objectMapper.convertValue(order, OrderItem.class);
+            String column = orderName.getColumn();
+            if (StringUtil.isNotEmpty(column) && orderName.isAsc()) {
+                flag = true;
+            }
+        }
+        if (flag) {
+            medicalRecordQueryWrapper.orderByAsc("rec_date");
+        } else {
+            medicalRecordQueryWrapper.orderByDesc("rec_date");
+        }
+
+        Page<MedicalRecord> pageCase = new Page<MedicalRecord>(medRecordOtherVO.getCurrent(), medRecordOtherVO.getSize());
+        IPage<MedicalRecord> medicalRecordIPage = medicalRecordFacade.getBaseMapper().selectPage(pageCase, medicalRecordQueryWrapper);
+
+        return medicalRecordIPage;
+    }
+
+    /**
+     * 文书详情
+     */
+    public MedRecordContentOtherDTO getRecordContentOther(MedRecordContentOtherVO medRecordContentOtherVO) {
+        MedicalRecordContent medicalRecordContent = AMedicalRecordContentFacade.getOne(new QueryWrapper<MedicalRecordContent>()
+                .eq("hospital_id", Long.valueOf(SysUserUtils.getCurrentHospitalID()))
+                .eq("rec_id", medRecordContentOtherVO.getRecId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+        );
+        if (medicalRecordContent != null) {
+            if (medicalRecordContent.getHospitalId() == 35) {
+                medicalRecordContent.setHtmlText(medicalRecordContent.getXmlText());
+            }
+        } else {
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "病历id不存在!");
+        }
+        MedRecordContentOtherDTO medRecordContentOtherDTO = new MedRecordContentOtherDTO();
+        BeanUtil.copyProperties(medicalRecordContent, medRecordContentOtherDTO);
+        // 解密数据
+        if (encryptFlag) {
+            try {
+                EncrypDES encrypDES = new EncrypDES();
+                if (StringUtils.isNotEmpty(medRecordContentOtherDTO.getHtmlText())) {
+                    medRecordContentOtherDTO.setHtmlText(encrypDES.decryptor(medRecordContentOtherDTO.getHtmlText()));
+                }
+            } catch (Exception e) {
+                medRecordContentOtherDTO.setHtmlText(null);
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                        "解密错误!病历ID=【" + medRecordContentOtherDTO.getRecId() + "】");
+            }
+        }
+        return medRecordContentOtherDTO;
+    }
+
+}

+ 51 - 0
src/main/java/com/diagbot/vo/MedRecordContentOtherVO.java

@@ -0,0 +1,51 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: Wsy
+ * @time: 2022/03/09 14:59
+ */
+@Data
+public class MedRecordContentOtherVO {
+
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+
+    /**
+     * 文书ID
+     */
+    private String recId;
+
+    /**
+     * 病历号
+     */
+    @ApiModelProperty(hidden = true)
+    private String behospitalCode;
+
+    /**
+     * 病历标题
+     */
+    @ApiModelProperty(hidden = true)
+    private String recTitle;
+
+    /**
+     * 创建开始时间
+     */
+    @ApiModelProperty(hidden = true)
+    private Date recDateStart;
+
+    /**
+     * 创建结束时间
+     */
+    @ApiModelProperty(hidden = true)
+    private Date recDateEnd;
+
+}

+ 47 - 0
src/main/java/com/diagbot/vo/MedRecordOtherVO.java

@@ -0,0 +1,47 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: Wsy
+ * @time: 2022/03/09 14:59
+ */
+@Data
+public class MedRecordOtherVO extends Page implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+
+    /**
+     * 病历号
+     */
+    @NotBlank(message = "请输入病历号")
+    private String behospitalCode;
+
+    /**
+     * 病历标题
+     */
+    private String recTitle;
+
+    /**
+     * 创建开始时间
+     */
+    private Date recDateStart;
+
+    /**
+     * 创建结束时间
+     */
+    private Date recDateEnd;
+
+}

+ 58 - 0
src/main/java/com/diagbot/web/MedRecordOtherController.java

@@ -0,0 +1,58 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.MedRecordContentOtherDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.MedicalRecord;
+import com.diagbot.facade.MedicalRecordOtherFacade;
+import com.diagbot.vo.MedRecordContentOtherVO;
+import com.diagbot.vo.MedRecordOtherVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author Wsy
+ * @since 2022-03-09
+ */
+@RestController
+@RequestMapping("/qc/medRecordOther")
+@Api(value = "病历详情其他信息API", tags = {"病历详情其他信息API"})
+public class MedRecordOtherController {
+    @Autowired
+    private MedicalRecordOtherFacade medicalRecordOtherFacade;
+
+    @ApiOperation(value = "病历详情其他信息总览",
+            notes = "behospitalCode:病人住院序号<br>" +
+                    "recTitle:病历标题<br>" +
+                    "recDateStart:创建开始时间<br>" +
+                    "recDateEnd:创建结束时间")
+    @PostMapping("/getMedRecordOtherPage")
+    @SysLogger("getMedRecordOtherPage")
+    public RespDTO<IPage<MedicalRecord>> getMedRecordOtherPage(@RequestBody @Valid MedRecordOtherVO medRecordOtherVO) {
+        IPage<MedicalRecord> dataIPage = medicalRecordOtherFacade.pageFac(medRecordOtherVO);
+        return RespDTO.onSuc(dataIPage);
+    }
+
+
+    @ApiOperation(value = "文书内容展示(HTML)",
+            notes = "recID:病历id<br>")
+    @PostMapping("/getMedRecordContentOther")
+    @SysLogger("getMedRecordContentOther")
+    public RespDTO<MedRecordContentOtherDTO> getMedRecordContentOther(@RequestBody MedRecordContentOtherVO medRecordContentOtherVO) {
+        return RespDTO.onSuc(medicalRecordOtherFacade.getRecordContentOther(medRecordContentOtherVO));
+    }
+
+}

+ 1 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -32,6 +32,7 @@
         <result column="director_doctor_name" property="directorDoctorName"/>
         <result column="is_placefile" property="isPlacefile"/>
         <result column="placefile_date" property="placefileDate"/>
+        <result column="in_state" property="inState"/>
         <result column="is_deleted" property="isDeleted"/>
         <result column="gmt_create" property="gmtCreate"/>
         <result column="gmt_modified" property="gmtModified"/>

+ 1 - 0
src/main/resources/mapper/HomeDiagnoseInfoMapper.xml

@@ -6,6 +6,7 @@
     <resultMap id="BaseResultMap" type="com.diagbot.entity.HomeDiagnoseInfo">
         <id column="home_page_id" property="homePageId" />
         <result column="hospital_id" property="hospitalId" />
+        <result column="chinese_western_type" property="chineseWesternType" />
         <result column="diagnose_order_no" property="diagnoseOrderNo" />
         <result column="diagnose_type" property="diagnoseType" />
         <result column="diagnose_type_short" property="diagnoseTypeShort" />

+ 8 - 0
src/main/resources/mapper/HomePageMapper.xml

@@ -55,8 +55,16 @@
         <result column="leave_hospital_bed_id" property="leaveHospitalBedId" />
         <result column="leave_hospital_bed_code" property="leaveHospitalBedCode" />
         <result column="behospital_day_num" property="behospitalDayNum" />
+        <result property="treatmentType" column="treatment_type"/>
         <result column="outpatient_emr_diagnose" property="outpatientEmrDiagnose" />
+        <result property="outpatientEmrChDiagnose" column="outpatient_emr_ch_diagnose"/>
         <result column="outpatient_emr_diagnose_code" property="outpatientEmrDiagnoseCode" />
+        <result property="outpatientEmrChDiagnoseCode" column="outpatient_emr_ch_diagnose_code"/>
+        <result property="implementationClinicalPathway" column="implementation_clinical_pathway"/>
+        <result property="isChineseMedicinePreparation" column="is_chinese_medicine_preparation"/>
+        <result property="isChineseDiagnoseEquipment" column="is_chinese_diagnose_equipment"/>
+        <result property="isChineseDiagnoseTechnology" column="is_chinese_diagnose_technology"/>
+        <result property="dialecticalNursing" column="dialectical_nursing"/>
         <result column="poison_factor" property="poisonFactor" />
         <result column="poison_factor_code" property="poisonFactorCode" />
         <result column="pathology_diagnose" property="pathologyDiagnose" />