诊断流程提交

dev_v1.0.1
liu 2 years ago
parent 1268adcbda
commit 890ac07eda

@ -1,18 +0,0 @@
package com.supervision.mapper;
import com.supervision.model.AskDefaultQuestionAnswer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_ask_default_question_answer()Mapper
* @createDate 2023-10-27 10:05:55
* @Entity com.supervision.model.AskDefaultQuestionAnswer
*/
public interface AskDefaultQuestionAnswerMapper extends BaseMapper<AskDefaultQuestionAnswer> {
}

@ -1,18 +0,0 @@
package com.supervision.mapper;
import com.supervision.model.AskDiseaseQuestionAnswer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_ask_disease_question_answer(-)Mapper
* @createDate 2023-10-27 10:05:55
* @Entity com.supervision.model.AskDiseaseQuestionAnswer
*/
public interface AskDiseaseQuestionAnswerMapper extends BaseMapper<AskDiseaseQuestionAnswer> {
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.AskPatientAnswer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_ask_patient_answer(-)Mapper
* @createDate 2023-11-03 11:13:26
* @Entity com.supervision.model.AskPatientAnswer
*/
public interface AskPatientAnswerMapper extends BaseMapper<AskPatientAnswer> {
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.AskTemplateQuestionLibrary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_ask_template_question_library()Mapper
* @createDate 2023-11-03 11:13:26
* @Entity com.supervision.model.AskTemplateQuestionLibrary
*/
public interface AskTemplateQuestionLibraryMapper extends BaseMapper<AskTemplateQuestionLibrary> {
}

@ -1,18 +0,0 @@
package com.supervision.mapper;
import com.supervision.model.AskTemplateQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_ask_template_question()Mapper
* @createDate 2023-10-27 10:05:55
* @Entity com.supervision.model.AskTemplateQuestion
*/
public interface AskTemplateQuestionMapper extends BaseMapper<AskTemplateQuestion> {
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.MedicalRec;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_medical_rec()Mapper
* @createDate 2023-11-03 11:25:43
* @Entity com.supervision.model.MedicalRec
*/
public interface MedicalRecMapper extends BaseMapper<MedicalRec> {
}

@ -1,96 +0,0 @@
package com.supervision.model;
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 java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.supervision.handler.StringListTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* -
*
* @TableName vp_ask_disease_question_answer
*/
@TableName(value = "vp_ask_disease_question_answer", autoResultMap = true)
@Data
@ApiModel
public class AskDiseaseQuestionAnswer extends Model<AskDiseaseQuestionAnswer> implements Serializable {
/**
*
*/
@TableId
private String id;
/**
* ID
*/
@ApiModelProperty("病人ID")
private String patientId;
/**
* ID(not null,template_questioncode,desc,question)
*/
@ApiModelProperty("模板问题ID(如果not null,则从template_question表出code,desc,question)")
private String templateQuestionId;
/**
*
*/
@ApiModelProperty("编码")
private String code;
/**
*
*/
@ApiModelProperty("中文注释")
private String description;
/**
*
*/
@ApiModelProperty("问题列表")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> question;
/**
*
*/
@ApiModelProperty("回答列表")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> answer;
@ApiModelProperty("是否必查-初步诊断依据 0否1是")
private Integer requireCheck;
/**
* ID
*/
private String createUserId;
/**
*
*/
private LocalDateTime createTime;
/**
*
*/
private String updateUserId;
/**
*
*/
private LocalDateTime updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -8,20 +8,16 @@ import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.supervision.handler.StringListTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
* @TableName vp_ask_template_question
* -
* @TableName vp_ask_patient_answer
*/
@TableName(value ="vp_ask_template_question",autoResultMap = true)
@TableName(value ="vp_ask_patient_answer",autoResultMap = true)
@Data
@ApiModel
public class AskTemplateQuestion extends Model<AskTemplateQuestion> implements Serializable {
public class AskPatientAnswer implements Serializable {
/**
*
*/
@ -29,23 +25,25 @@ public class AskTemplateQuestion extends Model<AskTemplateQuestion> implements S
private String id;
/**
*
* ID
*/
@ApiModelProperty("编码")
private String code;
private String patientId;
/**
*
* ID
*/
@ApiModelProperty("中文注释")
private String description;
private String libraryQuestionId;
/**
*
*
*/
@ApiModelProperty("问题列表")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> question;
private List<String> answer;
/**
* - 01
*/
private Integer requireCheck;
/**
* ID

@ -4,25 +4,20 @@ 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 java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import com.supervision.handler.StringListTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @TableName vp_ask_default_question_answer
*
* @TableName vp_ask_template_question_library
*/
@TableName(value = "vp_ask_default_question_answer", autoResultMap = true)
@TableName(value ="vp_ask_template_question_library", autoResultMap = true)
@Data
@ApiModel
public class AskDefaultQuestionAnswer implements Serializable {
public class AskTemplateQuestionLibrary implements Serializable {
/**
*
*/
@ -32,28 +27,24 @@ public class AskDefaultQuestionAnswer implements Serializable {
/**
*
*/
@ApiModelProperty("编码")
private String code;
/**
*
*/
@ApiModelProperty("中文注释")
private String description;
/**
*
*/
@ApiModelProperty("问题列表")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> question;
/**
*
*
*/
@ApiModelProperty("回答列表")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> answer;
private List<String> defaultAnswer;
/**
* ID

@ -32,9 +32,6 @@ public class DiagnosisQaRecord extends Model<DiagnosisQaRecord> implements Seria
@ApiModelProperty("诊断进程ID")
private String processId;
@ApiModelProperty("问答类型:default,disease")
private String questionAnswerType;
/**
* ID
*/

@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import com.supervision.handler.StringListTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -15,7 +17,7 @@ import lombok.Data;
*
* @TableName vp_disease
*/
@TableName(value ="vp_disease")
@TableName(value ="vp_disease", autoResultMap = true)
@Data
@ApiModel
public class Disease implements Serializable {
@ -68,6 +70,9 @@ public class Disease implements Serializable {
@ApiModelProperty("其他")
private String other;
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> standardQuestionLibrary;
/**
* ID

@ -26,10 +26,10 @@ public class DiseaseAncillary implements Serializable {
private String id;
/**
* ID
* ID
*/
@ApiModelProperty("病ID")
private String patientId;
@ApiModelProperty("病ID")
private String medicalRecId;
/**
* ID

@ -26,11 +26,10 @@ public class DiseasePhysical implements Serializable {
private String id;
/**
* ID
* ID
*/
@ApiModelProperty("病人ID")
private String patientId;
@ApiModelProperty("病历ID")
private String medicalRecId;
/**
* ID
*/

@ -0,0 +1,91 @@
package com.supervision.model;
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 java.io.Serializable;
import java.util.List;
import com.supervision.handler.StringListTypeHandler;
import lombok.Data;
/**
*
*
* @TableName vp_medical_rec
*/
@TableName(value = "vp_medical_rec", autoResultMap = true)
@Data
public class MedicalRec implements Serializable {
/**
*
*/
@TableId
private String id;
/**
*
*/
private String no;
/**
* ID
*/
private String patientId;
/**
*
*/
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> diseaseList;
/**
*
*/
private String patientSelfDesc;
/**
*
*/
private String symptoms;
/**
*
*/
private String expectDiagnosisResult;
/**
*
*/
private String expectDiseaseTreatmentPlan;
/**
*
*/
private Object primaryDiagnosis;
/**
*
*/
private String allergyHistory;
/**
*
*/
private String previousHistory;
/**
*
*/
private String familyHistory;
/**
*
*/
private String marriageChildHistory;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -18,7 +18,7 @@ import java.util.List;
*
* @TableName vp_patient
*/
@TableName(value = "vp_patient", autoResultMap = true)
@TableName(value = "vp_patient")
@Data
@ApiModel
public class Patient implements Serializable {
@ -64,25 +64,6 @@ public class Patient implements Serializable {
@ApiModelProperty("体重")
private BigDecimal weight;
/**
*
*/
@ApiModelProperty("疾病列表")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> diseaseList;
/**
*
*/
@ApiModelProperty("预期诊断结果")
private String expectedDiagnosisResult;
/**
*
*/
@ApiModelProperty("治疗计划")
private String diseaseTreatmentPlan;
/**
* ID
*/

@ -32,6 +32,9 @@ public class Process implements Serializable {
@ApiModelProperty("病人ID")
private String patientId;
@ApiModelProperty("病历ID")
private String medicalRecId;
/**
* ID
*/
@ -41,7 +44,7 @@ public class Process implements Serializable {
/**
* 0 1
*/
@ApiModelProperty("任务状态 0进行中 1已完成")
@ApiModelProperty("任务状态 -1未开始 0进行中 1已完成")
private Integer status;
/**

@ -1,13 +0,0 @@
package com.supervision.service;
import com.supervision.model.AskDefaultQuestionAnswer;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description vp_ask_default_question_answer()Service
* @createDate 2023-10-27 10:05:55
*/
public interface AskDefaultQuestionAnswerService extends IService<AskDefaultQuestionAnswer> {
}

@ -1,13 +0,0 @@
package com.supervision.service;
import com.supervision.model.AskDiseaseQuestionAnswer;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description vp_ask_disease_question_answer(-)Service
* @createDate 2023-10-27 10:05:55
*/
public interface AskDiseaseQuestionAnswerService extends IService<AskDiseaseQuestionAnswer> {
}

@ -0,0 +1,13 @@
package com.supervision.service;
import com.supervision.model.AskPatientAnswer;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description vp_ask_patient_answer(-)Service
* @createDate 2023-11-03 11:13:26
*/
public interface AskPatientAnswerService extends IService<AskPatientAnswer> {
}

@ -0,0 +1,13 @@
package com.supervision.service;
import com.supervision.model.AskTemplateQuestionLibrary;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description vp_ask_template_question_library()Service
* @createDate 2023-11-03 11:13:26
*/
public interface AskTemplateQuestionLibraryService extends IService<AskTemplateQuestionLibrary> {
}

@ -1,13 +0,0 @@
package com.supervision.service;
import com.supervision.model.AskTemplateQuestion;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description vp_ask_template_question()Service
* @createDate 2023-10-27 10:05:55
*/
public interface AskTemplateQuestionService extends IService<AskTemplateQuestion> {
}

@ -0,0 +1,13 @@
package com.supervision.service;
import com.supervision.model.MedicalRec;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author flevance
* @description vp_medical_rec()Service
* @createDate 2023-11-03 11:25:43
*/
public interface MedicalRecService extends IService<MedicalRec> {
}

@ -1,22 +0,0 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskDefaultQuestionAnswer;
import com.supervision.service.AskDefaultQuestionAnswerService;
import com.supervision.mapper.AskDefaultQuestionAnswerMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description vp_ask_default_question_answer()Service
* @createDate 2023-10-27 10:05:55
*/
@Service
public class AskDefaultQuestionAnswerServiceImpl extends ServiceImpl<AskDefaultQuestionAnswerMapper, AskDefaultQuestionAnswer>
implements AskDefaultQuestionAnswerService{
}

@ -1,22 +0,0 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskDiseaseQuestionAnswer;
import com.supervision.service.AskDiseaseQuestionAnswerService;
import com.supervision.mapper.AskDiseaseQuestionAnswerMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description vp_ask_disease_question_answer(-)Service
* @createDate 2023-10-27 10:05:55
*/
@Service
public class AskDiseaseQuestionAnswerServiceImpl extends ServiceImpl<AskDiseaseQuestionAnswerMapper, AskDiseaseQuestionAnswer>
implements AskDiseaseQuestionAnswerService{
}

@ -0,0 +1,22 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskPatientAnswer;
import com.supervision.service.AskPatientAnswerService;
import com.supervision.mapper.AskPatientAnswerMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description vp_ask_patient_answer(-)Service
* @createDate 2023-11-03 11:13:26
*/
@Service
public class AskPatientAnswerServiceImpl extends ServiceImpl<AskPatientAnswerMapper, AskPatientAnswer>
implements AskPatientAnswerService{
}

@ -0,0 +1,22 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskTemplateQuestionLibrary;
import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.mapper.AskTemplateQuestionLibraryMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description vp_ask_template_question_library()Service
* @createDate 2023-11-03 11:13:26
*/
@Service
public class AskTemplateQuestionLibraryServiceImpl extends ServiceImpl<AskTemplateQuestionLibraryMapper, AskTemplateQuestionLibrary>
implements AskTemplateQuestionLibraryService{
}

@ -1,22 +0,0 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskTemplateQuestion;
import com.supervision.service.AskTemplateQuestionService;
import com.supervision.mapper.AskTemplateQuestionMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description vp_ask_template_question()Service
* @createDate 2023-10-27 10:05:55
*/
@Service
public class AskTemplateQuestionServiceImpl extends ServiceImpl<AskTemplateQuestionMapper, AskTemplateQuestion>
implements AskTemplateQuestionService{
}

@ -0,0 +1,22 @@
package com.supervision.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.MedicalRec;
import com.supervision.service.MedicalRecService;
import com.supervision.mapper.MedicalRecMapper;
import org.springframework.stereotype.Service;
/**
* @author flevance
* @description vp_medical_rec()Service
* @createDate 2023-11-03 11:25:43
*/
@Service
public class MedicalRecServiceImpl extends ServiceImpl<MedicalRecMapper, MedicalRec>
implements MedicalRecService{
}

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supervision.mapper.AskDiseaseQuestionAnswerMapper">
<resultMap id="BaseResultMap" type="com.supervision.model.AskDiseaseQuestionAnswer">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="patientId" column="patient_id" jdbcType="VARCHAR"/>
<result property="templateQuestionId" column="template_question_id" jdbcType="VARCHAR"/>
<result property="code" column="code" jdbcType="VARCHAR"/>
<result property="description" column="description" jdbcType="VARCHAR"/>
<result property="question" column="question" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="answer" column="answer" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,patient_id,template_question_id,
code,description,question,
answer,create_user_id,create_time,
update_user_id,update_time
</sql>
</mapper>

@ -2,14 +2,14 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supervision.mapper.AskDefaultQuestionAnswerMapper">
<mapper namespace="com.supervision.mapper.AskPatientAnswerMapper">
<resultMap id="BaseResultMap" type="com.supervision.model.AskDefaultQuestionAnswer">
<resultMap id="BaseResultMap" type="com.supervision.model.AskPatientAnswer">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="code" column="code" jdbcType="VARCHAR"/>
<result property="description" column="description" jdbcType="VARCHAR"/>
<result property="question" column="question" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="answer" column="answer" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="patientId" column="patient_id" jdbcType="VARCHAR"/>
<result property="libraryQuestionId" column="library_question_id" jdbcType="VARCHAR"/>
<result property="answer" column="answer" jdbcType="OTHER"/>
<result property="requireCheck" column="require_check" jdbcType="INTEGER"/>
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
@ -17,8 +17,8 @@
</resultMap>
<sql id="Base_Column_List">
id,code,description,
question,answer,create_user_id,
id,patient_id,library_question_id,
answer,require_check,create_user_id,
create_time,update_user_id,update_time
</sql>
</mapper>

@ -2,13 +2,14 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supervision.mapper.AskTemplateQuestionMapper">
<mapper namespace="com.supervision.mapper.AskTemplateQuestionLibraryMapper">
<resultMap id="BaseResultMap" type="com.supervision.model.AskTemplateQuestion">
<resultMap id="BaseResultMap" type="com.supervision.model.AskTemplateQuestionLibrary">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="code" column="code" jdbcType="VARCHAR"/>
<result property="description" column="description" jdbcType="VARCHAR"/>
<result property="question" column="question" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="question" column="question" jdbcType="OTHER"/>
<result property="defaultAnswer" column="default_answer" jdbcType="OTHER"/>
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
@ -17,7 +18,7 @@
<sql id="Base_Column_List">
id,code,description,
question,create_user_id,create_time,
update_user_id,update_time
question,default_answer,create_user_id,
create_time,update_user_id,update_time
</sql>
</mapper>

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supervision.mapper.MedicalRecMapper">
<resultMap id="BaseResultMap" type="com.supervision.model.MedicalRec">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="no" column="no" jdbcType="VARCHAR"/>
<result property="patientId" column="patient_id" jdbcType="VARCHAR"/>
<result property="patientSelfDesc" column="patient_self_desc" jdbcType="VARCHAR"/>
<result property="symptoms" column="symptoms" jdbcType="VARCHAR"/>
<result property="expectDiagnosisResult" column="expect_diagnosis_result" jdbcType="VARCHAR"/>
<result property="expectDiseaseTreatmentPlan" column="expect_disease_treatment_plan" jdbcType="VARCHAR"/>
<result property="primaryDiagnosis" column="primary_diagnosis" jdbcType="OTHER"/>
<result property="allergyHistory" column="allergy_history" jdbcType="VARCHAR"/>
<result property="previousHistory" column="previous_history" jdbcType="VARCHAR"/>
<result property="familyHistory" column="family_history" jdbcType="VARCHAR"/>
<result property="marriageChildHistory" column="marriage_child_history" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,no,patient_id,
patient_self_desc,symptoms,expect_diagnosis_result,
expect_disease_treatment_plan,primary_diagnosis,allergy_history,
previous_history,family_history,marriage_child_history
</sql>
</mapper>

@ -1,23 +1,13 @@
package com.supervision.controller;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.hash.Hash;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.extra.pinyin.PinyinUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.supervision.exception.BusinessException;
import com.supervision.model.AskDiseaseQuestionAnswer;
import com.supervision.model.AskTemplateQuestion;
import com.supervision.model.ConfigPhysicalTool;
import com.supervision.service.AskDiseaseQuestionAnswerService;
import com.supervision.service.AskTemplateQuestionService;
import com.supervision.service.ConfigPhysicalToolService;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@ -96,38 +86,6 @@ public class TestController {
return signServer;
}
@PostMapping("saveQuestion")
@Transactional(rollbackFor = Exception.class)
public void saveQuestion() {
ExcelReader reader = ExcelUtil.getReader("/Users/flevance/Desktop/template.xlsx");
List<List<Object>> read = reader.read();
for (List<Object> readLine : read) {
String desc = (String) readLine.get(0);
String pinyin = PinyinUtil.getPinyin((String) readLine.get(0), "_");
String question = (String) readLine.get(1);
String answer = (String) readLine.get(2);
String otherQuestionStr = (String) readLine.get(3);
AskTemplateQuestion templateQuestion = new AskTemplateQuestion();
templateQuestion.setCode("ask_" + pinyin);
templateQuestion.setDescription(desc);
List<String> questionList = JSONUtil.toList(otherQuestionStr, String.class);
questionList.add(0, question);
templateQuestion.setQuestion(questionList);
templateQuestion.insert();
AskDiseaseQuestionAnswer askDiseaseQuestionAnswer = new AskDiseaseQuestionAnswer();
askDiseaseQuestionAnswer.setPatientId("1");
askDiseaseQuestionAnswer.setTemplateQuestionId(templateQuestion.getId());
askDiseaseQuestionAnswer.setAnswer(ListUtil.of(answer));
askDiseaseQuestionAnswer.insert();
}
}
}

@ -26,6 +26,8 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService;
private final MedicalRecService medicalRecService;
@Override
public List<ConfigAncillaryItemResVO> queryAncillaryItemList() {
List<ConfigAncillaryItem> list = ancillaryItemService.lambdaQuery().list();
@ -42,7 +44,7 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
// 首先根据process_id查新到流程ID
Process process = Optional.ofNullable(processService.getById(reqVO.getProcessId())).orElseThrow(() -> new BusinessException("未找到流程ID"));
// 找到对应的项目的检查结果
DiseaseAncillary diseaseAncillary = diseaseAncillaryService.lambdaQuery().eq(DiseaseAncillary::getPatientId, process.getPatientId()).eq(DiseaseAncillary::getItemId, reqVO.getItemId())
DiseaseAncillary diseaseAncillary = diseaseAncillaryService.lambdaQuery().eq(DiseaseAncillary::getMedicalRecId, process.getMedicalRecId()).eq(DiseaseAncillary::getItemId, reqVO.getItemId())
.oneOpt().orElseGet(() -> {
DiseaseAncillary get = new DiseaseAncillary();
get.setResult("无相关资讯");

@ -28,7 +28,9 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
private final DiagnosisPrimaryService diagnosisPrimaryService;
private final AskDiseaseQuestionAnswerService askDiseaseQuestionAnswerService;
private final AskPatientAnswerService askPatientAnswerService;
private final MedicalRecService medicalRecService;
private final DiagnosisQaRecordService diagnosisQaRecordService;
@ -68,11 +70,12 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
diagnosisResultResVO.setId(processId);
Process process = processService.getById(processId);
Patient patient = patientService.getById(process.getPatientId());
List<Disease> diseasesList = diseaseService.listByIds(patient.getDiseaseList());
MedicalRec medicalRec = medicalRecService.getById(process.getMedicalRecId());
List<Disease> diseasesList = diseaseService.listByIds(medicalRec.getDiseaseList());
// 1.生成预期诊断结果
diagnosisResultResVO.setExpertDiagnosisResult(creatExpertDiagnosisResult(diagnosisResult, patient, diseasesList));
diagnosisResultResVO.setExpertDiagnosisResult(creatExpertDiagnosisResult(medicalRec, diagnosisResult, diseasesList));
// 2.生成初步诊断依据
diagnosisResultResVO.setBasisPrimaryResultResVO(createBasisPrimaryResult(processId, diseasesList));
diagnosisResultResVO.setBasisPrimaryResultResVO(createBasisPrimaryResult(patient, processId, diseasesList));
// 3.生成证实诊断依据
diagnosisResultResVO.setBasisConfirmResultResVO(createBasisConfirmResult(processId, diseasesList));
// 4.生成鉴别诊断依据
@ -80,15 +83,15 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
// 5.全面检查-(暂无相关数据) 后面再看
diagnosisResultResVO.setFullCheck(null);
// 6.处置方案
diagnosisResultResVO.setDealPlan(createDealPlan(diagnosisResult, patient));
diagnosisResultResVO.setDealPlan(createDealPlan(medicalRec, diagnosisResult, patient));
return diagnosisResultResVO;
}
private DealPlanResVO createDealPlan(DiagnosisResult diagnosisResult, Patient patient) {
private DealPlanResVO createDealPlan(MedicalRec medicalRec, DiagnosisResult diagnosisResult, Patient patient) {
DealPlanResVO dealPlanResVO = new DealPlanResVO();
dealPlanResVO.setUserTreatmentPlanType(diagnosisResult.getTreatmentPlanType());
dealPlanResVO.setUserTreatmentPlan(diagnosisResult.getTreatmentPlan());
dealPlanResVO.setRealTreatmentPlan(patient.getDiseaseTreatmentPlan());
dealPlanResVO.setRealTreatmentPlan(medicalRec.getExpectDiseaseTreatmentPlan());
return dealPlanResVO;
}
@ -153,7 +156,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
return basisConfirmResultResVO;
}
private BasisPrimaryResultResVO createBasisPrimaryResult(String processId, List<Disease> diseasesList) {
private BasisPrimaryResultResVO createBasisPrimaryResult(Patient patient, String processId, List<Disease> diseasesList) {
BasisPrimaryResultResVO basisPrimaryResultResVO = new BasisPrimaryResultResVO();
basisPrimaryResultResVO.setPreliminaryDiagnosis(diseasesList.stream().map(Disease::getPreliminaryDiagnosis).collect(Collectors.toList()));
// 根据record记录寻找符合初步诊断依据的项目
@ -161,13 +164,11 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
List<BasisDiagnosisNodeResVO> basisDiagnosisNodeResVOS = new ArrayList<>();
List<DiagnosisQaRecord> qaRecordList = diagnosisQaRecordService.lambdaQuery().eq(DiagnosisQaRecord::getProcessId, processId).list();
if (CollectionUtil.isNotEmpty(qaRecordList)) {
Set<String> questionAnswerIdSet = qaRecordList.stream().map(DiagnosisQaRecord::getQuestionAnswerId).collect(Collectors.toSet());
List<AskDiseaseQuestionAnswer> list = askDiseaseQuestionAnswerService.lambdaQuery()
.in(AskDiseaseQuestionAnswer::getId, questionAnswerIdSet)
.eq(AskDiseaseQuestionAnswer::getRequireCheck, 1)
.select(AskDiseaseQuestionAnswer::getId).list();
List<AskPatientAnswer> list = askPatientAnswerService.lambdaQuery()
.eq(AskPatientAnswer::getPatientId, patient.getId())
.eq(AskPatientAnswer::getRequireCheck, 1).list();
// 获取必问的项目
Set<String> requireCheckIdSet = list.stream().map(AskDiseaseQuestionAnswer::getId).collect(Collectors.toSet());
Set<String> requireCheckIdSet = list.stream().map(AskPatientAnswer::getId).collect(Collectors.toSet());
List<BasisDiagnosisNodeResVO> qaList = qaRecordList.stream().map(e -> {
BasisDiagnosisNodeResVO node = new BasisDiagnosisNodeResVO();
node.setType(0);
@ -208,9 +209,12 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
}
private ExpertDiagnosisResultResVO creatExpertDiagnosisResult(DiagnosisResult diagnosisResult, Patient patient, List<Disease> diseasesList) {
/**
*
*/
private ExpertDiagnosisResultResVO creatExpertDiagnosisResult(MedicalRec medicalRec, DiagnosisResult diagnosisResult, List<Disease> diseasesList) {
ExpertDiagnosisResultResVO expertDiagnosisResultResVO = new ExpertDiagnosisResultResVO();
expertDiagnosisResultResVO.setDiagnosis(patient.getExpectedDiagnosisResult());
expertDiagnosisResultResVO.setDiagnosis(medicalRec.getExpectDiagnosisResult());
Set<String> expertDiseaseIdSet = diseasesList.stream().map(Disease::getId).collect(Collectors.toSet());
List<Disease> userDiagnosisDiseaseList = diseaseService.listByIds(diagnosisResult.getFinalDiagnosis());
// 用户的诊断

@ -59,7 +59,7 @@ public class AskPhysicalServiceImpl implements AskPhysicalService {
.oneOpt().orElseThrow(() -> new BusinessException("未找到对应部位"));
locationId = location.getId();
}
DiseasePhysical result = diseasePhysicalService.lambdaQuery().eq(DiseasePhysical::getPatientId, process.getPatientId())
DiseasePhysical result = diseasePhysicalService.lambdaQuery().eq(DiseasePhysical::getMedicalRecId, process.getMedicalRecId())
.eq(DiseasePhysical::getToolId, tool.getId()).eq(StrUtil.isNotBlank(locationId), DiseasePhysical::getLocationId, locationId).last("limit 1")
.oneOpt()
.orElseGet(() -> {

@ -1,14 +1,18 @@
package com.supervision.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.exception.BusinessException;
import com.supervision.model.AskPatientAnswer;
import com.supervision.model.AskTemplateQuestionLibrary;
import com.supervision.model.DiagnosisQaRecord;
import com.supervision.model.Process;
import com.supervision.pojo.vo.TalkReqVO;
import com.supervision.pojo.vo.TalkResultResVO;
import com.supervision.service.AskDefaultQuestionAnswerService;
import com.supervision.service.AskDiseaseQuestionAnswerService;
import com.supervision.service.AskPatientAnswerService;
import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.service.ProcessService;
import com.supervision.util.*;
import com.supervision.service.AskService;
@ -31,9 +35,9 @@ public class AskServiceImpl implements AskService {
private final ProcessService processService;
private final AskDiseaseQuestionAnswerService askDiseaseQuestionAnswerService;
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
private final AskDefaultQuestionAnswerService askDefaultQuestionAnswerService;
private final AskPatientAnswerService askPatientAnswerService;
@Override
@ -56,11 +60,17 @@ public class AskServiceImpl implements AskService {
@Override
@Transactional(rollbackFor = Exception.class)
public TalkResultResVO talk(TalkReqVO talkReqVO) throws IOException {
public TalkResultResVO talk(TalkReqVO talkReqVO) {
// 根据processId找到对应的病人
Process process = Optional.ofNullable(processService.getById(talkReqVO.getProcessId())).orElseThrow(() -> new BusinessException("未找到诊疗进程"));
// 调用rasa获取文字内容
String rasaResult = RasaUtil.talkRasa(talkReqVO.getText(), UserUtil.getUser().getId(), process.getPatientId());
// 如果rasa没有识别出来,则返回默认值
if (StrUtil.isBlank(rasaResult)) {
// 这里调用京东数字人接口首先根据token获取房间号
String roomId = HumanUtil.queryRoomId(talkReqVO.getRoomKey(), talkReqVO.getRoomToken());
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
}
TalkResultResVO talkResultResVO = new TalkResultResVO();
// 这里校验,rasa回复的结果是不是action
// 这里设置的模板,对于action的动作全部是用ancillary_ | tool_进行标记,详情看生成rasa的yml的代码:RasaServiceImpl.generateDomain
@ -77,42 +87,28 @@ public class AskServiceImpl implements AskService {
return talkResultResVO;
}
} else {
// 语音消息,这时调用京东的接口进行播放操作
// 这里调用京东数字人接口首先根据token获取房间号
String roomId = HumanUtil.queryRoomId(talkReqVO.getRoomKey(), talkReqVO.getRoomToken());
// 区分
List<String> answerIdList = StrUtil.split(rasaResult, '_');
String qaId = null;
String qaType = "miss";
String answer = "您好,我没有听懂您说什么";
if (answerIdList.size() > 1) {
if (rasaResult.startsWith("default_")) {
qaType = "default";
List<String> answerList = Optional.ofNullable(askDefaultQuestionAnswerService.getById(answerIdList.get(1)).getAnswer())
.orElse(CollUtil.newArrayList("您好,我没有听懂您说什么"));
answer = answerList.get(new Random().nextInt(answerList.size()));
qaId = answerIdList.get(1);
} else if (rasaResult.startsWith("disease_")) {
qaType = "disease";
List<String> answerList = Optional.ofNullable(askDiseaseQuestionAnswerService.getById(answerIdList.get(1)).getAnswer())
.orElse(CollUtil.newArrayList("您好,我没有听懂您说什么"));
answer = answerList.get(new Random().nextInt(answerList.size()));
qaId = answerIdList.get(1);
AskTemplateQuestionLibrary library = askTemplateQuestionLibraryService.getById(rasaResult);
if (ObjectUtil.isEmpty(library)) {
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
} else {
AskPatientAnswer askPatientAnswer = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getPatientId, process.getPatientId())
.eq(AskPatientAnswer::getLibraryQuestionId, library.getId()).last("limit 1").one();
if (ObjectUtil.isEmpty(askPatientAnswer) || CollUtil.isEmpty(askPatientAnswer.getAnswer())) {
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
} else {
String resText = askPatientAnswer.getAnswer().get(RandomUtil.randomInt(0, askPatientAnswer.getAnswer().size()));
HumanUtil.textDriven(resText, roomId);
// 保存记录
DiagnosisQaRecord record = new DiagnosisQaRecord();
record.setProcessId(talkReqVO.getProcessId());
record.setQuestionAnswerId(askPatientAnswer.getId());
record.setQuestion(talkReqVO.getText());
record.setAnswer(resText);
record.setCreateUserId(UserUtil.getUser().getId());
record.insert();
}
}
// 然后这里进行播放
// 这里应该从对话中取结果
HumanUtil.textDriven(rasaResult, roomId);
// 保存记录
DiagnosisQaRecord record = new DiagnosisQaRecord();
record.setProcessId(talkReqVO.getProcessId());
record.setQuestionAnswerType(qaType);
record.setQuestionAnswerId(qaId);
record.setQuestion(talkReqVO.getText());
record.setAnswer(answer);
record.setCreateUserId(UserUtil.getUser().getId());
record.insert();
}
talkResultResVO.setType(1);
return talkResultResVO;

@ -7,15 +7,12 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.supervision.domain.GlobalResult;
import com.supervision.exception.BusinessException;
import com.supervision.model.*;
import com.supervision.pojo.paddlespeech.res.PaddleSpeechResDTO;
import com.supervision.pojo.paddlespeech.res.TtsResultDTO;
import com.supervision.pojo.rasa.train.DomainYmlTemplate;
import com.supervision.pojo.rasa.train.NluYmlTemplate;
import com.supervision.pojo.rasa.train.QuestionAnswerDTO;
@ -43,16 +40,13 @@ import java.util.zip.ZipOutputStream;
@RequiredArgsConstructor
public class RasaServiceImpl implements RasaService {
private final AskDefaultQuestionAnswerService askDefaultQuestionAnswerService;
private final AskDiseaseQuestionAnswerService askDiseaseQuestionAnswerService;
private final AskTemplateQuestionService askTemplateQuestionService;
private final ConfigPhysicalToolService configPhysicalToolService;
private final ConfigAncillaryItemService configAncillaryItemService;
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
private static final ObjectMapper objectMapper = new ObjectMapper();
@Value("${rasa.base-url}${rasa.saveRasaFile}")
@ -114,53 +108,20 @@ public class RasaServiceImpl implements RasaService {
Map<String, File> ymalFileMap) {
// 首先生成根据意图查找到nlu文件
List<NluYmlTemplate.Nlu> nluList = new ArrayList<>();
// 默认意图
List<AskDefaultQuestionAnswer> defaultQuestionAnswerList = askDefaultQuestionAnswerService.lambdaQuery().isNotNull(AskDefaultQuestionAnswer::getAnswer).list();
List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.lambdaQuery().list();
// 生成默认意图的nlu
for (AskDefaultQuestionAnswer defaultQA : defaultQuestionAnswerList) {
if (CollUtil.isNotEmpty(defaultQA.getQuestion()) && CollUtil.isNotEmpty(defaultQA.getAnswer())) {
// 开始生成
NluYmlTemplate.Nlu nlu = new NluYmlTemplate.Nlu();
// 拼接格式:code_id(防止重复)
String intentCode = defaultQA.getCode() + "_" + defaultQA.getId();
nlu.setIntent(intentCode);
nlu.setExamples(defaultQA.getQuestion());
nluList.add(nlu);
// 添加到map中,key为意图编码,value为意图ID
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(defaultQA.getQuestion(), CollUtil.newArrayList("default_" + defaultQA.getId()), defaultQA.getDescription()));
}
}
// 然后处理该疾病对应的意图
List<AskDiseaseQuestionAnswer> diseaseQuestionAnswerList = askDiseaseQuestionAnswerService.lambdaQuery()
.eq(AskDiseaseQuestionAnswer::getPatientId, patientId).list();
// 使用通用模板的
Map<String, AskTemplateQuestion> templateQuestionMap = new HashMap<>();
// 根据默认意图找到所有的问题
if (CollUtil.isNotEmpty(diseaseQuestionAnswerList)) {
// 首先找到使用通用模板的问题
List<AskDiseaseQuestionAnswer> templateQuestionList = diseaseQuestionAnswerList.stream()
.filter(e -> StrUtil.isNotBlank(e.getTemplateQuestionId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(templateQuestionList)) {
Set<String> templateQuestionIdList = templateQuestionList.stream().map(AskDiseaseQuestionAnswer::getTemplateQuestionId).collect(Collectors.toSet());
List<AskTemplateQuestion> list = askTemplateQuestionService.lambdaQuery().in(AskTemplateQuestion::getId, templateQuestionIdList).list();
templateQuestionMap = list.stream().collect(Collectors.toMap(AskTemplateQuestion::getId, Function.identity()));
}
}
// 这里开始遍历
for (AskDiseaseQuestionAnswer askDiseaseQuestionAnswer : diseaseQuestionAnswerList) {
// 如果走模板的问题
if (StrUtil.isNotBlank(askDiseaseQuestionAnswer.getTemplateQuestionId()) && templateQuestionMap.containsKey(askDiseaseQuestionAnswer.getTemplateQuestionId())) {
AskTemplateQuestion askTemplateQuestion = templateQuestionMap.get(askDiseaseQuestionAnswer.getTemplateQuestionId());
// 开始生成
NluYmlTemplate.Nlu nlu = new NluYmlTemplate.Nlu();
// 拼接格式:code_answerId(防止重复)
String intentCode = askTemplateQuestion.getCode() + "_" + askDiseaseQuestionAnswer.getId();
nlu.setIntent(intentCode);
nlu.setExamples(askTemplateQuestion.getQuestion());
nluList.add(nlu);
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(askTemplateQuestion.getQuestion(), CollUtil.newArrayList("disease_" + askDiseaseQuestionAnswer.getId()), askTemplateQuestion.getDescription()));
}
for (AskTemplateQuestionLibrary questionLibrary : askTemplateQuestionLibraryList) {
// 开始生成
NluYmlTemplate.Nlu nlu = new NluYmlTemplate.Nlu();
// 拼接格式:code_id(防止重复)
String intentCode = questionLibrary.getCode() + "_" + questionLibrary.getId();
nlu.setIntent(intentCode);
nlu.setExamples(questionLibrary.getQuestion());
nluList.add(nlu);
// 添加到map中,key为意图编码,value为意图ID
intentCodeAndIdMap.put(intentCode, new QuestionAnswerDTO(questionLibrary.getQuestion(), CollUtil.newArrayList( questionLibrary.getId()), questionLibrary.getDescription()));
}
// 这里处理呼出的问题(code和问题不能为空)

Loading…
Cancel
Save