新增了dockerfile,修改了病例新增、登陆逻辑
This commit is contained in:
parent
4c74b0dd01
commit
a5197591bc
@ -21,10 +21,11 @@ RUN mkdir -p /root/.m2 && \
|
||||
|
||||
# 复制项目代码
|
||||
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 镜像运行
|
||||
FROM eclipse-temurin:8-jdk-alpine
|
||||
@ -32,7 +33,7 @@ FROM eclipse-temurin:8-jdk-alpine
|
||||
WORKDIR /app
|
||||
|
||||
# 复制构建产物
|
||||
COPY --from=builder /app/target/*.jar app.jar
|
||||
COPY --from=builder /app/sa-admin/target/*.jar app.jar
|
||||
|
||||
# 暴露端口(请替换成你实际应用端口)
|
||||
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 abstractImg;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ -49,10 +44,10 @@ public class MedicalRecordAbstracEntity {
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
public MedicalRecordAbstracEntity(Long caseId, String abstractStr, String abstractImg, LocalDateTime createTime) {
|
||||
this.caseId = caseId;
|
||||
this.abstractStr = abstractStr;
|
||||
this.abstractImg = abstractImg;
|
||||
this.createTime = createTime;
|
||||
}
|
||||
// public MedicalRecordAbstracEntity(Long caseId, String abstractStr, String abstractImg, LocalDateTime createTime) {
|
||||
// this.caseId = caseId;
|
||||
// this.abstractStr = abstractStr;
|
||||
// this.abstractImg = abstractImg;
|
||||
// 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.CasetypeEnum;
|
||||
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.swagger.ApiModelPropertyEnum;
|
||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
||||
@ -36,7 +37,7 @@ public class MedicalRecordAddForm {
|
||||
|
||||
@ApiModelPropertyEnum(GenderEnum.class)
|
||||
@CheckEnum(value = GenderEnum.class, message = "性别错误")
|
||||
private Integer sex;
|
||||
private String sex;
|
||||
|
||||
@ApiModelProperty(value = "年龄", required = true)
|
||||
@NotNull(message = "年龄 不能为空")
|
||||
@ -47,23 +48,27 @@ public class MedicalRecordAddForm {
|
||||
@NotNull(message = "入院时间 不能为空")
|
||||
private LocalDateTime admissionTime;
|
||||
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "病历类型")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "病历类型 错误", required = true)
|
||||
private Integer caseType;
|
||||
@ApiModelProperty(value = "治疗类型", required = true)
|
||||
@NotNull(message = "治疗类型 不能为空")
|
||||
private String caseType;
|
||||
|
||||
@ApiModelProperty(value = "基本信息图片", required = true)
|
||||
@NotNull(message = "基本信息图片 不能为空")
|
||||
@Length(min = 1, max = 1000, message = "基本信息图片 不能为空")
|
||||
private String baseImg;
|
||||
@ApiModelProperty(value = "主要诊断", required = true)
|
||||
@NotNull(message = "主要诊断 不能为空")
|
||||
private String mainDiagnose;
|
||||
|
||||
@ApiModelProperty(value = "患者病因", required = true)
|
||||
@NotNull(message = "患者病因 不能为空")
|
||||
private String diseaseCause;
|
||||
|
||||
@ApiModelProperty(value = "诱因", required = true)
|
||||
@NotNull(message = "诱因 不能为空")
|
||||
private String seductionReason;
|
||||
|
||||
/*************************临床资料 病历摘要***************************/
|
||||
@ApiModelProperty(value = "临床资料 病历摘要 文字", required = true)
|
||||
@NotNull(message = "主要诊断 文字 不能为空")
|
||||
private String abstractStr;
|
||||
|
||||
@ApiModelProperty(value = "临床资料 病历摘要 图片", required = true)
|
||||
private String abstractImg;
|
||||
|
||||
|
||||
/*************************DPMAS***************************/
|
||||
@ApiModelProperty(value = "DPMAS", required = true)
|
||||
@NotNull(message = "DPMAS 不能为空")
|
||||
@ -83,12 +88,18 @@ public class MedicalRecordAddForm {
|
||||
@NotNull(message = "治疗后 检测时间 不能为空")
|
||||
private LocalDateTime afterTime;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 检测时间
|
||||
*/
|
||||
@ApiModelProperty(value = "最后一次治疗后 检测时间 ", required = true)
|
||||
@NotNull(message = "最后一次治疗后 检测时间 不能为空")
|
||||
private LocalDateTime lastTime;
|
||||
|
||||
/**
|
||||
* 治疗前 总胆红素(umol/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗前 总胆红素", required = true)
|
||||
@NotNull(message = "治疗前 总胆红素 不能为空")
|
||||
@Length(min = 1, max = 10, message = "治疗前 总胆红素 输入不合法")
|
||||
private String headTb;
|
||||
|
||||
/**
|
||||
@ -96,20 +107,14 @@ public class MedicalRecordAddForm {
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗后 总胆红素 ", required = true)
|
||||
@NotNull(message = "治疗后 总胆红素 不能为空")
|
||||
@Length(min = 1, max = 10, message = "治疗后 总胆红素 输入不合法")
|
||||
private String afterTb;
|
||||
|
||||
/**
|
||||
* 治疗前 白蛋白(g/L)
|
||||
* 最后一次治疗后 总胆红素(umol/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗前 白蛋白", required = true)
|
||||
private String headAlb;
|
||||
|
||||
/**
|
||||
* 治疗后 白蛋白(g/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗后 白蛋白 ", required = true)
|
||||
private String afterAlb;
|
||||
@ApiModelProperty(value = "最后一次治疗后 总胆红素 ", required = true)
|
||||
@NotNull(message = "最后一次治疗后 总胆红素 不能为空")
|
||||
private String lastTb;
|
||||
|
||||
/**
|
||||
* 治疗前 直接胆红素(umol/L)
|
||||
@ -124,16 +129,10 @@ public class MedicalRecordAddForm {
|
||||
private String afterDb;
|
||||
|
||||
/**
|
||||
* 治疗前 凝血酶原活动度 (%)
|
||||
* 最后一次治疗后 直接胆红素(umol/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗前 凝血酶原活动度", required = true)
|
||||
private String headPta;
|
||||
|
||||
/**
|
||||
* 治疗后 凝血酶原活动度 (%)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗后 凝血酶原活动度 ", required = true)
|
||||
private String afterPta;
|
||||
@ApiModelProperty(value = "最后一次治疗后 直接胆红素 ", required = true)
|
||||
private String lastDb;
|
||||
|
||||
/**
|
||||
* 治疗前 间接胆红素(umol/L)
|
||||
@ -147,12 +146,95 @@ public class MedicalRecordAddForm {
|
||||
@ApiModelProperty(value = "治疗后 间接胆红素 ", required = true)
|
||||
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)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗前 国际标准化比值", required = true)
|
||||
@NotNull(message = "治疗前 国际标准化比值 不能为空")
|
||||
@Length(min = 1, max = 10, message = "治疗前 国际标准化比值 输入不合法")
|
||||
private String headInr;
|
||||
|
||||
/**
|
||||
@ -160,24 +242,32 @@ public class MedicalRecordAddForm {
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗后 国际标准化比值 ", required = true)
|
||||
@NotNull(message = "治疗后 国际标准化比值 不能为空")
|
||||
@Length(min = 1, max = 10, message = "治疗后 国际标准化比值 输入不合法")
|
||||
private String afterInr;
|
||||
|
||||
/**
|
||||
* 治疗前 谷丙转氨 (U/L)
|
||||
* 最后一次治疗后 国际标准化比值 (INR)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗前 谷丙转氨", required = true)
|
||||
@NotNull(message = "治疗前 谷丙转氨 不能为空")
|
||||
@Length(min = 1, max = 10, message = "治疗前 谷丙转氨 输入不合法")
|
||||
private String headAlt;
|
||||
@ApiModelProperty(value = "最后一次治疗后 国际标准化比值 ", required = true)
|
||||
@NotNull(message = "最后一次治疗后 国际标准化比值 不能为空")
|
||||
private String lastInr;
|
||||
|
||||
/**
|
||||
* 治疗后 谷丙转氨 (U/L)
|
||||
* 治疗前 C反应蛋白(mg/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗后 谷丙转氨 ", required = true)
|
||||
@NotNull(message = "治疗后 谷丙转氨 不能为空")
|
||||
@Length(min = 1, max = 10, message = "治疗后 谷丙转氨 输入不合法")
|
||||
private String afterAlt;
|
||||
@ApiModelProperty(value = "治疗前 C反应蛋白", required = true)
|
||||
private String headCrp;
|
||||
|
||||
/**
|
||||
* 治疗后 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)
|
||||
@ -192,20 +282,10 @@ public class MedicalRecordAddForm {
|
||||
private String afterIl6;
|
||||
|
||||
/**
|
||||
* 治疗前 谷草转氨酶 (U/L)
|
||||
* 最后一次治疗后 白介素6(ng/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "治疗前 谷草转氨酶", required = true)
|
||||
@NotNull(message = "治疗前 谷草转氨酶 不能为空")
|
||||
@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;
|
||||
@ApiModelProperty(value = "最后一次治疗后 白介素6 ", required = true)
|
||||
private String lastIl6;
|
||||
|
||||
/**
|
||||
* 治疗前 肿瘤坏死因子α(μg/L)
|
||||
@ -219,8 +299,30 @@ public class MedicalRecordAddForm {
|
||||
@ApiModelProperty(value = "治疗后 肿瘤坏死因子α ", required = true)
|
||||
private String afterTnf;
|
||||
|
||||
@ApiModelProperty(value = "实验室检测 图片 图片", required = true)
|
||||
@NotNull(message = "实验室检测 图片 不能为空")
|
||||
@Length(min = 1, max = 1000, message = "实验室检测 图片 不能为空")
|
||||
/**
|
||||
* 最后一次治疗后 肿瘤坏死因子α(μg/L)
|
||||
*/
|
||||
@ApiModelProperty(value = "最后一次治疗后 肿瘤坏死因子α ", required = true)
|
||||
private String lastTnf;
|
||||
|
||||
@ApiModelProperty(value = "报告单 图片", required = true)
|
||||
@NotNull(message = "报告单 图片 不能为空")
|
||||
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
|
||||
@TableName("t_caseplatform_case_checkdata")
|
||||
@Builder
|
||||
public class MedicalRecordCheckdataEntity {
|
||||
|
||||
/**
|
||||
@ -38,10 +37,15 @@ public class MedicalRecordCheckdataEntity {
|
||||
private LocalDateTime headTime;
|
||||
|
||||
/**
|
||||
* 治疗后 检测时间
|
||||
* 治疗后 检测时间
|
||||
*/
|
||||
private LocalDateTime afterTime;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 检测时间
|
||||
*/
|
||||
private LocalDateTime lastTime;
|
||||
|
||||
/**
|
||||
* 治疗前 总胆红素(umol/L)
|
||||
*/
|
||||
@ -52,6 +56,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterTb;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 总胆红素(umol/L)
|
||||
*/
|
||||
private String lastTb;
|
||||
|
||||
/**
|
||||
* 治疗前 白蛋白(g/L)
|
||||
*/
|
||||
@ -62,6 +71,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterAlb;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 白蛋白(g/L)
|
||||
*/
|
||||
private String lastAlb;
|
||||
|
||||
/**
|
||||
* 治疗前 直接胆红素(umol/L)
|
||||
*/
|
||||
@ -72,6 +86,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterDb;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 直接胆红素(umol/L)
|
||||
*/
|
||||
private String lastDb;
|
||||
|
||||
/**
|
||||
* 治疗前 凝血酶原活动度 (%)
|
||||
*/
|
||||
@ -82,6 +101,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterPta;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 凝血酶原活动度 (%)
|
||||
*/
|
||||
private String lastPta;
|
||||
|
||||
/**
|
||||
* 治疗前 间接胆红素(umol/L)
|
||||
*/
|
||||
@ -92,6 +116,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterIb;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 间接胆红素(umol/L)
|
||||
*/
|
||||
private String lastIb;
|
||||
|
||||
/**
|
||||
* 治疗前 国际标准化比值 (INR)
|
||||
*/
|
||||
@ -102,6 +131,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterInr;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 国际标准化比值 (INR)
|
||||
*/
|
||||
private String lastInr;
|
||||
|
||||
/**
|
||||
* 治疗前 谷丙转氨 (U/L)
|
||||
*/
|
||||
@ -112,6 +146,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterAlt;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 谷丙转氨 (U/L)
|
||||
*/
|
||||
private String lastAlt;
|
||||
|
||||
/**
|
||||
* 治疗前 白介素6(ng/L)
|
||||
*/
|
||||
@ -122,6 +161,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterIl6;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 白介素6(ng/L)
|
||||
*/
|
||||
private String lastIl6;
|
||||
|
||||
/**
|
||||
* 治疗前 谷草转氨酶 (U/L)
|
||||
*/
|
||||
@ -132,6 +176,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
private String afterAst;
|
||||
|
||||
/**
|
||||
* 最后一次治疗后 谷草转氨酶 (U/L)
|
||||
*/
|
||||
private String lastAst;
|
||||
|
||||
/**
|
||||
* 治疗前 肿瘤坏死因子α(μg/L)
|
||||
*/
|
||||
@ -142,6 +191,11 @@ public class MedicalRecordCheckdataEntity {
|
||||
*/
|
||||
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 lombok.Data;
|
||||
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.swagger.ApiModelPropertyEnum;
|
||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
||||
@ -38,29 +39,25 @@ public class MedicalRecordDetailVO {
|
||||
@NotNull(message = "入院时间 不能为空")
|
||||
private LocalDateTime admissionTime;
|
||||
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "病历类型")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "病历类型 错误", required = true)
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "治疗类型")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "治疗类型 错误", required = true)
|
||||
private List<Integer> caseTypeList;
|
||||
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "病历类型")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "病历类型 错误", required = true)
|
||||
@ApiModelProperty(value = "治疗类型", required = true)
|
||||
@NotNull(message = "治疗类型 不能为空")
|
||||
private String caseType;
|
||||
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "主要诊断")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "主要诊断 错误", required = true)
|
||||
@ApiModelProperty(value = "主要诊断", required = true)
|
||||
@NotNull(message = "主要诊断 不能为空")
|
||||
private String mainDiagnose;
|
||||
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "患者病因")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "患者病因 错误", required = true)
|
||||
@ApiModelProperty(value = "患者病因", required = true)
|
||||
@NotNull(message = "患者病因 不能为空")
|
||||
private String diseaseCause;
|
||||
|
||||
@ApiModelPropertyEnum(value = CasetypeEnum.class, desc = "诱因")
|
||||
@CheckEnum(value = CasetypeEnum.class, message = "诱因 错误", required = true)
|
||||
private String trigger;
|
||||
|
||||
// @ApiModelProperty(value = "基本信息图片", required = true)
|
||||
// @NotNull(message = "基本信息图片 不能为空")
|
||||
// private String baseImg;
|
||||
@ApiModelProperty(value = "诱因", required = true)
|
||||
@NotNull(message = "诱因 不能为空")
|
||||
private String seductionReason;
|
||||
|
||||
@ApiModelProperty(value = "病例状态", required = true)
|
||||
private Integer status;
|
||||
@ -70,14 +67,9 @@ public class MedicalRecordDetailVO {
|
||||
@NotNull(message = "临床资料 病历摘要 文字 不能为空")
|
||||
private String abstractStr;
|
||||
|
||||
// @ApiModelProperty(value = "临床资料 病历摘要 图片", required = true)
|
||||
// @NotNull(message = "临床资料 病历摘要 图片 不能为空")
|
||||
// private String abstractImg;
|
||||
|
||||
|
||||
/*************************DPMAS***************************/
|
||||
@ApiModelProperty(value = "临床资料 病历摘要 图片", required = true)
|
||||
@NotNull(message = "临床资料 病历摘要 图片 不能为空")
|
||||
@ApiModelProperty(value = "人工肝治疗", required = true)
|
||||
@NotNull(message = "人工肝治疗 不能为空")
|
||||
private List<DpmsAddForm> dpmas;
|
||||
|
||||
|
||||
@ -313,7 +305,24 @@ public class MedicalRecordDetailVO {
|
||||
@ApiModelProperty(value = "最后一次治疗后 肿瘤坏死因子α ", required = true)
|
||||
private String lastTnf;
|
||||
|
||||
@ApiModelProperty(value = "实验室检测 病历摘要 图片", required = true)
|
||||
@NotNull(message = "实验室检测 图片 不能为空")
|
||||
@ApiModelProperty(value = "报告单 图片", required = true)
|
||||
@NotNull(message = "报告单 图片 不能为空")
|
||||
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;
|
||||
|
||||
/**
|
||||
* 内容(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.TableName;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 病历表 实体类
|
||||
*
|
||||
@ -29,11 +33,6 @@ public class MedicalRecordEntity {
|
||||
*/
|
||||
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 String mainDiagnose;
|
||||
|
||||
/**
|
||||
* 患者病因
|
||||
*/
|
||||
private String diseaseCause;
|
||||
|
||||
/**
|
||||
* 诱因
|
||||
*/
|
||||
private String seductionReason;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
public MedicalRecordEntity(Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, LocalDateTime createTime) {
|
||||
this.userId = userId;
|
||||
this.admissionTime = admissionTime;
|
||||
this.caseType = caseType;
|
||||
this.baseImg = baseImg;
|
||||
this.expertId = expertId;
|
||||
this.createTime = createTime;
|
||||
}
|
||||
// public MedicalRecordEntity(Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, LocalDateTime createTime) {
|
||||
// this.userId = userId;
|
||||
// this.admissionTime = admissionTime;
|
||||
// this.caseType = caseType;
|
||||
// this.baseImg = baseImg;
|
||||
// this.expertId = expertId;
|
||||
// this.createTime = createTime;
|
||||
// }
|
||||
|
||||
public MedicalRecordEntity(Long id, Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, Integer status, LocalDateTime updateTime) {
|
||||
this.id = id;
|
||||
this.userId = userId;
|
||||
this.admissionTime = admissionTime;
|
||||
this.caseType = caseType;
|
||||
this.baseImg = baseImg;
|
||||
this.expertId = expertId;
|
||||
this.status = status;
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
// public MedicalRecordEntity(Long id, Long userId, String baseImg, LocalDateTime admissionTime, Integer caseType, Long expertId, Integer status, LocalDateTime updateTime) {
|
||||
// this.id = id;
|
||||
// this.userId = userId;
|
||||
// this.admissionTime = admissionTime;
|
||||
// this.caseType = caseType;
|
||||
// this.baseImg = baseImg;
|
||||
// this.expertId = expertId;
|
||||
// this.status = status;
|
||||
// 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;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
@ -61,12 +59,12 @@ public class MedicalRecordUserEntity {
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
public MedicalRecordUserEntity(Long expertId, String name, String uid, Integer sex, Integer age, LocalDateTime createTime) {
|
||||
this.expertId = expertId;
|
||||
this.name = name;
|
||||
this.uid = uid;
|
||||
this.sex = sex;
|
||||
this.age = age;
|
||||
this.createTime = createTime;
|
||||
}
|
||||
// public MedicalRecordUserEntity(Long expertId, String name, String uid, Integer sex, Integer age, LocalDateTime createTime) {
|
||||
// this.expertId = expertId;
|
||||
// this.name = name;
|
||||
// this.uid = uid;
|
||||
// this.sex = sex;
|
||||
// this.age = age;
|
||||
// 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.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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.service.ExpertSignService;
|
||||
import net.lab1024.sa.admin.module.app.medicalrecord.dao.MedicalRecorAbstracDao;
|
||||
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.dao.*;
|
||||
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.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.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
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.PROJECT_CLOSE;
|
||||
@ -51,6 +51,9 @@ public class MedicalRecordService {
|
||||
@Autowired
|
||||
private MedicalRecorCheckDataDao medicalRecorCheckDataDao;
|
||||
|
||||
@Autowired
|
||||
private MedicalRecorPrognosisDao medicalRecorPrognosisDao;
|
||||
|
||||
@Autowired
|
||||
private ConfigService configService;
|
||||
|
||||
@ -68,15 +71,16 @@ public class MedicalRecordService {
|
||||
|
||||
public MedicalRecordDetailVO getDetail(Long MedicalRecordId){
|
||||
MedicalRecordDetailVO detail = medicalRecorDao.getDetail(MedicalRecordId);
|
||||
List<DpmsAddForm> dpmas = medicalRecorDpmasDao.getByCaseId(MedicalRecordId);
|
||||
detail.setDpmas(dpmas);
|
||||
if (detail != null){
|
||||
List<DpmsAddForm> dpmas = medicalRecorDpmasDao.getByCaseId(MedicalRecordId);
|
||||
detail.setDpmas(dpmas);
|
||||
}
|
||||
|
||||
return detail;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public ResponseDTO<String> add(MedicalRecordAddForm addForm){
|
||||
|
||||
|
||||
ConfigVO caseNum = configService.getConfig(ConfigKeyEnum.CaseNum);
|
||||
int total = medicalRecorDao.getTotal();
|
||||
if(Integer.parseInt(caseNum.getConfigValue()) <= total){
|
||||
@ -92,57 +96,29 @@ public class MedicalRecordService {
|
||||
/*************************前置 检查*****************************/
|
||||
|
||||
ResponseDTO check = check(SmartBeanUtil.copy(addForm, MedicalRecordUpdateForm.class), expertId);
|
||||
|
||||
if(!check.getOk()){
|
||||
return check;
|
||||
}
|
||||
|
||||
//病历类型
|
||||
Integer caseType = addForm.getCaseType();
|
||||
List<DpmsAddForm> dpmas = addForm.getDpmas();
|
||||
//入院时间
|
||||
LocalDateTime admissionTime = addForm.getAdmissionTime();
|
||||
// 病历-用户
|
||||
MedicalRecordUserEntity medicalRecordUser = new MedicalRecordUserEntity();
|
||||
medicalRecordUser.setName(addForm.getName());
|
||||
medicalRecordUser.setUid(addForm.getUid());
|
||||
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();
|
||||
|
||||
//临床资料 病历摘要 文字
|
||||
String abstractStr = addForm.getAbstractStr();
|
||||
|
||||
//临床资料 病历摘要 图片
|
||||
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());
|
||||
// 病例
|
||||
MedicalRecordEntity medicalRecord = new MedicalRecordEntity();
|
||||
medicalRecord.setUserId(medicalRecordUser.getId());
|
||||
medicalRecord.setAdmissionTime(addForm.getAdmissionTime());
|
||||
medicalRecord.setCaseType(addForm.getCaseType());
|
||||
|
||||
DateTime nowDate = DateUtil.date();
|
||||
String statistics_date = DateUtil.format(nowDate, "yyyyMMdd");
|
||||
@ -151,165 +127,103 @@ public class MedicalRecordService {
|
||||
int quarter = DateUtil.quarter(nowDate);
|
||||
String statistics_quarter = statistics_year + quarter;
|
||||
|
||||
medicalRecord.setStatisticsDay(Integer.parseInt(statistics_date));
|
||||
medicalRecord.setStatisticsMonth(Integer.parseInt(statistics_month));
|
||||
medicalRecord.setStatisticsQuarter(Integer.parseInt(statistics_quarter));
|
||||
medicalRecord.setStatisticsYear(Integer.parseInt(statistics_year));
|
||||
medicalRecorDao.insert(medicalRecord);
|
||||
Long medicalRecordId = medicalRecord.getId();
|
||||
medicalRecord.setStatisticsDay(Integer.valueOf(statistics_date));
|
||||
medicalRecord.setStatisticsMonth(Integer.valueOf(statistics_month));
|
||||
medicalRecord.setStatisticsQuarter(Integer.valueOf(statistics_quarter));
|
||||
medicalRecord.setStatisticsYear(Integer.valueOf(statistics_year));
|
||||
medicalRecord.setExpertId(expertId);
|
||||
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("操作失败");
|
||||
}
|
||||
|
||||
|
||||
|
||||
MedicalRecordAbstracEntity abstracEntity = new MedicalRecordAbstracEntity(medicalRecordId, abstractStr, abstractImg, LocalDateTime.now());
|
||||
medicalRecorAbstracDao.insert(abstracEntity);
|
||||
/*************************DPMAS***************************/
|
||||
//DPMAS
|
||||
|
||||
for(DpmsAddForm item:dpmas){
|
||||
// 人工肝治疗
|
||||
for(DpmsAddForm item: addForm.getDpmas()){
|
||||
MedicalRecordDpmsEntity dp = new MedicalRecordDpmsEntity();
|
||||
dp.setDpmasImg(item.getDpmasImg());
|
||||
dp.setCaseId(medicalRecordId);
|
||||
dp.setCaseId(medicalRecord.getId());
|
||||
dp.setTreatTime(item.getTreatTime());
|
||||
medicalRecorDpmasDao.insert(dp);
|
||||
res = medicalRecorDpmasDao.insert(dp);
|
||||
if (res <= 0){
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return ResponseDTO.userErrorParam("操作失败");
|
||||
}
|
||||
}
|
||||
/*************************实验室数据***************************/
|
||||
|
||||
/**
|
||||
* 治疗前 总胆红素(umol/L)
|
||||
*/
|
||||
String headTb = addForm.getHeadTb();
|
||||
// 实验室检测
|
||||
MedicalRecordCheckdataEntity medicalRecordCheckdata = new MedicalRecordCheckdataEntity();
|
||||
medicalRecordCheckdata.setCaseId(medicalRecord.getId());
|
||||
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)
|
||||
*/
|
||||
String afterTb = addForm.getAfterTb();
|
||||
// 疾病转归
|
||||
MedicalRecordPrognosisEntity medicalRecordPrognosis = new MedicalRecordPrognosisEntity();
|
||||
medicalRecordPrognosis.setCaseId(medicalRecord.getId());
|
||||
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();
|
||||
}
|
||||
|
||||
@ -317,356 +231,259 @@ public class MedicalRecordService {
|
||||
public ResponseDTO<String> update(MedicalRecordUpdateForm updateForm){
|
||||
Long expertId = SmartRequestUtil.getRequestUserId();
|
||||
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(!status.equals(CaseStatusEnum.REFUSE.getValue())){
|
||||
if (medicalRecord.getStatus() != 0){
|
||||
return ResponseDTO.error(NO_PERMISSION_EDIT);
|
||||
}
|
||||
ResponseDTO check = check(updateForm, expertId);
|
||||
|
||||
/*************************前置 检查*****************************/
|
||||
|
||||
ResponseDTO check = check(updateForm, expertId);
|
||||
if(!check.getOk()){
|
||||
return check;
|
||||
}
|
||||
|
||||
//病历类型
|
||||
Integer caseType = updateForm.getCaseType();
|
||||
List<DpmsAddForm> dpmas = updateForm.getDpmas();
|
||||
//入院时间
|
||||
LocalDateTime admissionTime = updateForm.getAdmissionTime();
|
||||
|
||||
//临床资料 病历摘要 文字
|
||||
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());
|
||||
medicalRecord.setAdmissionTime(updateForm.getAdmissionTime());
|
||||
medicalRecord.setCaseType(updateForm.getCaseType());
|
||||
medicalRecord.setMainDiagnose(updateForm.getMainDiagnose());
|
||||
medicalRecord.setDiseaseCause(updateForm.getDiseaseCause());
|
||||
medicalRecord.setSeductionReason(updateForm.getSeductionReason());
|
||||
medicalRecorDao.updateById(medicalRecord);
|
||||
/*************************临床资料 病历摘要***************************/
|
||||
|
||||
medicalRecorAbstracDao.deleteByCaseId(medicalRecordId);
|
||||
MedicalRecordAbstracEntity abstracEntity = new MedicalRecordAbstracEntity(medicalRecordId, abstractStr, abstractImg, LocalDateTime.now());
|
||||
medicalRecorAbstracDao.insert(abstracEntity);
|
||||
/*************************DPMAS***************************/
|
||||
//DPMAS
|
||||
// 病历-用户
|
||||
LambdaQueryWrapper<MedicalRecordUserEntity> medicalRecordUserQueryWrapper = new LambdaQueryWrapper<>();
|
||||
medicalRecordUserQueryWrapper.eq(MedicalRecordUserEntity::getId, medicalRecord.getUserId());
|
||||
MedicalRecordUserEntity medicalRecordUser = medicalRecorUserDao.selectOne(medicalRecordUserQueryWrapper);
|
||||
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);
|
||||
for(DpmsAddForm item:dpmas){
|
||||
for(DpmsAddForm item: updateForm.getDpmas()){
|
||||
MedicalRecordDpmsEntity dp = new MedicalRecordDpmsEntity();
|
||||
dp.setDpmasImg(item.getDpmasImg());
|
||||
dp.setCaseId(medicalRecordId);
|
||||
dp.setCaseId(medicalRecord.getId());
|
||||
dp.setTreatTime(item.getTreatTime());
|
||||
medicalRecorDpmasDao.insert(dp);
|
||||
int res = medicalRecorDpmasDao.insert(dp);
|
||||
if (res <= 0){
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return ResponseDTO.userErrorParam("操作失败");
|
||||
}
|
||||
}
|
||||
/*************************实验室数据***************************/
|
||||
|
||||
/**
|
||||
* 治疗前 总胆红素(umol/L)
|
||||
*/
|
||||
String headTb = updateForm.getHeadTb();
|
||||
// 实验室检测
|
||||
LambdaQueryWrapper<MedicalRecordCheckdataEntity> medicalRecordCheckDataQueryWrapper = new LambdaQueryWrapper<>();
|
||||
medicalRecordCheckDataQueryWrapper.eq(MedicalRecordCheckdataEntity::getCaseId, medicalRecord.getId());
|
||||
MedicalRecordCheckdataEntity medicalRecordCheckData = medicalRecorCheckDataDao.selectOne(medicalRecordCheckDataQueryWrapper);
|
||||
if (medicalRecordCheckData == null) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return ResponseDTO.userErrorParam("操作失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 治疗后 总胆红素(umol/L)
|
||||
*/
|
||||
String afterTb = updateForm.getAfterTb();
|
||||
medicalRecordCheckData.setHeadTime(updateForm.getHeadTime());
|
||||
medicalRecordCheckData.setAfterTime(updateForm.getAfterTime());
|
||||
medicalRecordCheckData.setLastTime(updateForm.getLastTime());
|
||||
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)
|
||||
*/
|
||||
String headAlb = updateForm.getHeadAlb();
|
||||
// 疾病转归
|
||||
LambdaQueryWrapper<MedicalRecordPrognosisEntity> medicalRecordPrognosisQueryWrapper = new LambdaQueryWrapper<>();
|
||||
medicalRecordPrognosisQueryWrapper.eq(MedicalRecordPrognosisEntity::getCaseId, medicalRecord.getId());
|
||||
MedicalRecordPrognosisEntity medicalRecordPrognosis = medicalRecorPrognosisDao.selectOne(medicalRecordPrognosisQueryWrapper);
|
||||
if (medicalRecordPrognosis == null) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
return ResponseDTO.userErrorParam("操作失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 治疗后 白蛋白(g/L)
|
||||
*/
|
||||
String afterAlb = updateForm.getAfterAlb();
|
||||
medicalRecordPrognosis.setDischargeTime(updateForm.getDischargeTime());
|
||||
medicalRecordPrognosis.setDay(updateForm.getDay());
|
||||
medicalRecordPrognosis.setDischargeStatus(updateForm.getDischargeStatus());
|
||||
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();
|
||||
}
|
||||
|
||||
// 检测参数
|
||||
public ResponseDTO check(MedicalRecordUpdateForm form, Long expertId){
|
||||
|
||||
ConfigVO caseSwitch = configService.getConfig(ConfigKeyEnum.CaseSwitch);
|
||||
if(caseSwitch.getConfigValue().equals("false")){
|
||||
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();
|
||||
//患者id
|
||||
String uid = form.getUid();
|
||||
//获取全部病例
|
||||
List<MedicalRecordDTO> admissionTimeByUid = medicalRecorDao.getAdmissionTimeByUid(expertId, uid);
|
||||
for(MedicalRecordDTO dto:admissionTimeByUid){
|
||||
if(dto.getId().equals(form.getId())){
|
||||
continue;
|
||||
}
|
||||
long daysDiff = Duration.between(dto.getAdmissionTime(), admissionTime).toDays();
|
||||
if(Math.abs(daysDiff) < 30){
|
||||
return ResponseDTO.userErrorParam("同一患者记录入院时间必须间隔30天以上!");
|
||||
|
||||
// 获取该患者的全部病例
|
||||
LambdaQueryWrapper<MedicalRecordEntity> medicalRecordQueryWrapper = new LambdaQueryWrapper<>();
|
||||
medicalRecordQueryWrapper.eq(MedicalRecordEntity::getUserId, uid);
|
||||
List<MedicalRecordEntity> medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper);
|
||||
for (MedicalRecordEntity medicalRecord: medicalRecords) {
|
||||
// 判断是否是今天
|
||||
// 同一个患者ID可以提交多份病例(入院时间不同),所有病例对比
|
||||
boolean isSameDate = medicalRecord.getAdmissionTime().toLocalDate().isEqual(admissionTime.toLocalDate());
|
||||
if (isSameDate){
|
||||
return ResponseDTO.userErrorParam("患者入院时间和其他病例出现重复");
|
||||
}
|
||||
}
|
||||
|
||||
String baseImg = form.getBaseImg();
|
||||
String[] baseImgNum = baseImg.split(",");
|
||||
if(baseImgNum.length > 6){
|
||||
return ResponseDTO.userErrorParam("病案照片应为(1-6张)!");
|
||||
medicalRecordQueryWrapper = new LambdaQueryWrapper<>();
|
||||
medicalRecordQueryWrapper.eq(MedicalRecordEntity::getExpertId, expertId);
|
||||
medicalRecords = medicalRecorDao.selectList(medicalRecordQueryWrapper);
|
||||
if (medicalRecords.size() >= 20){
|
||||
return ResponseDTO.userErrorParam("每人参与病例征集不得超过20例");
|
||||
}
|
||||
|
||||
//临床资料 病历摘要 文字
|
||||
String abstractStr = form.getAbstractStr();
|
||||
return ResponseDTO.app_ok();
|
||||
}
|
||||
|
||||
//临床资料 病历摘要 图片
|
||||
String abstractImg = form.getAbstractImg();
|
||||
|
||||
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();
|
||||
// 检测人工肝治疗
|
||||
public ResponseDTO checkDpms(MedicalRecordUpdateForm form, Long expertId){
|
||||
List<DpmsAddForm> dpmas = form.getDpmas();
|
||||
|
||||
int size = dpmas.size();
|
||||
|
||||
if(caseType == CasetypeEnum.BEFORE.getValue()){
|
||||
if(size == 0){
|
||||
return ResponseDTO.userErrorParam("至少上传1次DPMAS数据!");
|
||||
}
|
||||
}
|
||||
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 target = LocalDateTime.of(2024, 10, 1, 0, 0);
|
||||
boolean isAfter = dpmas.get(0).getTreatTime().isAfter(target);
|
||||
if (!isAfter){
|
||||
return ResponseDTO.userErrorParam("第一次治疗时间需在2024年10月1日之后");
|
||||
}
|
||||
|
||||
LocalDateTime lastTreatTime = dpmas.get(size-1).getTreatTime();//最后一次治疗时间
|
||||
|
||||
if(firstTreatTime.toLocalDate().compareTo(admissionTime.toLocalDate()) < 0){
|
||||
return ResponseDTO.userErrorParam("第1次治疗时间比患者基本信息入院时间后!");
|
||||
isAfter = dpmas.get(0).getTreatTime().isAfter(form.getAdmissionTime());
|
||||
if (!isAfter){
|
||||
return ResponseDTO.userErrorParam("第1次治疗时间需在入院时间后");
|
||||
}
|
||||
LocalDateTime temp = firstTreatTime;
|
||||
for(int i=0;i<dpmas.size();i++){
|
||||
LocalDateTime treatTime = dpmas.get(i).getTreatTime();
|
||||
if(i > 0){
|
||||
if(!treatTime.isAfter(temp)){
|
||||
return ResponseDTO.userErrorParam("第"+(i+1)+"次治疗时间必须在第"+i+"次治疗时间后!");
|
||||
}
|
||||
|
||||
for (int i = 1; i < dpmas.size(); i++) {
|
||||
LocalDateTime previous = dpmas.get(i - 1).getTreatTime();
|
||||
LocalDateTime current = dpmas.get(i).getTreatTime();
|
||||
|
||||
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(",");
|
||||
if(dpmasImgNum.length > 3){
|
||||
return ResponseDTO.userErrorParam("第"+(i+1)+"次治疗照片应为(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次治疗时间之间");
|
||||
}
|
||||
return ResponseDTO.userErrorParam("第"+(i)+"次治疗照片应为(1-3张)!");
|
||||
}
|
||||
}
|
||||
if(caseType == CasetypeEnum.DEFAULT.getValue()){
|
||||
if((headTime.toLocalDate().compareTo(admissionTime.toLocalDate())) < 0 || (headTime.toLocalDate().compareTo(firstTreatTime.toLocalDate())) > 0){
|
||||
return ResponseDTO.userErrorParam("治疗前检测时间:应该在入院时间与第1次治疗时间之间!");
|
||||
}
|
||||
if(afterTime.toLocalDate().compareTo(lastTreatTime.toLocalDate()) < 0){
|
||||
return ResponseDTO.userErrorParam("治疗后检测时间:应该在最后1次治疗时间之后");
|
||||
|
||||
return ResponseDTO.app_ok();
|
||||
}
|
||||
|
||||
// 实验室检测
|
||||
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){
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ import lombok.Getter;
|
||||
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
||||
|
||||
/**
|
||||
* 病历类型
|
||||
* 治疗类型
|
||||
*
|
||||
* @Author HMM
|
||||
* @Date 2024-01-11T15:18:32
|
||||
@ -15,8 +15,8 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum CasetypeEnum implements BaseEnum {
|
||||
DEFAULT(1, "四次及以上疗程化"),
|
||||
BEFORE(2, "早前期(INR≤1.5)"),
|
||||
DEFAULT(1, "DPMAS及联合模式"),
|
||||
BEFORE(2, "CA280及联合模式"),
|
||||
;
|
||||
|
||||
private final Integer value;
|
||||
|
||||
@ -33,12 +33,13 @@
|
||||
t_caseplatform_case.*,
|
||||
t_caseplatform_user.*,
|
||||
t_caseplatform_case_abstract.*,
|
||||
t_caseplatform_case_checkdata.*
|
||||
t_caseplatform_case_checkdata.*,
|
||||
t_caseplatform_case_prognosis.*
|
||||
FROM t_caseplatform_case
|
||||
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_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}
|
||||
</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 未知
|
||||
*/
|
||||
UNKNOWN(0, "未知"),
|
||||
UNKNOWN("0", "未知"),
|
||||
|
||||
/**
|
||||
* 男 1 奇数为阳
|
||||
*/
|
||||
MAN(1, "男"),
|
||||
MAN("1", "男"),
|
||||
|
||||
/**
|
||||
* 女 2 偶数为阴
|
||||
*/
|
||||
WOMAN(2, "女");
|
||||
WOMAN("2", "女");
|
||||
|
||||
private final Integer value;
|
||||
private final String value;
|
||||
|
||||
private final String desc;
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package net.lab1024.sa.common.common.interceptor;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.sa.common.common.annoation.NoNeedLogin;
|
||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
||||
import net.lab1024.sa.common.common.constant.RequestHeaderConst;
|
||||
@ -30,6 +31,7 @@ import java.util.function.Function;
|
||||
* @Email lab1024@163.com
|
||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Autowired
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user