新增了dockerfile,修改了病例新增、登陆逻辑
This commit is contained in:
parent
4c74b0dd01
commit
a5197591bc
@ -21,10 +21,11 @@ RUN mkdir -p /root/.m2 && \
|
|||||||
|
|
||||||
# 复制项目代码
|
# 复制项目代码
|
||||||
COPY pom.xml .
|
COPY pom.xml .
|
||||||
COPY src ./src
|
COPY sa-admin ./sa-admin
|
||||||
|
COPY sa-common ./sa-common
|
||||||
|
|
||||||
# 构建项目
|
# 构建项目
|
||||||
RUN mvn clean package -DskipTests
|
RUN mvn clean package -Dmaven.test.skip=true -P dev
|
||||||
|
|
||||||
# 第二阶段:使用更小的 Java8 JDK 镜像运行
|
# 第二阶段:使用更小的 Java8 JDK 镜像运行
|
||||||
FROM eclipse-temurin:8-jdk-alpine
|
FROM eclipse-temurin:8-jdk-alpine
|
||||||
@ -32,7 +33,7 @@ FROM eclipse-temurin:8-jdk-alpine
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 复制构建产物
|
# 复制构建产物
|
||||||
COPY --from=builder /app/target/*.jar app.jar
|
COPY --from=builder /app/sa-admin/target/*.jar app.jar
|
||||||
|
|
||||||
# 暴露端口(请替换成你实际应用端口)
|
# 暴露端口(请替换成你实际应用端口)
|
||||||
EXPOSE 5477
|
EXPOSE 5477
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
package net.lab1024.sa.admin.module.app.medicalrecord.dao;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import net.lab1024.sa.admin.module.app.medicalrecord.domain.MedicalRecordAbstracEntity;
|
||||||
|
import net.lab1024.sa.admin.module.app.medicalrecord.domain.MedicalRecordPrognosisEntity;
|
||||||
|
import org.apache.ibatis.annotations.Delete;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Component
|
||||||
|
public interface MedicalRecorPrognosisDao extends BaseMapper<MedicalRecordPrognosisEntity> {
|
||||||
|
|
||||||
|
@Delete("delete from t_caseplatform_case_prognosis where case_id=#{medicalRecordId}")
|
||||||
|
int deleteByCaseId(Long medicalRecordId);
|
||||||
|
}
|
||||||
@ -34,11 +34,6 @@ public class MedicalRecordAbstracEntity {
|
|||||||
*/
|
*/
|
||||||
private String abstractStr;
|
private String abstractStr;
|
||||||
|
|
||||||
/**
|
|
||||||
* 病历摘要 图片
|
|
||||||
*/
|
|
||||||
private String abstractImg;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@ -49,10 +44,10 @@ public class MedicalRecordAbstracEntity {
|
|||||||
*/
|
*/
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
public MedicalRecordAbstracEntity(Long caseId, String abstractStr, String abstractImg, LocalDateTime createTime) {
|
// public MedicalRecordAbstracEntity(Long caseId, String abstractStr, String abstractImg, LocalDateTime createTime) {
|
||||||
this.caseId = caseId;
|
// this.caseId = caseId;
|
||||||
this.abstractStr = abstractStr;
|
// this.abstractStr = abstractStr;
|
||||||
this.abstractImg = abstractImg;
|
// this.abstractImg = abstractImg;
|
||||||
this.createTime = createTime;
|
// this.createTime = createTime;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
@ -5,6 +5,7 @@ import lombok.Data;
|
|||||||
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CaseStatusEnum;
|
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CaseStatusEnum;
|
||||||
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CasetypeEnum;
|
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CasetypeEnum;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.common.common.domain.PageParam;
|
||||||
|
import net.lab1024.sa.common.common.enumeration.DischargeStatusEnum;
|
||||||
import net.lab1024.sa.common.common.enumeration.GenderEnum;
|
import net.lab1024.sa.common.common.enumeration.GenderEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
||||||
@ -36,7 +37,7 @@ public class MedicalRecordAddForm {
|
|||||||
|
|
||||||
@ApiModelPropertyEnum(GenderEnum.class)
|
@ApiModelPropertyEnum(GenderEnum.class)
|
||||||
@CheckEnum(value = GenderEnum.class, message = "性别错误")
|
@CheckEnum(value = GenderEnum.class, message = "性别错误")
|
||||||
private Integer sex;
|
private String sex;
|
||||||
|
|
||||||
@ApiModelProperty(value = "年龄", required = true)
|
@ApiModelProperty(value = "年龄", required = true)
|
||||||
@NotNull(message = "年龄 不能为空")
|
@NotNull(message = "年龄 不能为空")
|
||||||
@ -47,23 +48,27 @@ public class MedicalRecordAddForm {
|
|||||||
@NotNull(message = "入院时间 不能为空")
|
@NotNull(message = "入院时间 不能为空")
|
||||||
private LocalDateTime admissionTime;
|
private LocalDateTime admissionTime;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "病历类型")
|
@ApiModelProperty(value = "治疗类型", required = true)
|
||||||
@CheckEnum(value = CasetypeEnum.class, message = "病历类型 错误", required = true)
|
@NotNull(message = "治疗类型 不能为空")
|
||||||
private Integer caseType;
|
private String caseType;
|
||||||
|
|
||||||
@ApiModelProperty(value = "基本信息图片", required = true)
|
@ApiModelProperty(value = "主要诊断", required = true)
|
||||||
@NotNull(message = "基本信息图片 不能为空")
|
@NotNull(message = "主要诊断 不能为空")
|
||||||
@Length(min = 1, max = 1000, message = "基本信息图片 不能为空")
|
private String mainDiagnose;
|
||||||
private String baseImg;
|
|
||||||
|
@ApiModelProperty(value = "患者病因", required = true)
|
||||||
|
@NotNull(message = "患者病因 不能为空")
|
||||||
|
private String diseaseCause;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "诱因", required = true)
|
||||||
|
@NotNull(message = "诱因 不能为空")
|
||||||
|
private String seductionReason;
|
||||||
|
|
||||||
/*************************临床资料 病历摘要***************************/
|
/*************************临床资料 病历摘要***************************/
|
||||||
@ApiModelProperty(value = "临床资料 病历摘要 文字", required = true)
|
@ApiModelProperty(value = "临床资料 病历摘要 文字", required = true)
|
||||||
|
@NotNull(message = "主要诊断 文字 不能为空")
|
||||||
private String abstractStr;
|
private String abstractStr;
|
||||||
|
|
||||||
@ApiModelProperty(value = "临床资料 病历摘要 图片", required = true)
|
|
||||||
private String abstractImg;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************DPMAS***************************/
|
/*************************DPMAS***************************/
|
||||||
@ApiModelProperty(value = "DPMAS", required = true)
|
@ApiModelProperty(value = "DPMAS", required = true)
|
||||||
@NotNull(message = "DPMAS 不能为空")
|
@NotNull(message = "DPMAS 不能为空")
|
||||||
@ -83,12 +88,18 @@ public class MedicalRecordAddForm {
|
|||||||
@NotNull(message = "治疗后 检测时间 不能为空")
|
@NotNull(message = "治疗后 检测时间 不能为空")
|
||||||
private LocalDateTime afterTime;
|
private LocalDateTime afterTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 检测时间
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 检测时间 ", required = true)
|
||||||
|
@NotNull(message = "最后一次治疗后 检测时间 不能为空")
|
||||||
|
private LocalDateTime lastTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 总胆红素(umol/L)
|
* 治疗前 总胆红素(umol/L)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗前 总胆红素", required = true)
|
@ApiModelProperty(value = "治疗前 总胆红素", required = true)
|
||||||
@NotNull(message = "治疗前 总胆红素 不能为空")
|
@NotNull(message = "治疗前 总胆红素 不能为空")
|
||||||
@Length(min = 1, max = 10, message = "治疗前 总胆红素 输入不合法")
|
|
||||||
private String headTb;
|
private String headTb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,20 +107,14 @@ public class MedicalRecordAddForm {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗后 总胆红素 ", required = true)
|
@ApiModelProperty(value = "治疗后 总胆红素 ", required = true)
|
||||||
@NotNull(message = "治疗后 总胆红素 不能为空")
|
@NotNull(message = "治疗后 总胆红素 不能为空")
|
||||||
@Length(min = 1, max = 10, message = "治疗后 总胆红素 输入不合法")
|
|
||||||
private String afterTb;
|
private String afterTb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 白蛋白(g/L)
|
* 最后一次治疗后 总胆红素(umol/L)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗前 白蛋白", required = true)
|
@ApiModelProperty(value = "最后一次治疗后 总胆红素 ", required = true)
|
||||||
private String headAlb;
|
@NotNull(message = "最后一次治疗后 总胆红素 不能为空")
|
||||||
|
private String lastTb;
|
||||||
/**
|
|
||||||
* 治疗后 白蛋白(g/L)
|
|
||||||
*/
|
|
||||||
@ApiModelProperty(value = "治疗后 白蛋白 ", required = true)
|
|
||||||
private String afterAlb;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 直接胆红素(umol/L)
|
* 治疗前 直接胆红素(umol/L)
|
||||||
@ -124,16 +129,10 @@ public class MedicalRecordAddForm {
|
|||||||
private String afterDb;
|
private String afterDb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 凝血酶原活动度 (%)
|
* 最后一次治疗后 直接胆红素(umol/L)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗前 凝血酶原活动度", required = true)
|
@ApiModelProperty(value = "最后一次治疗后 直接胆红素 ", required = true)
|
||||||
private String headPta;
|
private String lastDb;
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 凝血酶原活动度 (%)
|
|
||||||
*/
|
|
||||||
@ApiModelProperty(value = "治疗后 凝血酶原活动度 ", required = true)
|
|
||||||
private String afterPta;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 间接胆红素(umol/L)
|
* 治疗前 间接胆红素(umol/L)
|
||||||
@ -147,12 +146,95 @@ public class MedicalRecordAddForm {
|
|||||||
@ApiModelProperty(value = "治疗后 间接胆红素 ", required = true)
|
@ApiModelProperty(value = "治疗后 间接胆红素 ", required = true)
|
||||||
private String afterIb;
|
private String afterIb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 间接胆红素(umol/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 间接胆红素 ", required = true)
|
||||||
|
private String lastIb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗前 丙氨酸氨基转移酶(U/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗前 丙氨酸氨基转移酶", required = true)
|
||||||
|
@NotNull(message = "治疗前 丙氨酸氨基转移酶 不能为空")
|
||||||
|
private String headAlt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗后 丙氨酸氨基转移酶 (U/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗后 丙氨酸氨基转移酶 ", required = true)
|
||||||
|
@NotNull(message = "治疗后 丙氨酸氨基转移酶 不能为空")
|
||||||
|
private String afterAlt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 丙氨酸氨基转移酶 (U/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 丙氨酸氨基转移酶 ", required = true)
|
||||||
|
@NotNull(message = "最后一次治疗后 丙氨酸氨基转移酶 不能为空")
|
||||||
|
private String lastAlt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗前 天门冬氨酸氨基转移酶 (U/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗前 天门冬氨酸氨基转移酶", required = true)
|
||||||
|
@NotNull(message = "治疗前 天门冬氨酸氨基转移酶 不能为空")
|
||||||
|
private String headAst;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗后 天门冬氨酸氨基转移酶 (U/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗后 天门冬氨酸氨基转移酶 ", required = true)
|
||||||
|
@NotNull(message = "治疗后 天门冬氨酸氨基转移酶 不能为空")
|
||||||
|
private String afterAst;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 天门冬氨酸氨基转移酶 (U/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 天门冬氨酸氨基转移酶 ", required = true)
|
||||||
|
@NotNull(message = "最后一次治疗后 天门冬氨酸氨基转移酶 不能为空")
|
||||||
|
private String lastAst;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗前 白蛋白(g/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗前 白蛋白", required = true)
|
||||||
|
private String headAlb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗后 白蛋白(g/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗后 白蛋白 ", required = true)
|
||||||
|
private String afterAlb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 白蛋白(g/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 白蛋白 ", required = true)
|
||||||
|
private String lastAlb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗前 凝血酶原活动度 (%)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗前 凝血酶原活动度", required = true)
|
||||||
|
private String headPta;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 治疗后 凝血酶原活动度 (%)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗后 凝血酶原活动度 ", required = true)
|
||||||
|
private String afterPta;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 凝血酶原活动度 (%)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 凝血酶原活动度 ", required = true)
|
||||||
|
private String lastPta;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 国际标准化比值 (INR)
|
* 治疗前 国际标准化比值 (INR)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗前 国际标准化比值", required = true)
|
@ApiModelProperty(value = "治疗前 国际标准化比值", required = true)
|
||||||
@NotNull(message = "治疗前 国际标准化比值 不能为空")
|
@NotNull(message = "治疗前 国际标准化比值 不能为空")
|
||||||
@Length(min = 1, max = 10, message = "治疗前 国际标准化比值 输入不合法")
|
|
||||||
private String headInr;
|
private String headInr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -160,24 +242,32 @@ public class MedicalRecordAddForm {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗后 国际标准化比值 ", required = true)
|
@ApiModelProperty(value = "治疗后 国际标准化比值 ", required = true)
|
||||||
@NotNull(message = "治疗后 国际标准化比值 不能为空")
|
@NotNull(message = "治疗后 国际标准化比值 不能为空")
|
||||||
@Length(min = 1, max = 10, message = "治疗后 国际标准化比值 输入不合法")
|
|
||||||
private String afterInr;
|
private String afterInr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 谷丙转氨 (U/L)
|
* 最后一次治疗后 国际标准化比值 (INR)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗前 谷丙转氨", required = true)
|
@ApiModelProperty(value = "最后一次治疗后 国际标准化比值 ", required = true)
|
||||||
@NotNull(message = "治疗前 谷丙转氨 不能为空")
|
@NotNull(message = "最后一次治疗后 国际标准化比值 不能为空")
|
||||||
@Length(min = 1, max = 10, message = "治疗前 谷丙转氨 输入不合法")
|
private String lastInr;
|
||||||
private String headAlt;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗后 谷丙转氨 (U/L)
|
* 治疗前 C反应蛋白(mg/L)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗后 谷丙转氨 ", required = true)
|
@ApiModelProperty(value = "治疗前 C反应蛋白", required = true)
|
||||||
@NotNull(message = "治疗后 谷丙转氨 不能为空")
|
private String headCrp;
|
||||||
@Length(min = 1, max = 10, message = "治疗后 谷丙转氨 输入不合法")
|
|
||||||
private String afterAlt;
|
/**
|
||||||
|
* 治疗后 C反应蛋白(mg/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "治疗后 C反应蛋白 ", required = true)
|
||||||
|
private String afterCrp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 C反应蛋白(mg/L)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 C反应蛋白 ", required = true)
|
||||||
|
private String lastCrp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 白介素6(ng/L)
|
* 治疗前 白介素6(ng/L)
|
||||||
@ -192,20 +282,10 @@ public class MedicalRecordAddForm {
|
|||||||
private String afterIl6;
|
private String afterIl6;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 谷草转氨酶 (U/L)
|
* 最后一次治疗后 白介素6(ng/L)
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "治疗前 谷草转氨酶", required = true)
|
@ApiModelProperty(value = "最后一次治疗后 白介素6 ", required = true)
|
||||||
@NotNull(message = "治疗前 谷草转氨酶 不能为空")
|
private String lastIl6;
|
||||||
@Length(min = 1, max = 10, message = "治疗前 谷草转氨酶 输入不合法")
|
|
||||||
private String headAst;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 谷草转氨酶 (U/L)
|
|
||||||
*/
|
|
||||||
@ApiModelProperty(value = "治疗后 谷草转氨酶 ", required = true)
|
|
||||||
@NotNull(message = "治疗后 谷草转氨酶 不能为空")
|
|
||||||
@Length(min = 1, max = 10, message = "治疗后 谷草转氨酶 输入不合法")
|
|
||||||
private String afterAst;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 肿瘤坏死因子α(μg/L)
|
* 治疗前 肿瘤坏死因子α(μg/L)
|
||||||
@ -219,8 +299,30 @@ public class MedicalRecordAddForm {
|
|||||||
@ApiModelProperty(value = "治疗后 肿瘤坏死因子α ", required = true)
|
@ApiModelProperty(value = "治疗后 肿瘤坏死因子α ", required = true)
|
||||||
private String afterTnf;
|
private String afterTnf;
|
||||||
|
|
||||||
@ApiModelProperty(value = "实验室检测 图片 图片", required = true)
|
/**
|
||||||
@NotNull(message = "实验室检测 图片 不能为空")
|
* 最后一次治疗后 肿瘤坏死因子α(μg/L)
|
||||||
@Length(min = 1, max = 1000, message = "实验室检测 图片 不能为空")
|
*/
|
||||||
|
@ApiModelProperty(value = "最后一次治疗后 肿瘤坏死因子α ", required = true)
|
||||||
|
private String lastTnf;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "报告单 图片", required = true)
|
||||||
|
@NotNull(message = "报告单 图片 不能为空")
|
||||||
private String checkImg;
|
private String checkImg;
|
||||||
|
|
||||||
|
/*************************疾病转归***************************/
|
||||||
|
@ApiModelProperty(value = "疾病转归 出院时间", required = true)
|
||||||
|
@NotNull(message = "疾病转归 出院时间 不能为空")
|
||||||
|
private LocalDateTime dischargeTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "住院天数", required = true)
|
||||||
|
@NotNull(message = "住院天数 不能为空")
|
||||||
|
private Integer day;
|
||||||
|
|
||||||
|
@ApiModelPropertyEnum(DischargeStatusEnum.class)
|
||||||
|
@CheckEnum(value = DischargeStatusEnum.class, message = "出院状态 错误")
|
||||||
|
private Integer dischargeStatus;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "疾病转归 出院情况", required = true)
|
||||||
|
@NotNull(message = "疾病转归 出院情况 不能为空")
|
||||||
|
private String dischargeSituation;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,6 @@ import lombok.Data;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_caseplatform_case_checkdata")
|
@TableName("t_caseplatform_case_checkdata")
|
||||||
@Builder
|
|
||||||
public class MedicalRecordCheckdataEntity {
|
public class MedicalRecordCheckdataEntity {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,6 +41,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private LocalDateTime afterTime;
|
private LocalDateTime afterTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 检测时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime lastTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 总胆红素(umol/L)
|
* 治疗前 总胆红素(umol/L)
|
||||||
*/
|
*/
|
||||||
@ -52,6 +56,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterTb;
|
private String afterTb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 总胆红素(umol/L)
|
||||||
|
*/
|
||||||
|
private String lastTb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 白蛋白(g/L)
|
* 治疗前 白蛋白(g/L)
|
||||||
*/
|
*/
|
||||||
@ -62,6 +71,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterAlb;
|
private String afterAlb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 白蛋白(g/L)
|
||||||
|
*/
|
||||||
|
private String lastAlb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 直接胆红素(umol/L)
|
* 治疗前 直接胆红素(umol/L)
|
||||||
*/
|
*/
|
||||||
@ -72,6 +86,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterDb;
|
private String afterDb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 直接胆红素(umol/L)
|
||||||
|
*/
|
||||||
|
private String lastDb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 凝血酶原活动度 (%)
|
* 治疗前 凝血酶原活动度 (%)
|
||||||
*/
|
*/
|
||||||
@ -82,6 +101,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterPta;
|
private String afterPta;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 凝血酶原活动度 (%)
|
||||||
|
*/
|
||||||
|
private String lastPta;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 间接胆红素(umol/L)
|
* 治疗前 间接胆红素(umol/L)
|
||||||
*/
|
*/
|
||||||
@ -92,6 +116,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterIb;
|
private String afterIb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 间接胆红素(umol/L)
|
||||||
|
*/
|
||||||
|
private String lastIb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 国际标准化比值 (INR)
|
* 治疗前 国际标准化比值 (INR)
|
||||||
*/
|
*/
|
||||||
@ -102,6 +131,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterInr;
|
private String afterInr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 国际标准化比值 (INR)
|
||||||
|
*/
|
||||||
|
private String lastInr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 谷丙转氨 (U/L)
|
* 治疗前 谷丙转氨 (U/L)
|
||||||
*/
|
*/
|
||||||
@ -112,6 +146,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterAlt;
|
private String afterAlt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 谷丙转氨 (U/L)
|
||||||
|
*/
|
||||||
|
private String lastAlt;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 白介素6(ng/L)
|
* 治疗前 白介素6(ng/L)
|
||||||
*/
|
*/
|
||||||
@ -122,6 +161,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterIl6;
|
private String afterIl6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 白介素6(ng/L)
|
||||||
|
*/
|
||||||
|
private String lastIl6;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 谷草转氨酶 (U/L)
|
* 治疗前 谷草转氨酶 (U/L)
|
||||||
*/
|
*/
|
||||||
@ -132,6 +176,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterAst;
|
private String afterAst;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 谷草转氨酶 (U/L)
|
||||||
|
*/
|
||||||
|
private String lastAst;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 治疗前 肿瘤坏死因子α(μg/L)
|
* 治疗前 肿瘤坏死因子α(μg/L)
|
||||||
*/
|
*/
|
||||||
@ -142,6 +191,11 @@ public class MedicalRecordCheckdataEntity {
|
|||||||
*/
|
*/
|
||||||
private String afterTnf;
|
private String afterTnf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最后一次治疗后 肿瘤坏死因子α(μg/L)
|
||||||
|
*/
|
||||||
|
private String lastTnf;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图片
|
* 图片
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.app.medicalrecord.domain;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CasetypeEnum;
|
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CasetypeEnum;
|
||||||
|
import net.lab1024.sa.common.common.enumeration.DischargeStatusEnum;
|
||||||
import net.lab1024.sa.common.common.enumeration.GenderEnum;
|
import net.lab1024.sa.common.common.enumeration.GenderEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
||||||
@ -38,29 +39,25 @@ public class MedicalRecordDetailVO {
|
|||||||
@NotNull(message = "入院时间 不能为空")
|
@NotNull(message = "入院时间 不能为空")
|
||||||
private LocalDateTime admissionTime;
|
private LocalDateTime admissionTime;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "病历类型")
|
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "治疗类型")
|
||||||
@CheckEnum(value = CasetypeEnum.class, message = "病历类型 错误", required = true)
|
@CheckEnum(value = CasetypeEnum.class, message = "治疗类型 错误", required = true)
|
||||||
private List<Integer> caseTypeList;
|
private List<Integer> caseTypeList;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "病历类型")
|
@ApiModelProperty(value = "治疗类型", required = true)
|
||||||
@CheckEnum(value = CasetypeEnum.class, message = "病历类型 错误", required = true)
|
@NotNull(message = "治疗类型 不能为空")
|
||||||
private String caseType;
|
private String caseType;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "主要诊断")
|
@ApiModelProperty(value = "主要诊断", required = true)
|
||||||
@CheckEnum(value = CasetypeEnum.class, message = "主要诊断 错误", required = true)
|
@NotNull(message = "主要诊断 不能为空")
|
||||||
private String mainDiagnose;
|
private String mainDiagnose;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "患者病因")
|
@ApiModelProperty(value = "患者病因", required = true)
|
||||||
@CheckEnum(value = CasetypeEnum.class, message = "患者病因 错误", required = true)
|
@NotNull(message = "患者病因 不能为空")
|
||||||
private String diseaseCause;
|
private String diseaseCause;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "诱因")
|
@ApiModelProperty(value = "诱因", required = true)
|
||||||
@CheckEnum(value = CasetypeEnum.class, message = "诱因 错误", required = true)
|
@NotNull(message = "诱因 不能为空")
|
||||||
private String trigger;
|
private String seductionReason;
|
||||||
|
|
||||||
// @ApiModelProperty(value = "基本信息图片", required = true)
|
|
||||||
// @NotNull(message = "基本信息图片 不能为空")
|
|
||||||
// private String baseImg;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "病例状态", required = true)
|
@ApiModelProperty(value = "病例状态", required = true)
|
||||||
private Integer status;
|
private Integer status;
|
||||||
@ -70,14 +67,9 @@ public class MedicalRecordDetailVO {
|
|||||||
@NotNull(message = "临床资料 病历摘要 文字 不能为空")
|
@NotNull(message = "临床资料 病历摘要 文字 不能为空")
|
||||||
private String abstractStr;
|
private String abstractStr;
|
||||||
|
|
||||||
// @ApiModelProperty(value = "临床资料 病历摘要 图片", required = true)
|
|
||||||
// @NotNull(message = "临床资料 病历摘要 图片 不能为空")
|
|
||||||
// private String abstractImg;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************DPMAS***************************/
|
/*************************DPMAS***************************/
|
||||||
@ApiModelProperty(value = "临床资料 病历摘要 图片", required = true)
|
@ApiModelProperty(value = "人工肝治疗", required = true)
|
||||||
@NotNull(message = "临床资料 病历摘要 图片 不能为空")
|
@NotNull(message = "人工肝治疗 不能为空")
|
||||||
private List<DpmsAddForm> dpmas;
|
private List<DpmsAddForm> dpmas;
|
||||||
|
|
||||||
|
|
||||||
@ -313,7 +305,24 @@ public class MedicalRecordDetailVO {
|
|||||||
@ApiModelProperty(value = "最后一次治疗后 肿瘤坏死因子α ", required = true)
|
@ApiModelProperty(value = "最后一次治疗后 肿瘤坏死因子α ", required = true)
|
||||||
private String lastTnf;
|
private String lastTnf;
|
||||||
|
|
||||||
@ApiModelProperty(value = "实验室检测 病历摘要 图片", required = true)
|
@ApiModelProperty(value = "报告单 图片", required = true)
|
||||||
@NotNull(message = "实验室检测 图片 不能为空")
|
@NotNull(message = "报告单 图片 不能为空")
|
||||||
private String checkImg;
|
private String checkImg;
|
||||||
|
|
||||||
|
/*************************疾病转归***************************/
|
||||||
|
@ApiModelProperty(value = "疾病转归 出院时间", required = true)
|
||||||
|
@NotNull(message = "疾病转归 出院时间 不能为空")
|
||||||
|
private LocalDateTime dischargeTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "住院天数", required = true)
|
||||||
|
@NotNull(message = "住院天数 不能为空")
|
||||||
|
private Integer day;
|
||||||
|
|
||||||
|
@ApiModelPropertyEnum(DischargeStatusEnum.class)
|
||||||
|
@CheckEnum(value = DischargeStatusEnum.class, message = "出院状态 错误")
|
||||||
|
private Integer dischargeStatus;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "疾病转归 出院情况", required = true)
|
||||||
|
@NotNull(message = "疾病转归 出院情况 不能为空")
|
||||||
|
private String dischargeSituation;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,4 +39,9 @@ public class MedicalRecordDpmsEntity {
|
|||||||
*/
|
*/
|
||||||
private String dpmasImg;
|
private String dpmasImg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容(json)
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 病历表 实体类
|
* 病历表 实体类
|
||||||
*
|
*
|
||||||
@ -29,11 +33,6 @@ public class MedicalRecordEntity {
|
|||||||
*/
|
*/
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 图片
|
|
||||||
*/
|
|
||||||
private String baseImg;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入院时间
|
* 入院时间
|
||||||
*/
|
*/
|
||||||
@ -42,7 +41,7 @@ public class MedicalRecordEntity {
|
|||||||
/**
|
/**
|
||||||
* 病历类型
|
* 病历类型
|
||||||
*/
|
*/
|
||||||
private Integer caseType;
|
private String caseType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统计 天
|
* 统计 天
|
||||||
@ -76,28 +75,44 @@ public class MedicalRecordEntity {
|
|||||||
|
|
||||||
|
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主要诊断
|
||||||
|
*/
|
||||||
|
private String mainDiagnose;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 患者病因
|
||||||
|
*/
|
||||||
|
private String diseaseCause;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 诱因
|
||||||
|
*/
|
||||||
|
private String seductionReason;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改时间
|
* 修改时间
|
||||||
*/
|
*/
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
public MedicalRecordEntity(Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, LocalDateTime createTime) {
|
// public MedicalRecordEntity(Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, LocalDateTime createTime) {
|
||||||
this.userId = userId;
|
// this.userId = userId;
|
||||||
this.admissionTime = admissionTime;
|
// this.admissionTime = admissionTime;
|
||||||
this.caseType = caseType;
|
// this.caseType = caseType;
|
||||||
this.baseImg = baseImg;
|
// this.baseImg = baseImg;
|
||||||
this.expertId = expertId;
|
// this.expertId = expertId;
|
||||||
this.createTime = createTime;
|
// this.createTime = createTime;
|
||||||
}
|
// }
|
||||||
|
|
||||||
public MedicalRecordEntity(Long id, Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, Integer status, LocalDateTime updateTime) {
|
// public MedicalRecordEntity(Long id, Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, Integer status, LocalDateTime updateTime) {
|
||||||
this.id = id;
|
// this.id = id;
|
||||||
this.userId = userId;
|
// this.userId = userId;
|
||||||
this.admissionTime = admissionTime;
|
// this.admissionTime = admissionTime;
|
||||||
this.caseType = caseType;
|
// this.caseType = caseType;
|
||||||
this.baseImg = baseImg;
|
// this.baseImg = baseImg;
|
||||||
this.expertId = expertId;
|
// this.expertId = expertId;
|
||||||
this.status = status;
|
// this.status = status;
|
||||||
this.updateTime = updateTime;
|
// this.updateTime = updateTime;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
package net.lab1024.sa.admin.module.app.medicalrecord.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 病历摘要表 实体类
|
||||||
|
*
|
||||||
|
* @Author HMM
|
||||||
|
* @Date 2024-01-11 15:18:32
|
||||||
|
* @Copyright gdxz
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 病例-疾病转归实体类
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("`t_caseplatform_case_prognosis`") // 指定数据库表名
|
||||||
|
public class MedicalRecordPrognosisEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 疾病id
|
||||||
|
*/
|
||||||
|
@TableField("case_id")
|
||||||
|
private Long caseId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出院时间
|
||||||
|
*/
|
||||||
|
@TableField("discharge_time")
|
||||||
|
private LocalDateTime dischargeTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 住院天数
|
||||||
|
*/
|
||||||
|
@TableField("day")
|
||||||
|
private Integer day;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出院状态(1:好转 2:痊愈 3:恶化 4:死亡 5:移植)
|
||||||
|
*/
|
||||||
|
@TableField("discharge_status")
|
||||||
|
private Integer dischargeStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出院情况
|
||||||
|
*/
|
||||||
|
@TableField("discharge_situation")
|
||||||
|
private String dischargeSituation;
|
||||||
|
|
||||||
|
// public MedicalRecordAbstracEntity(Long caseId, String abstractStr, String abstractImg, LocalDateTime createTime) {
|
||||||
|
// this.caseId = caseId;
|
||||||
|
// this.abstractStr = abstractStr;
|
||||||
|
// this.abstractImg = abstractImg;
|
||||||
|
// this.createTime = createTime;
|
||||||
|
// }
|
||||||
|
}
|
||||||
@ -39,8 +39,6 @@ public class MedicalRecordUserEntity {
|
|||||||
*/
|
*/
|
||||||
private String uid;
|
private String uid;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 性别
|
* 性别
|
||||||
*/
|
*/
|
||||||
@ -61,12 +59,12 @@ public class MedicalRecordUserEntity {
|
|||||||
*/
|
*/
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
public MedicalRecordUserEntity(Long expertId, String name, String uid, Integer sex, Integer age, LocalDateTime createTime) {
|
// public MedicalRecordUserEntity(Long expertId, String name, String uid, Integer sex, Integer age, LocalDateTime createTime) {
|
||||||
this.expertId = expertId;
|
// this.expertId = expertId;
|
||||||
this.name = name;
|
// this.name = name;
|
||||||
this.uid = uid;
|
// this.uid = uid;
|
||||||
this.sex = sex;
|
// this.sex = sex;
|
||||||
this.age = age;
|
// this.age = age;
|
||||||
this.createTime = createTime;
|
// this.createTime = createTime;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
@ -3,14 +3,11 @@ package net.lab1024.sa.admin.module.app.medicalrecord.service;
|
|||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import net.lab1024.sa.admin.module.app.expert.admin.ExpertSignVO;
|
import net.lab1024.sa.admin.module.app.expert.admin.ExpertSignVO;
|
||||||
import net.lab1024.sa.admin.module.app.expert.service.ExpertSignService;
|
import net.lab1024.sa.admin.module.app.expert.service.ExpertSignService;
|
||||||
import net.lab1024.sa.admin.module.app.medicalrecord.dao.MedicalRecorAbstracDao;
|
import net.lab1024.sa.admin.module.app.medicalrecord.dao.*;
|
||||||
import net.lab1024.sa.admin.module.app.medicalrecord.dao.MedicalRecorCheckDataDao;
|
|
||||||
import net.lab1024.sa.admin.module.app.medicalrecord.dao.MedicalRecorDao;
|
|
||||||
import net.lab1024.sa.admin.module.app.medicalrecord.dao.MedicalRecorDpmasDao;
|
|
||||||
import net.lab1024.sa.admin.module.app.medicalrecord.dao.MedicalRecorUserDao;
|
|
||||||
import net.lab1024.sa.admin.module.app.medicalrecord.domain.*;
|
import net.lab1024.sa.admin.module.app.medicalrecord.domain.*;
|
||||||
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CaseStatusEnum;
|
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CaseStatusEnum;
|
||||||
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CasetypeEnum;
|
import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CasetypeEnum;
|
||||||
@ -25,10 +22,13 @@ import net.lab1024.sa.common.module.support.config.domain.ConfigVO;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import static net.lab1024.sa.common.common.code.UserErrorCode.NO_PERMISSION_EDIT;
|
import static net.lab1024.sa.common.common.code.UserErrorCode.NO_PERMISSION_EDIT;
|
||||||
import static net.lab1024.sa.common.common.code.UserErrorCode.PROJECT_CLOSE;
|
import static net.lab1024.sa.common.common.code.UserErrorCode.PROJECT_CLOSE;
|
||||||
@ -51,6 +51,9 @@ public class MedicalRecordService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MedicalRecorCheckDataDao medicalRecorCheckDataDao;
|
private MedicalRecorCheckDataDao medicalRecorCheckDataDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MedicalRecorPrognosisDao medicalRecorPrognosisDao;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigService configService;
|
private ConfigService configService;
|
||||||
|
|
||||||
@ -68,15 +71,16 @@ public class MedicalRecordService {
|
|||||||
|
|
||||||
public MedicalRecordDetailVO getDetail(Long MedicalRecordId){
|
public MedicalRecordDetailVO getDetail(Long MedicalRecordId){
|
||||||
MedicalRecordDetailVO detail = medicalRecorDao.getDetail(MedicalRecordId);
|
MedicalRecordDetailVO detail = medicalRecorDao.getDetail(MedicalRecordId);
|
||||||
List<DpmsAddForm> dpmas = medicalRecorDpmasDao.getByCaseId(MedicalRecordId);
|
if (detail != null){
|
||||||
detail.setDpmas(dpmas);
|
List<DpmsAddForm> dpmas = medicalRecorDpmasDao.getByCaseId(MedicalRecordId);
|
||||||
|
detail.setDpmas(dpmas);
|
||||||
|
}
|
||||||
|
|
||||||
return detail;
|
return detail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public ResponseDTO<String> add(MedicalRecordAddForm addForm){
|
public ResponseDTO<String> add(MedicalRecordAddForm addForm){
|
||||||
|
|
||||||
|
|
||||||
ConfigVO caseNum = configService.getConfig(ConfigKeyEnum.CaseNum);
|
ConfigVO caseNum = configService.getConfig(ConfigKeyEnum.CaseNum);
|
||||||
int total = medicalRecorDao.getTotal();
|
int total = medicalRecorDao.getTotal();
|
||||||
if(Integer.parseInt(caseNum.getConfigValue()) <= total){
|
if(Integer.parseInt(caseNum.getConfigValue()) <= total){
|
||||||
@ -92,57 +96,29 @@ public class MedicalRecordService {
|
|||||||
/*************************前置 检查*****************************/
|
/*************************前置 检查*****************************/
|
||||||
|
|
||||||
ResponseDTO check = check(SmartBeanUtil.copy(addForm, MedicalRecordUpdateForm.class), expertId);
|
ResponseDTO check = check(SmartBeanUtil.copy(addForm, MedicalRecordUpdateForm.class), expertId);
|
||||||
|
|
||||||
if(!check.getOk()){
|
if(!check.getOk()){
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
|
||||||
//病历类型
|
// 病历-用户
|
||||||
Integer caseType = addForm.getCaseType();
|
MedicalRecordUserEntity medicalRecordUser = new MedicalRecordUserEntity();
|
||||||
List<DpmsAddForm> dpmas = addForm.getDpmas();
|
medicalRecordUser.setName(addForm.getName());
|
||||||
//入院时间
|
medicalRecordUser.setUid(addForm.getUid());
|
||||||
LocalDateTime admissionTime = addForm.getAdmissionTime();
|
medicalRecordUser.setSex(Integer.valueOf(addForm.getSex()));
|
||||||
|
medicalRecordUser.setAge(addForm.getAge());
|
||||||
|
medicalRecordUser.setExpertId(expertId);
|
||||||
|
medicalRecordUser.setCreateTime(LocalDateTime.now());
|
||||||
|
int res = medicalRecorUserDao.insert(medicalRecordUser);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
//患者id
|
// 病例
|
||||||
String uid = addForm.getUid();
|
MedicalRecordEntity medicalRecord = new MedicalRecordEntity();
|
||||||
|
medicalRecord.setUserId(medicalRecordUser.getId());
|
||||||
//临床资料 病历摘要 文字
|
medicalRecord.setAdmissionTime(addForm.getAdmissionTime());
|
||||||
String abstractStr = addForm.getAbstractStr();
|
medicalRecord.setCaseType(addForm.getCaseType());
|
||||||
|
|
||||||
//临床资料 病历摘要 图片
|
|
||||||
String abstractImg = addForm.getAbstractImg();
|
|
||||||
|
|
||||||
|
|
||||||
//治疗前 检测时间
|
|
||||||
LocalDateTime headTime = addForm.getHeadTime();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 检测时间
|
|
||||||
*/
|
|
||||||
LocalDateTime afterTime = addForm.getAfterTime();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************基本信息*****************************/
|
|
||||||
//姓名
|
|
||||||
String name = addForm.getName();
|
|
||||||
|
|
||||||
//性别
|
|
||||||
Integer sex = addForm.getSex();
|
|
||||||
|
|
||||||
//年龄
|
|
||||||
Integer age = addForm.getAge();
|
|
||||||
|
|
||||||
//基本信息图片
|
|
||||||
String baseImg = addForm.getBaseImg();
|
|
||||||
|
|
||||||
MedicalRecordUserEntity user = new MedicalRecordUserEntity(expertId, name, uid, sex, age, LocalDateTime.now());
|
|
||||||
medicalRecorUserDao.insert(user);
|
|
||||||
Long userId = user.getId();
|
|
||||||
/*************************病例主体***************************/
|
|
||||||
|
|
||||||
MedicalRecordEntity medicalRecord = new MedicalRecordEntity(userId, baseImg, admissionTime, caseType, expertId, LocalDateTime.now());
|
|
||||||
|
|
||||||
DateTime nowDate = DateUtil.date();
|
DateTime nowDate = DateUtil.date();
|
||||||
String statistics_date = DateUtil.format(nowDate, "yyyyMMdd");
|
String statistics_date = DateUtil.format(nowDate, "yyyyMMdd");
|
||||||
@ -151,165 +127,103 @@ public class MedicalRecordService {
|
|||||||
int quarter = DateUtil.quarter(nowDate);
|
int quarter = DateUtil.quarter(nowDate);
|
||||||
String statistics_quarter = statistics_year + quarter;
|
String statistics_quarter = statistics_year + quarter;
|
||||||
|
|
||||||
medicalRecord.setStatisticsDay(Integer.parseInt(statistics_date));
|
medicalRecord.setStatisticsDay(Integer.valueOf(statistics_date));
|
||||||
medicalRecord.setStatisticsMonth(Integer.parseInt(statistics_month));
|
medicalRecord.setStatisticsMonth(Integer.valueOf(statistics_month));
|
||||||
medicalRecord.setStatisticsQuarter(Integer.parseInt(statistics_quarter));
|
medicalRecord.setStatisticsQuarter(Integer.valueOf(statistics_quarter));
|
||||||
medicalRecord.setStatisticsYear(Integer.parseInt(statistics_year));
|
medicalRecord.setStatisticsYear(Integer.valueOf(statistics_year));
|
||||||
medicalRecorDao.insert(medicalRecord);
|
medicalRecord.setExpertId(expertId);
|
||||||
Long medicalRecordId = medicalRecord.getId();
|
medicalRecord.setCreateTime(LocalDateTime.now());
|
||||||
|
medicalRecord.setStatus(0);
|
||||||
|
medicalRecord.setMainDiagnose(addForm.getMainDiagnose());
|
||||||
|
medicalRecord.setDiseaseCause(addForm.getDiseaseCause());
|
||||||
|
medicalRecord.setSeductionReason(addForm.getSeductionReason());
|
||||||
|
res = medicalRecorDao.insert(medicalRecord);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
/*************************临床资料 病历摘要***************************/
|
// 病例-病历摘要
|
||||||
|
MedicalRecordAbstracEntity abstracEntity = new MedicalRecordAbstracEntity();
|
||||||
|
abstracEntity.setCaseId(medicalRecord.getId());
|
||||||
|
abstracEntity.setAbstractStr(addForm.getAbstractStr());
|
||||||
|
abstracEntity.setCreateTime(LocalDateTime.now());
|
||||||
|
res = medicalRecorAbstracDao.insert(abstracEntity);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 人工肝治疗
|
||||||
|
for(DpmsAddForm item: addForm.getDpmas()){
|
||||||
MedicalRecordAbstracEntity abstracEntity = new MedicalRecordAbstracEntity(medicalRecordId, abstractStr, abstractImg, LocalDateTime.now());
|
|
||||||
medicalRecorAbstracDao.insert(abstracEntity);
|
|
||||||
/*************************DPMAS***************************/
|
|
||||||
//DPMAS
|
|
||||||
|
|
||||||
for(DpmsAddForm item:dpmas){
|
|
||||||
MedicalRecordDpmsEntity dp = new MedicalRecordDpmsEntity();
|
MedicalRecordDpmsEntity dp = new MedicalRecordDpmsEntity();
|
||||||
dp.setDpmasImg(item.getDpmasImg());
|
dp.setDpmasImg(item.getDpmasImg());
|
||||||
dp.setCaseId(medicalRecordId);
|
dp.setCaseId(medicalRecord.getId());
|
||||||
dp.setTreatTime(item.getTreatTime());
|
dp.setTreatTime(item.getTreatTime());
|
||||||
medicalRecorDpmasDao.insert(dp);
|
res = medicalRecorDpmasDao.insert(dp);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*************************实验室数据***************************/
|
|
||||||
|
|
||||||
/**
|
// 实验室检测
|
||||||
* 治疗前 总胆红素(umol/L)
|
MedicalRecordCheckdataEntity medicalRecordCheckdata = new MedicalRecordCheckdataEntity();
|
||||||
*/
|
medicalRecordCheckdata.setCaseId(medicalRecord.getId());
|
||||||
String headTb = addForm.getHeadTb();
|
medicalRecordCheckdata.setHeadTime(addForm.getHeadTime());
|
||||||
|
medicalRecordCheckdata.setAfterTime(addForm.getAfterTime());
|
||||||
|
medicalRecordCheckdata.setLastTime(addForm.getLastTime());
|
||||||
|
medicalRecordCheckdata.setHeadTb(addForm.getHeadTb());
|
||||||
|
medicalRecordCheckdata.setAfterTb(addForm.getAfterTb());
|
||||||
|
medicalRecordCheckdata.setLastTb(addForm.getLastTb());
|
||||||
|
medicalRecordCheckdata.setHeadAlb(addForm.getHeadAlb());
|
||||||
|
medicalRecordCheckdata.setAfterAlb(addForm.getAfterAlb());
|
||||||
|
medicalRecordCheckdata.setLastAlb(addForm.getLastAlb());
|
||||||
|
medicalRecordCheckdata.setHeadDb(addForm.getHeadDb());
|
||||||
|
medicalRecordCheckdata.setAfterDb(addForm.getAfterDb());
|
||||||
|
medicalRecordCheckdata.setLastDb(addForm.getLastDb());
|
||||||
|
medicalRecordCheckdata.setHeadPta(addForm.getHeadPta());
|
||||||
|
medicalRecordCheckdata.setAfterPta(addForm.getAfterPta());
|
||||||
|
medicalRecordCheckdata.setLastPta(addForm.getLastPta());
|
||||||
|
medicalRecordCheckdata.setHeadIb(addForm.getHeadIb());
|
||||||
|
medicalRecordCheckdata.setAfterIb(addForm.getAfterIb());
|
||||||
|
medicalRecordCheckdata.setLastIb(addForm.getLastIb());
|
||||||
|
medicalRecordCheckdata.setHeadInr(addForm.getHeadInr());
|
||||||
|
medicalRecordCheckdata.setAfterInr(addForm.getAfterInr());
|
||||||
|
medicalRecordCheckdata.setLastInr(addForm.getLastInr());
|
||||||
|
medicalRecordCheckdata.setHeadAlt(addForm.getHeadAlt());
|
||||||
|
medicalRecordCheckdata.setAfterAlt(addForm.getAfterAlt());
|
||||||
|
medicalRecordCheckdata.setLastAlt(addForm.getLastAlt());
|
||||||
|
medicalRecordCheckdata.setHeadIl6(addForm.getHeadIl6());
|
||||||
|
medicalRecordCheckdata.setAfterIl6(addForm.getAfterIl6());
|
||||||
|
medicalRecordCheckdata.setLastIl6(addForm.getLastIl6());
|
||||||
|
medicalRecordCheckdata.setHeadAst(addForm.getHeadAst());
|
||||||
|
medicalRecordCheckdata.setAfterAst(addForm.getAfterAst());
|
||||||
|
medicalRecordCheckdata.setLastAst(addForm.getLastAst());
|
||||||
|
medicalRecordCheckdata.setHeadTnf(addForm.getHeadTnf());
|
||||||
|
medicalRecordCheckdata.setAfterTnf(addForm.getAfterTnf());
|
||||||
|
medicalRecordCheckdata.setLastTnf(addForm.getLastTnf());
|
||||||
|
medicalRecordCheckdata.setCheckImg(addForm.getCheckImg());
|
||||||
|
medicalRecordCheckdata.setCreateTime(LocalDateTime.now());
|
||||||
|
res = medicalRecorCheckDataDao.insert(medicalRecordCheckdata);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
// 疾病转归
|
||||||
* 治疗后 总胆红素(umol/L)
|
MedicalRecordPrognosisEntity medicalRecordPrognosis = new MedicalRecordPrognosisEntity();
|
||||||
*/
|
medicalRecordPrognosis.setCaseId(medicalRecord.getId());
|
||||||
String afterTb = addForm.getAfterTb();
|
medicalRecordPrognosis.setDischargeTime(addForm.getDischargeTime());
|
||||||
|
medicalRecordPrognosis.setDay(addForm.getDay());
|
||||||
|
medicalRecordPrognosis.setDischargeStatus(addForm.getDischargeStatus());
|
||||||
|
medicalRecordPrognosis.setDischargeSituation(addForm.getDischargeSituation());
|
||||||
|
res = medicalRecorPrognosisDao.insert(medicalRecordPrognosis);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 白蛋白(g/L)
|
|
||||||
*/
|
|
||||||
String headAlb = addForm.getHeadAlb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 白蛋白(g/L)
|
|
||||||
*/
|
|
||||||
String afterAlb = addForm.getAfterAlb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 直接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String headDb = addForm.getHeadDb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 直接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String afterDb = addForm.getAfterDb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 凝血酶原活动度 (%)
|
|
||||||
*/
|
|
||||||
String headPta = addForm.getHeadPta();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 凝血酶原活动度 (%)
|
|
||||||
*/
|
|
||||||
String afterPta = addForm.getAfterPta();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 间接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String headIb = addForm.getHeadIb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 间接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String afterIb = addForm.getAfterIb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 国际标准化比值 (INR)
|
|
||||||
*/
|
|
||||||
String headInr = addForm.getHeadInr();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 国际标准化比值 (INR)
|
|
||||||
*/
|
|
||||||
String afterInr = addForm.getAfterInr();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 谷丙转氨 (U/L)
|
|
||||||
*/
|
|
||||||
String headAlt = addForm.getHeadAlt();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 谷丙转氨 (U/L)
|
|
||||||
*/
|
|
||||||
String afterAlt = addForm.getAfterAlt();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 白介素6(ng/L)
|
|
||||||
*/
|
|
||||||
String headIl6 = addForm.getHeadIl6();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 白介素6(ng/L)
|
|
||||||
*/
|
|
||||||
String afterIl6 = addForm.getAfterIl6();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 谷草转氨酶 (U/L)
|
|
||||||
*/
|
|
||||||
String headAst = addForm.getHeadAst();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 谷草转氨酶 (U/L)
|
|
||||||
*/
|
|
||||||
String afterAst = addForm.getAfterAst();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 肿瘤坏死因子α(μg/L)
|
|
||||||
*/
|
|
||||||
String headTnf = addForm.getHeadTnf();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 肿瘤坏死因子α(μg/L)
|
|
||||||
*/
|
|
||||||
String afterTnf = addForm.getAfterTnf();
|
|
||||||
|
|
||||||
//实验室检测 病历摘要 图片
|
|
||||||
String checkImg = addForm.getCheckImg();
|
|
||||||
|
|
||||||
MedicalRecordCheckdataEntity CheckdataEntity = MedicalRecordCheckdataEntity.builder()
|
|
||||||
.afterAlb(afterAlb)
|
|
||||||
.afterAlt(afterAlt)
|
|
||||||
.afterAst(afterAst)
|
|
||||||
.afterDb(afterDb)
|
|
||||||
.afterIb(afterIb)
|
|
||||||
.afterIl6(afterIl6)
|
|
||||||
.afterInr(afterInr)
|
|
||||||
.afterPta(afterPta)
|
|
||||||
.afterTb(afterTb)
|
|
||||||
.afterTime(afterTime)
|
|
||||||
.afterTnf(afterTnf)
|
|
||||||
.headAst(headAst)
|
|
||||||
.headDb(headDb)
|
|
||||||
.headIb(headIb)
|
|
||||||
.headIl6(headIl6)
|
|
||||||
.headAlb(headAlb)
|
|
||||||
.headAlt(headAlt)
|
|
||||||
.headInr(headInr)
|
|
||||||
.headPta(headPta)
|
|
||||||
.headTb(headTb)
|
|
||||||
.headTime(headTime)
|
|
||||||
.headTnf(headTnf)
|
|
||||||
.headAlt(headAlt)
|
|
||||||
.headAlt(headAlt)
|
|
||||||
.checkImg(checkImg)
|
|
||||||
.createTime(LocalDateTime.now())
|
|
||||||
.caseId(medicalRecordId)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
medicalRecorCheckDataDao.insert(CheckdataEntity);
|
|
||||||
return ResponseDTO.app_ok();
|
return ResponseDTO.app_ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,356 +231,259 @@ public class MedicalRecordService {
|
|||||||
public ResponseDTO<String> update(MedicalRecordUpdateForm updateForm){
|
public ResponseDTO<String> update(MedicalRecordUpdateForm updateForm){
|
||||||
Long expertId = SmartRequestUtil.getRequestUserId();
|
Long expertId = SmartRequestUtil.getRequestUserId();
|
||||||
Long medicalRecordId = updateForm.getId();
|
Long medicalRecordId = updateForm.getId();
|
||||||
MedicalRecordListVO recorDaoById = medicalRecorDao.getById(medicalRecordId);
|
|
||||||
if(recorDaoById == null){
|
// 病例
|
||||||
return ResponseDTO.userErrorParam();
|
LambdaQueryWrapper<MedicalRecordEntity> medicalRecordQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
medicalRecordQueryWrapper.eq(MedicalRecordEntity::getId, medicalRecordId);
|
||||||
|
MedicalRecordEntity medicalRecord = medicalRecorDao.selectOne(medicalRecordQueryWrapper);
|
||||||
|
if (medicalRecord == null) {
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
}
|
}
|
||||||
/*************************前置 检查*****************************/
|
|
||||||
|
|
||||||
Integer status = recorDaoById.getStatus();
|
if (medicalRecord.getStatus() != 0){
|
||||||
|
|
||||||
if(!status.equals(CaseStatusEnum.REFUSE.getValue())){
|
|
||||||
return ResponseDTO.error(NO_PERMISSION_EDIT);
|
return ResponseDTO.error(NO_PERMISSION_EDIT);
|
||||||
}
|
}
|
||||||
ResponseDTO check = check(updateForm, expertId);
|
|
||||||
|
|
||||||
|
/*************************前置 检查*****************************/
|
||||||
|
|
||||||
|
ResponseDTO check = check(updateForm, expertId);
|
||||||
if(!check.getOk()){
|
if(!check.getOk()){
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
|
||||||
//病历类型
|
medicalRecord.setAdmissionTime(updateForm.getAdmissionTime());
|
||||||
Integer caseType = updateForm.getCaseType();
|
medicalRecord.setCaseType(updateForm.getCaseType());
|
||||||
List<DpmsAddForm> dpmas = updateForm.getDpmas();
|
medicalRecord.setMainDiagnose(updateForm.getMainDiagnose());
|
||||||
//入院时间
|
medicalRecord.setDiseaseCause(updateForm.getDiseaseCause());
|
||||||
LocalDateTime admissionTime = updateForm.getAdmissionTime();
|
medicalRecord.setSeductionReason(updateForm.getSeductionReason());
|
||||||
|
|
||||||
//临床资料 病历摘要 文字
|
|
||||||
String abstractStr = updateForm.getAbstractStr();
|
|
||||||
|
|
||||||
//临床资料 病历摘要 图片
|
|
||||||
String abstractImg = updateForm.getAbstractImg();
|
|
||||||
|
|
||||||
|
|
||||||
//治疗前 检测时间
|
|
||||||
LocalDateTime headTime = updateForm.getHeadTime();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 检测时间
|
|
||||||
*/
|
|
||||||
LocalDateTime afterTime = updateForm.getAfterTime();
|
|
||||||
|
|
||||||
/*************************基本信息*****************************/
|
|
||||||
//姓名
|
|
||||||
String name = updateForm.getName();
|
|
||||||
|
|
||||||
//性别
|
|
||||||
Integer sex = updateForm.getSex();
|
|
||||||
|
|
||||||
//年龄
|
|
||||||
Integer age = updateForm.getAge();
|
|
||||||
|
|
||||||
//基本信息图片
|
|
||||||
String baseImg = updateForm.getBaseImg();
|
|
||||||
|
|
||||||
//患者id
|
|
||||||
String uid = updateForm.getUid();
|
|
||||||
|
|
||||||
Long userId = recorDaoById.getUserId();
|
|
||||||
MedicalRecordUserEntity user = new MedicalRecordUserEntity(expertId, name, uid, sex, age, LocalDateTime.now());
|
|
||||||
user.setId(userId);
|
|
||||||
medicalRecorUserDao.updateById(user);
|
|
||||||
/*************************病例主体***************************/
|
|
||||||
|
|
||||||
MedicalRecordEntity medicalRecord = new MedicalRecordEntity(medicalRecordId, userId, baseImg, admissionTime, caseType, expertId, CaseStatusEnum.WAIT.getValue(), LocalDateTime.now());
|
|
||||||
medicalRecorDao.updateById(medicalRecord);
|
medicalRecorDao.updateById(medicalRecord);
|
||||||
/*************************临床资料 病历摘要***************************/
|
|
||||||
|
|
||||||
medicalRecorAbstracDao.deleteByCaseId(medicalRecordId);
|
// 病历-用户
|
||||||
MedicalRecordAbstracEntity abstracEntity = new MedicalRecordAbstracEntity(medicalRecordId, abstractStr, abstractImg, LocalDateTime.now());
|
LambdaQueryWrapper<MedicalRecordUserEntity> medicalRecordUserQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
medicalRecorAbstracDao.insert(abstracEntity);
|
medicalRecordUserQueryWrapper.eq(MedicalRecordUserEntity::getId, medicalRecord.getUserId());
|
||||||
/*************************DPMAS***************************/
|
MedicalRecordUserEntity medicalRecordUser = medicalRecorUserDao.selectOne(medicalRecordUserQueryWrapper);
|
||||||
//DPMAS
|
if (medicalRecordUser == null) {
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
medicalRecordUser.setName(updateForm.getName());
|
||||||
|
medicalRecordUser.setUid(updateForm.getUid());
|
||||||
|
medicalRecordUser.setSex(Integer.valueOf(updateForm.getSex()));
|
||||||
|
medicalRecordUser.setAge(updateForm.getAge());
|
||||||
|
medicalRecorUserDao.updateById(medicalRecordUser);
|
||||||
|
|
||||||
|
// 病例-病历摘要
|
||||||
|
LambdaQueryWrapper<MedicalRecordAbstracEntity> medicalRecordAbstracQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
medicalRecordAbstracQueryWrapper.eq(MedicalRecordAbstracEntity::getCaseId, medicalRecord.getId());
|
||||||
|
MedicalRecordAbstracEntity medicalRecorAbstrac = medicalRecorAbstracDao.selectOne(medicalRecordAbstracQueryWrapper);
|
||||||
|
if (medicalRecorAbstrac == null) {
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Objects.equals(updateForm.getAbstractStr(), medicalRecorAbstrac.getAbstractStr())){
|
||||||
|
medicalRecorAbstrac.setAbstractStr(updateForm.getAbstractStr());
|
||||||
|
medicalRecorAbstracDao.updateById(medicalRecorAbstrac);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 人工肝治疗
|
||||||
medicalRecorDpmasDao.deleteByCaseId(medicalRecordId);
|
medicalRecorDpmasDao.deleteByCaseId(medicalRecordId);
|
||||||
for(DpmsAddForm item:dpmas){
|
for(DpmsAddForm item: updateForm.getDpmas()){
|
||||||
MedicalRecordDpmsEntity dp = new MedicalRecordDpmsEntity();
|
MedicalRecordDpmsEntity dp = new MedicalRecordDpmsEntity();
|
||||||
dp.setDpmasImg(item.getDpmasImg());
|
dp.setDpmasImg(item.getDpmasImg());
|
||||||
dp.setCaseId(medicalRecordId);
|
dp.setCaseId(medicalRecord.getId());
|
||||||
dp.setTreatTime(item.getTreatTime());
|
dp.setTreatTime(item.getTreatTime());
|
||||||
medicalRecorDpmasDao.insert(dp);
|
int res = medicalRecorDpmasDao.insert(dp);
|
||||||
|
if (res <= 0){
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*************************实验室数据***************************/
|
|
||||||
|
|
||||||
/**
|
// 实验室检测
|
||||||
* 治疗前 总胆红素(umol/L)
|
LambdaQueryWrapper<MedicalRecordCheckdataEntity> medicalRecordCheckDataQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
*/
|
medicalRecordCheckDataQueryWrapper.eq(MedicalRecordCheckdataEntity::getCaseId, medicalRecord.getId());
|
||||||
String headTb = updateForm.getHeadTb();
|
MedicalRecordCheckdataEntity medicalRecordCheckData = medicalRecorCheckDataDao.selectOne(medicalRecordCheckDataQueryWrapper);
|
||||||
|
if (medicalRecordCheckData == null) {
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
medicalRecordCheckData.setHeadTime(updateForm.getHeadTime());
|
||||||
* 治疗后 总胆红素(umol/L)
|
medicalRecordCheckData.setAfterTime(updateForm.getAfterTime());
|
||||||
*/
|
medicalRecordCheckData.setLastTime(updateForm.getLastTime());
|
||||||
String afterTb = updateForm.getAfterTb();
|
medicalRecordCheckData.setHeadTb(updateForm.getHeadTb());
|
||||||
|
medicalRecordCheckData.setAfterTb(updateForm.getAfterTb());
|
||||||
|
medicalRecordCheckData.setLastTb(updateForm.getLastTb());
|
||||||
|
medicalRecordCheckData.setHeadAlb(updateForm.getHeadAlb());
|
||||||
|
medicalRecordCheckData.setAfterAlb(updateForm.getAfterAlb());
|
||||||
|
medicalRecordCheckData.setLastAlb(updateForm.getLastAlb());
|
||||||
|
medicalRecordCheckData.setHeadDb(updateForm.getHeadDb());
|
||||||
|
medicalRecordCheckData.setAfterDb(updateForm.getAfterDb());
|
||||||
|
medicalRecordCheckData.setLastDb(updateForm.getLastDb());
|
||||||
|
medicalRecordCheckData.setHeadPta(updateForm.getHeadPta());
|
||||||
|
medicalRecordCheckData.setAfterPta(updateForm.getAfterPta());
|
||||||
|
medicalRecordCheckData.setLastPta(updateForm.getLastPta());
|
||||||
|
medicalRecordCheckData.setHeadIb(updateForm.getHeadIb());
|
||||||
|
medicalRecordCheckData.setAfterIb(updateForm.getAfterIb());
|
||||||
|
medicalRecordCheckData.setLastIb(updateForm.getLastIb());
|
||||||
|
medicalRecordCheckData.setHeadInr(updateForm.getHeadInr());
|
||||||
|
medicalRecordCheckData.setAfterInr(updateForm.getAfterInr());
|
||||||
|
medicalRecordCheckData.setLastInr(updateForm.getLastInr());
|
||||||
|
medicalRecordCheckData.setHeadAlt(updateForm.getHeadAlt());
|
||||||
|
medicalRecordCheckData.setAfterAlt(updateForm.getAfterAlt());
|
||||||
|
medicalRecordCheckData.setLastAlt(updateForm.getLastAlt());
|
||||||
|
medicalRecordCheckData.setHeadIl6(updateForm.getHeadIl6());
|
||||||
|
medicalRecordCheckData.setAfterIl6(updateForm.getAfterIl6());
|
||||||
|
medicalRecordCheckData.setLastIl6(updateForm.getLastIl6());
|
||||||
|
medicalRecordCheckData.setHeadAst(updateForm.getHeadAst());
|
||||||
|
medicalRecordCheckData.setAfterAst(updateForm.getAfterAst());
|
||||||
|
medicalRecordCheckData.setLastAst(updateForm.getLastAst());
|
||||||
|
medicalRecordCheckData.setHeadTnf(updateForm.getHeadTnf());
|
||||||
|
medicalRecordCheckData.setAfterTnf(updateForm.getAfterTnf());
|
||||||
|
medicalRecordCheckData.setLastTnf(updateForm.getLastTnf());
|
||||||
|
medicalRecordCheckData.setCheckImg(updateForm.getCheckImg());
|
||||||
|
medicalRecorCheckDataDao.updateById(medicalRecordCheckData);
|
||||||
|
|
||||||
/**
|
// 疾病转归
|
||||||
* 治疗前 白蛋白(g/L)
|
LambdaQueryWrapper<MedicalRecordPrognosisEntity> medicalRecordPrognosisQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
*/
|
medicalRecordPrognosisQueryWrapper.eq(MedicalRecordPrognosisEntity::getCaseId, medicalRecord.getId());
|
||||||
String headAlb = updateForm.getHeadAlb();
|
MedicalRecordPrognosisEntity medicalRecordPrognosis = medicalRecorPrognosisDao.selectOne(medicalRecordPrognosisQueryWrapper);
|
||||||
|
if (medicalRecordPrognosis == null) {
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return ResponseDTO.userErrorParam("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
medicalRecordPrognosis.setDischargeTime(updateForm.getDischargeTime());
|
||||||
* 治疗后 白蛋白(g/L)
|
medicalRecordPrognosis.setDay(updateForm.getDay());
|
||||||
*/
|
medicalRecordPrognosis.setDischargeStatus(updateForm.getDischargeStatus());
|
||||||
String afterAlb = updateForm.getAfterAlb();
|
medicalRecordPrognosis.setDischargeSituation(updateForm.getDischargeSituation());
|
||||||
|
medicalRecorPrognosisDao.updateById(medicalRecordPrognosis);
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 直接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String headDb = updateForm.getHeadDb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 直接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String afterDb = updateForm.getAfterDb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 凝血酶原活动度 (%)
|
|
||||||
*/
|
|
||||||
String headPta = updateForm.getHeadPta();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 凝血酶原活动度 (%)
|
|
||||||
*/
|
|
||||||
String afterPta = updateForm.getAfterPta();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 间接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String headIb = updateForm.getHeadIb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 间接胆红素(umol/L)
|
|
||||||
*/
|
|
||||||
String afterIb = updateForm.getAfterIb();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 国际标准化比值 (INR)
|
|
||||||
*/
|
|
||||||
String headInr = updateForm.getHeadInr();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 国际标准化比值 (INR)
|
|
||||||
*/
|
|
||||||
String afterInr = updateForm.getAfterInr();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 谷丙转氨 (U/L)
|
|
||||||
*/
|
|
||||||
String headAlt = updateForm.getHeadAlt();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 谷丙转氨 (U/L)
|
|
||||||
*/
|
|
||||||
String afterAlt = updateForm.getAfterAlt();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 白介素6(ng/L)
|
|
||||||
*/
|
|
||||||
String headIl6 = updateForm.getHeadIl6();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 白介素6(ng/L)
|
|
||||||
*/
|
|
||||||
String afterIl6 = updateForm.getAfterIl6();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 谷草转氨酶 (U/L)
|
|
||||||
*/
|
|
||||||
String headAst = updateForm.getHeadAst();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 谷草转氨酶 (U/L)
|
|
||||||
*/
|
|
||||||
String afterAst = updateForm.getAfterAst();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗前 肿瘤坏死因子α(μg/L)
|
|
||||||
*/
|
|
||||||
String headTnf = updateForm.getHeadTnf();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 肿瘤坏死因子α(μg/L)
|
|
||||||
*/
|
|
||||||
String afterTnf = updateForm.getAfterTnf();
|
|
||||||
|
|
||||||
//实验室检测 病历摘要 图片
|
|
||||||
String checkImg = updateForm.getCheckImg();
|
|
||||||
|
|
||||||
MedicalRecordCheckdataEntity CheckdataEntity = MedicalRecordCheckdataEntity.builder()
|
|
||||||
.afterAlb(afterAlb)
|
|
||||||
.afterAlt(afterAlt)
|
|
||||||
.afterAst(afterAst)
|
|
||||||
.afterDb(afterDb)
|
|
||||||
.afterIb(afterIb)
|
|
||||||
.afterIl6(afterIl6)
|
|
||||||
.afterInr(afterInr)
|
|
||||||
.afterPta(afterPta)
|
|
||||||
.afterTb(afterTb)
|
|
||||||
.afterTime(afterTime)
|
|
||||||
.afterTnf(afterTnf)
|
|
||||||
.headAst(headAst)
|
|
||||||
.headDb(headDb)
|
|
||||||
.headIb(headIb)
|
|
||||||
.headIl6(headIl6)
|
|
||||||
.headAlb(headAlb)
|
|
||||||
.headAlt(headAlt)
|
|
||||||
.headInr(headInr)
|
|
||||||
.headPta(headPta)
|
|
||||||
.headTb(headTb)
|
|
||||||
.headTime(headTime)
|
|
||||||
.headTnf(headTnf)
|
|
||||||
.headAlt(headAlt)
|
|
||||||
.headAlt(headAlt)
|
|
||||||
.checkImg(checkImg)
|
|
||||||
.createTime(LocalDateTime.now())
|
|
||||||
.caseId(medicalRecordId)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
medicalRecorCheckDataDao.deleteByCaseId(medicalRecordId);
|
|
||||||
|
|
||||||
medicalRecorCheckDataDao.insert(CheckdataEntity);
|
|
||||||
return ResponseDTO.app_ok();
|
return ResponseDTO.app_ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检测参数
|
||||||
public ResponseDTO check(MedicalRecordUpdateForm form, Long expertId){
|
public ResponseDTO check(MedicalRecordUpdateForm form, Long expertId){
|
||||||
|
|
||||||
ConfigVO caseSwitch = configService.getConfig(ConfigKeyEnum.CaseSwitch);
|
ConfigVO caseSwitch = configService.getConfig(ConfigKeyEnum.CaseSwitch);
|
||||||
if(caseSwitch.getConfigValue().equals("false")){
|
if(caseSwitch.getConfigValue().equals("false")){
|
||||||
return ResponseDTO.error(PROJECT_CLOSE);
|
return ResponseDTO.error(PROJECT_CLOSE);
|
||||||
}
|
}
|
||||||
/*************************前置 检查*****************************/
|
|
||||||
|
|
||||||
|
// 检测基本信息
|
||||||
|
ResponseDTO check = checkCase(form, expertId);
|
||||||
|
if(!check.getOk()){
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测人工肝治疗
|
||||||
|
check = checkDpms(form, expertId);
|
||||||
|
if(!check.getOk()){
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测实验室检测
|
||||||
|
check = checkData(form, expertId);
|
||||||
|
if(!check.getOk()){
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测疾病转归
|
||||||
|
check = checkPrognosis(form, expertId);
|
||||||
|
if(!check.getOk()){
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseDTO.app_ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测基本信息
|
||||||
|
public ResponseDTO checkCase(MedicalRecordUpdateForm form, Long expertId){
|
||||||
//入院时间
|
//入院时间
|
||||||
LocalDateTime admissionTime = form.getAdmissionTime();
|
LocalDateTime admissionTime = form.getAdmissionTime();
|
||||||
//患者id
|
//患者id
|
||||||
String uid = form.getUid();
|
String uid = form.getUid();
|
||||||
//获取全部病例
|
|
||||||
List<MedicalRecordDTO> admissionTimeByUid = medicalRecorDao.getAdmissionTimeByUid(expertId, uid);
|
// 获取该患者的全部病例
|
||||||
for(MedicalRecordDTO dto:admissionTimeByUid){
|
LambdaQueryWrapper<MedicalRecordEntity> medicalRecordQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
if(dto.getId().equals(form.getId())){
|
medicalRecordQueryWrapper.eq(MedicalRecordEntity::getUserId, uid);
|
||||||
continue;
|
List<MedicalRecordEntity> medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper);
|
||||||
}
|
for (MedicalRecordEntity medicalRecord: medicalRecords) {
|
||||||
long daysDiff = Duration.between(dto.getAdmissionTime(), admissionTime).toDays();
|
// 判断是否是今天
|
||||||
if(Math.abs(daysDiff) < 30){
|
// 同一个患者ID可以提交多份病例(入院时间不同),所有病例对比
|
||||||
return ResponseDTO.userErrorParam("同一患者记录入院时间必须间隔30天以上!");
|
boolean isSameDate = medicalRecord.getAdmissionTime().toLocalDate().isEqual(admissionTime.toLocalDate());
|
||||||
|
if (isSameDate){
|
||||||
|
return ResponseDTO.userErrorParam("患者入院时间和其他病例出现重复");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String baseImg = form.getBaseImg();
|
medicalRecordQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
String[] baseImgNum = baseImg.split(",");
|
medicalRecordQueryWrapper.eq(MedicalRecordEntity::getExpertId, expertId);
|
||||||
if(baseImgNum.length > 6){
|
medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper);
|
||||||
return ResponseDTO.userErrorParam("病案照片应为(1-6张)!");
|
if (medicalRecords.size() >= 20){
|
||||||
|
return ResponseDTO.userErrorParam("每人参与病例征集不得超过20例");
|
||||||
}
|
}
|
||||||
|
|
||||||
//临床资料 病历摘要 文字
|
return ResponseDTO.app_ok();
|
||||||
String abstractStr = form.getAbstractStr();
|
}
|
||||||
|
|
||||||
//临床资料 病历摘要 图片
|
// 检测人工肝治疗
|
||||||
String abstractImg = form.getAbstractImg();
|
public ResponseDTO checkDpms(MedicalRecordUpdateForm form, Long expertId){
|
||||||
|
|
||||||
if(StrUtil.isBlank(abstractStr+abstractImg)){
|
|
||||||
return ResponseDTO.userErrorParam("临床资料 病历摘要或者病历图片至少上传一项");
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] abstractImgNum = abstractImg.split(",");
|
|
||||||
if(abstractImgNum.length > 6){
|
|
||||||
return ResponseDTO.userErrorParam("病历摘要图片照片应为(1-6张)!");
|
|
||||||
}
|
|
||||||
//病历类型
|
|
||||||
Integer caseType = form.getCaseType();
|
|
||||||
List<DpmsAddForm> dpmas = form.getDpmas();
|
List<DpmsAddForm> dpmas = form.getDpmas();
|
||||||
|
|
||||||
int size = dpmas.size();
|
// 治疗时间
|
||||||
|
LocalDateTime target = LocalDateTime.of(2024, 10, 1, 0, 0);
|
||||||
if(caseType == CasetypeEnum.BEFORE.getValue()){
|
boolean isAfter = dpmas.get(0).getTreatTime().isAfter(target);
|
||||||
if(size == 0){
|
if (!isAfter){
|
||||||
return ResponseDTO.userErrorParam("至少上传1次DPMAS数据!");
|
return ResponseDTO.userErrorParam("第一次治疗时间需在2024年10月1日之后");
|
||||||
}
|
|
||||||
}
|
|
||||||
if(caseType == CasetypeEnum.DEFAULT.getValue()){
|
|
||||||
if(size < 4){
|
|
||||||
return ResponseDTO.userErrorParam("至少上传4次DPMAS数据!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LocalDateTime firstTreatTime = dpmas.get(0).getTreatTime();//第一次治疗时间
|
|
||||||
|
|
||||||
//治疗时间 2024
|
|
||||||
|
|
||||||
int headYear = firstTreatTime.getYear();
|
|
||||||
|
|
||||||
if(headYear != 2024){
|
|
||||||
return ResponseDTO.userErrorParam("治疗时间:限制在2024年1月1日-2024年12月31日!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDateTime lastTreatTime = dpmas.get(size-1).getTreatTime();//最后一次治疗时间
|
isAfter = dpmas.get(0).getTreatTime().isAfter(form.getAdmissionTime());
|
||||||
|
if (!isAfter){
|
||||||
if(firstTreatTime.toLocalDate().compareTo(admissionTime.toLocalDate()) < 0){
|
return ResponseDTO.userErrorParam("第1次治疗时间需在入院时间后");
|
||||||
return ResponseDTO.userErrorParam("第1次治疗时间比患者基本信息入院时间后!");
|
|
||||||
}
|
}
|
||||||
LocalDateTime temp = firstTreatTime;
|
|
||||||
for(int i=0;i<dpmas.size();i++){
|
for (int i = 1; i < dpmas.size(); i++) {
|
||||||
LocalDateTime treatTime = dpmas.get(i).getTreatTime();
|
LocalDateTime previous = dpmas.get(i - 1).getTreatTime();
|
||||||
if(i > 0){
|
LocalDateTime current = dpmas.get(i).getTreatTime();
|
||||||
if(!treatTime.isAfter(temp)){
|
|
||||||
return ResponseDTO.userErrorParam("第"+(i+1)+"次治疗时间必须在第"+i+"次治疗时间后!");
|
if (current.isBefore(previous) || current.isEqual(previous)) {
|
||||||
}
|
throw new IllegalArgumentException("第 " + (i + 1) + " 次治疗时间必须晚于第 " + i + " 次");
|
||||||
}
|
}
|
||||||
|
|
||||||
String dpmasImg = dpmas.get(i).getDpmasImg();
|
String dpmasImg = dpmas.get(i - 1).getDpmasImg();
|
||||||
String[] dpmasImgNum = dpmasImg.split(",");
|
String[] dpmasImgNum = dpmasImg.split(",");
|
||||||
if(dpmasImgNum.length > 3){
|
if(dpmasImgNum.length > 3){
|
||||||
return ResponseDTO.userErrorParam("第"+(i+1)+"次治疗照片应为(1-3张)!");
|
return ResponseDTO.userErrorParam("第"+(i)+"次治疗照片应为(1-3张)!");
|
||||||
}
|
|
||||||
temp = treatTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
int lastYear = lastTreatTime.getYear();
|
|
||||||
if(lastYear != 2024){
|
|
||||||
return ResponseDTO.userErrorParam("治疗时间:限制在2024年1月1日-2024年12月31日!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//治疗前 检测时间
|
|
||||||
LocalDateTime headTime = form.getHeadTime();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 治疗后 检测时间
|
|
||||||
*/
|
|
||||||
LocalDateTime afterTime = form.getAfterTime();
|
|
||||||
|
|
||||||
if(!afterTime.isAfter(headTime)){
|
|
||||||
return ResponseDTO.userErrorParam("治疗前检测时间:应该小于治疗后检测时间!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(caseType == CasetypeEnum.BEFORE.getValue()){
|
|
||||||
if((headTime.toLocalDate().compareTo(admissionTime.toLocalDate())) < 0 || (headTime.toLocalDate().compareTo(firstTreatTime.toLocalDate())) > 0){
|
|
||||||
return ResponseDTO.userErrorParam("治疗前检测时间:应该在入院时间与第1次治疗时间之间!");
|
|
||||||
}
|
|
||||||
if(size == 1){
|
|
||||||
if(afterTime.toLocalDate().compareTo(firstTreatTime.toLocalDate()) < 0){
|
|
||||||
return ResponseDTO.userErrorParam("治疗后检测时间:应该在第1次治疗时间之后");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//治疗后检测时间:应该在第一次治疗时间之后,如果有第二次治疗时间,在应该在第一次与第二次治疗时间之间
|
|
||||||
if(size >= 2){
|
|
||||||
LocalDateTime secondTreatTime = dpmas.get(1).getTreatTime();//第2次治疗时间
|
|
||||||
if((afterTime.toLocalDate().compareTo(firstTreatTime.toLocalDate())) < 0 || (afterTime.compareTo(secondTreatTime)) > 0){
|
|
||||||
return ResponseDTO.userErrorParam("治疗后检测时间:应该在第1次与第2次治疗时间之间");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(caseType == CasetypeEnum.DEFAULT.getValue()){
|
|
||||||
if((headTime.toLocalDate().compareTo(admissionTime.toLocalDate())) < 0 || (headTime.toLocalDate().compareTo(firstTreatTime.toLocalDate())) > 0){
|
return ResponseDTO.app_ok();
|
||||||
return ResponseDTO.userErrorParam("治疗前检测时间:应该在入院时间与第1次治疗时间之间!");
|
}
|
||||||
}
|
|
||||||
if(afterTime.toLocalDate().compareTo(lastTreatTime.toLocalDate()) < 0){
|
// 实验室检测
|
||||||
return ResponseDTO.userErrorParam("治疗后检测时间:应该在最后1次治疗时间之后");
|
public ResponseDTO checkData(MedicalRecordUpdateForm form, Long expertId){
|
||||||
|
if (form.getHeadTime() == null) {
|
||||||
|
return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (form.getAfterTime() == null) {
|
||||||
|
return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!form.getHeadTime().isBefore(form.getAfterTime())) {
|
||||||
|
return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间需早于首次人工肝治疗后检测时间");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (form.getLastTime() != null && !form.getAfterTime().isBefore(form.getLastTime())) {
|
||||||
|
return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间需早于首次人工肝治疗后检测时间");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (form.getDpmas().size() > 1){
|
||||||
|
if (form.getLastTime() == null){
|
||||||
|
return ResponseDTO.userErrorParam("人工肝治疗次数大于1,需填入最后一次人工肝治疗后检测时间");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -675,6 +492,38 @@ public class MedicalRecordService {
|
|||||||
if(checkImgNum.length > 6){
|
if(checkImgNum.length > 6){
|
||||||
return ResponseDTO.userErrorParam("实验室检测照片应为(1-6张)!");
|
return ResponseDTO.userErrorParam("实验室检测照片应为(1-6张)!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ResponseDTO.app_ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 疾病转归
|
||||||
|
public ResponseDTO checkPrognosis(MedicalRecordUpdateForm form, Long expertId){
|
||||||
|
LocalDateTime admissionTime = form.getAdmissionTime();
|
||||||
|
LocalDateTime dischargeTime = form.getDischargeTime();
|
||||||
|
List<DpmsAddForm> dpmas = form.getDpmas();
|
||||||
|
|
||||||
|
if (admissionTime == null || dischargeTime == null) {
|
||||||
|
throw new IllegalArgumentException("入院时间和出院时间不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 出院时间大于住院时间
|
||||||
|
boolean isAfter = dischargeTime.isAfter(admissionTime);
|
||||||
|
if (!isAfter){
|
||||||
|
return ResponseDTO.userErrorParam("疾病转归:出院时间需大于住院时间");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < dpmas.size(); i++) {
|
||||||
|
LocalDateTime treatTime = dpmas.get(i).getTreatTime();
|
||||||
|
|
||||||
|
if (treatTime == null) {
|
||||||
|
return ResponseDTO.userErrorParam("人工肝治疗:" + "第 " + (i + 1) + " 次治疗时间不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (treatTime.isBefore(admissionTime) || treatTime.isAfter(dischargeTime)) {
|
||||||
|
return ResponseDTO.userErrorParam("人工肝治疗:" + "第 " + (i + 1) + " 次治疗时间不在入院和出院时间之间");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ResponseDTO.app_ok();
|
return ResponseDTO.app_ok();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import lombok.Getter;
|
|||||||
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 病历类型
|
* 治疗类型
|
||||||
*
|
*
|
||||||
* @Author HMM
|
* @Author HMM
|
||||||
* @Date 2024-01-11T15:18:32
|
* @Date 2024-01-11T15:18:32
|
||||||
@ -15,8 +15,8 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
public enum CasetypeEnum implements BaseEnum {
|
public enum CasetypeEnum implements BaseEnum {
|
||||||
DEFAULT(1, "四次及以上疗程化"),
|
DEFAULT(1, "DPMAS及联合模式"),
|
||||||
BEFORE(2, "早前期(INR≤1.5)"),
|
BEFORE(2, "CA280及联合模式"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final Integer value;
|
private final Integer value;
|
||||||
|
|||||||
@ -33,12 +33,13 @@
|
|||||||
t_caseplatform_case.*,
|
t_caseplatform_case.*,
|
||||||
t_caseplatform_user.*,
|
t_caseplatform_user.*,
|
||||||
t_caseplatform_case_abstract.*,
|
t_caseplatform_case_abstract.*,
|
||||||
t_caseplatform_case_checkdata.*
|
t_caseplatform_case_checkdata.*,
|
||||||
t_caseplatform_case_prognosis.*
|
t_caseplatform_case_prognosis.*
|
||||||
FROM t_caseplatform_case
|
FROM t_caseplatform_case
|
||||||
left join t_caseplatform_user on t_caseplatform_case.user_id = t_caseplatform_user.id
|
left join t_caseplatform_user on t_caseplatform_case.user_id = t_caseplatform_user.id
|
||||||
left join t_caseplatform_case_abstract on t_caseplatform_case_abstract.case_id = t_caseplatform_case.id
|
left join t_caseplatform_case_abstract on t_caseplatform_case_abstract.case_id = t_caseplatform_case.id
|
||||||
left join t_caseplatform_case_checkdata on t_caseplatform_case_checkdata.case_id = t_caseplatform_case.id
|
left join t_caseplatform_case_checkdata on t_caseplatform_case_checkdata.case_id = t_caseplatform_case.id
|
||||||
|
left join t_caseplatform_case_prognosis on t_caseplatform_case_prognosis.case_id = t_caseplatform_case.id
|
||||||
where t_caseplatform_case.id = #{MedicalRecordId}
|
where t_caseplatform_case.id = #{MedicalRecordId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
package net.lab1024.sa.common.common.enumeration;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出院状态枚举类
|
||||||
|
*
|
||||||
|
* @Author 1024创新实验室: 胡克
|
||||||
|
* @Date 2019/09/24 16:50
|
||||||
|
* @Wechat zhuoda1024
|
||||||
|
* @Email lab1024@163.com
|
||||||
|
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum DischargeStatusEnum implements BaseEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1 好转
|
||||||
|
*/
|
||||||
|
A(1, "好转"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2 痊愈
|
||||||
|
*/
|
||||||
|
B(2, "痊愈"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3 恶化
|
||||||
|
*/
|
||||||
|
C(3, "恶化"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 4 死亡
|
||||||
|
*/
|
||||||
|
D(4, "死亡");
|
||||||
|
|
||||||
|
private final Integer value;
|
||||||
|
|
||||||
|
private final String desc;
|
||||||
|
}
|
||||||
@ -19,19 +19,19 @@ public enum GenderEnum implements BaseEnum {
|
|||||||
/**
|
/**
|
||||||
* 0 未知
|
* 0 未知
|
||||||
*/
|
*/
|
||||||
UNKNOWN(0, "未知"),
|
UNKNOWN("0", "未知"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 男 1 奇数为阳
|
* 男 1 奇数为阳
|
||||||
*/
|
*/
|
||||||
MAN(1, "男"),
|
MAN("1", "男"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 女 2 偶数为阴
|
* 女 2 偶数为阴
|
||||||
*/
|
*/
|
||||||
WOMAN(2, "女");
|
WOMAN("2", "女");
|
||||||
|
|
||||||
private final Integer value;
|
private final String value;
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package net.lab1024.sa.common.common.interceptor;
|
package net.lab1024.sa.common.common.interceptor;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.sa.common.common.annoation.NoNeedLogin;
|
import net.lab1024.sa.common.common.annoation.NoNeedLogin;
|
||||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
import net.lab1024.sa.common.common.code.UserErrorCode;
|
||||||
import net.lab1024.sa.common.common.constant.RequestHeaderConst;
|
import net.lab1024.sa.common.common.constant.RequestHeaderConst;
|
||||||
@ -30,6 +31,7 @@ import java.util.function.Function;
|
|||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public abstract class AbstractInterceptor implements HandlerInterceptor {
|
public abstract class AbstractInterceptor implements HandlerInterceptor {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user