diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryRelationMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryRelationMapper.java new file mode 100644 index 00000000..868338b3 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryRelationMapper.java @@ -0,0 +1,18 @@ +package com.supervision.mapper; + +import com.supervision.model.DiagnosisPrimaryRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author flevance +* @description 针对表【vp_diagnosis_primary_relation(初步诊断依据关系表)】的数据库操作Mapper +* @createDate 2023-12-07 10:28:30 +* @Entity com.supervision.model.DiagnosisPrimaryRelation +*/ +public interface DiagnosisPrimaryRelationMapper extends BaseMapper { + +} + + + + diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisAncillaryRecord.java b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisAncillaryRecord.java index 15d87809..f4826bfc 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisAncillaryRecord.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisAncillaryRecord.java @@ -45,12 +45,6 @@ public class DiagnosisAncillaryRecord extends Model im @ApiModelProperty("项目ID") private String itemId; - /** - * 初步诊断ID - */ - @ApiModelProperty("初步诊断ID") - private String primaryId; - /** * 检查结果 */ diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPhysicalRecord.java b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPhysicalRecord.java index 53457328..17d34191 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPhysicalRecord.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPhysicalRecord.java @@ -50,12 +50,6 @@ public class DiagnosisPhysicalRecord extends Model impl @ApiModelProperty("体格检查部位ID") private String locationId; - /** - * 初步诊断ID - */ - @ApiModelProperty("初步诊断ID") - private String primaryId; - /** * 体格检查结果 */ diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java new file mode 100644 index 00000000..02df1d9d --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java @@ -0,0 +1,68 @@ +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 com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * 初步诊断依据关系表 + * @TableName vp_diagnosis_primary_relation + */ +@TableName(value ="vp_diagnosis_primary_relation") +@Data +public class DiagnosisPrimaryRelation extends Model implements Serializable { + /** + * 主键 + */ + @TableId + private String id; + + /** + * 问诊流程ID + */ + private String processId; + + /** + * 初步诊断ID + */ + private String primaryId; + + /** + * 1 问诊(vp_diagnosis_qa_record) 2 体格检查(vp_diagnosis_physical_record) 3 辅助检查(vp_diagnosis_ancillary_record) + */ + private Integer type; + + /** + * 关联关系ID + */ + private String relationId; + + /** + * 创建人ID + */ + private String createUserId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateUserId; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryRelationService.java b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryRelationService.java new file mode 100644 index 00000000..e5f32062 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryRelationService.java @@ -0,0 +1,13 @@ +package com.supervision.service; + +import com.supervision.model.DiagnosisPrimaryRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author flevance +* @description 针对表【vp_diagnosis_primary_relation(初步诊断依据关系表)】的数据库操作Service +* @createDate 2023-12-07 10:28:30 +*/ +public interface DiagnosisPrimaryRelationService extends IService { + +} diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryRelationServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryRelationServiceImpl.java new file mode 100644 index 00000000..a51bf631 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryRelationServiceImpl.java @@ -0,0 +1,22 @@ +package com.supervision.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.supervision.model.DiagnosisPrimaryRelation; +import com.supervision.service.DiagnosisPrimaryRelationService; +import com.supervision.mapper.DiagnosisPrimaryRelationMapper; +import org.springframework.stereotype.Service; + +/** +* @author flevance +* @description 针对表【vp_diagnosis_primary_relation(初步诊断依据关系表)】的数据库操作Service实现 +* @createDate 2023-12-07 10:28:30 +*/ +@Service +public class DiagnosisPrimaryRelationServiceImpl extends ServiceImpl + implements DiagnosisPrimaryRelationService{ + +} + + + + diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/AskPhysicalHistoryResVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/AskPhysicalHistoryResVO.java index 0d35869d..58e430a3 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/ask/AskPhysicalHistoryResVO.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/AskPhysicalHistoryResVO.java @@ -28,9 +28,6 @@ public class AskPhysicalHistoryResVO { @ApiModelProperty("体格检查结果") private String result; - @ApiModelProperty("关联的初步诊断ID") - private String primaryId; - @ApiModelProperty("检查时间") private LocalDateTime createTime; } diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisAncillaryRecordMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisAncillaryRecordMapper.xml index dfe79957..dacad4c7 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisAncillaryRecordMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisAncillaryRecordMapper.xml @@ -41,7 +41,6 @@ select t2.item_name as itemName, t2.id as itemId, t1.result as result, - t1.primary_id as primaryId, t1.id as id, t1.create_time as createTime from vp_diagnosis_ancillary_record t1 diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisPhysicalRecordMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisPhysicalRecordMapper.xml index 165e2bad..fa25ada9 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisPhysicalRecordMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisPhysicalRecordMapper.xml @@ -50,7 +50,6 @@ t4.id as locationId, t1.id as id, t1.result as result, - t1.primary_id as primaryId, t1.create_time as createTime from vp_diagnosis_physical_record t1 left join vp_config_physical_tool t3 on t1.tool_id = t3.id diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryRelationMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryRelationMapper.xml new file mode 100644 index 00000000..79be3b7e --- /dev/null +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryRelationMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + id,process_id,primary_id, + type,relation_id,create_user_id, + create_time,update_user_id,update_time + + diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/AskPhysicalResultReqVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/AskPhysicalResultReqVO.java index 8174b7b7..03f31657 100644 --- a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/AskPhysicalResultReqVO.java +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/AskPhysicalResultReqVO.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -17,8 +18,8 @@ public class AskPhysicalResultReqVO { @ApiModelProperty("位置编码") private String locationCode; - @ApiModelProperty("初步诊断ID") - private String primaryId; + @ApiModelProperty("初步诊断ID列表") + private List primaryIdList; @NotBlank(message = "流程ID不能为空") @ApiModelProperty("流程ID") diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskAncillaryServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskAncillaryServiceImpl.java index f8d23773..5d37ae23 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskAncillaryServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskAncillaryServiceImpl.java @@ -1,6 +1,7 @@ package com.supervision.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.supervision.dto.DiseaseAncillaryDto; import com.supervision.exception.BusinessException; @@ -56,10 +57,8 @@ public class AskAncillaryServiceImpl implements AskAncillaryService { .orElseThrow(() -> new BusinessException("流程ID不能为空")).getProcessId())) .orElseThrow(() -> new BusinessException("未找到流程ID")); for (AskAncillaryBatchReqVO item : reqVO) { - for (String primaryId : item.getPrimaryId()) { // 执行并保存结果 - execSaveDiagnosisAncillaryRecord(item.getAncillaryItemId(), primaryId, process); - } + execSaveDiagnosisAncillaryRecord(item.getAncillaryItemId(), item.getPrimaryId(), process); } } @@ -68,14 +67,14 @@ public class AskAncillaryServiceImpl implements AskAncillaryService { public DiagnosisAncillaryRecordVo execAskAncillaryResult(AskAncillaryResultReqVO reqVO) { // 首先根据process_id查新到流程ID Process process = Optional.ofNullable(processService.getById(reqVO.getProcessId())).orElseThrow(() -> new BusinessException("未找到流程ID")); - DiagnosisAncillaryRecord record = execSaveDiagnosisAncillaryRecord(reqVO.getItemId(), reqVO.getPrimaryId(), process); + DiagnosisAncillaryRecord record = execSaveDiagnosisAncillaryRecord(reqVO.getItemId(), CollUtil.newArrayList(reqVO.getPrimaryId()), process); //重组返回结果 DiagnosisAncillaryRecordVo recordVo = BeanUtil.toBean(record, DiagnosisAncillaryRecordVo.class); recordVo.setAncillaryName(record.getItemName()); return recordVo; } - private DiagnosisAncillaryRecord execSaveDiagnosisAncillaryRecord(String itemId, String primaryId, Process process) { + private DiagnosisAncillaryRecord execSaveDiagnosisAncillaryRecord(String itemId, List primaryIdList, Process process) { // 找到对应的项目的检查结果 DiseaseAncillary diseaseAncillaryQueryBean = new DiseaseAncillary(); diseaseAncillaryQueryBean.setItemId(itemId); @@ -89,13 +88,25 @@ public class AskAncillaryServiceImpl implements AskAncillaryService { DiagnosisAncillaryRecord record = new DiagnosisAncillaryRecord(); record.setProcessId(process.getId()); record.setItemId(itemId); - record.setPrimaryId(primaryId); record.setAncillaryId(diseaseAncillary.getId()); record.setResult(diseaseAncillary.getResult()); record.setCreateUserId(UserUtil.getUser().getId()); record.setUpdateUserId(UserUtil.getUser().getId()); record.insert(); record.setItemName(diseaseAncillary.getItemName()); + + // 保存初步诊断的关联关系 + for (String primaryId : primaryIdList) { + DiagnosisPrimaryRelation diagnosisPrimaryRelation = new DiagnosisPrimaryRelation(); + diagnosisPrimaryRelation.setProcessId(process.getId()); + diagnosisPrimaryRelation.setPrimaryId(primaryId); + diagnosisPrimaryRelation.setType(3); + diagnosisPrimaryRelation.setRelationId(record.getId()); + diagnosisPrimaryRelation.insert(); + } + + + return record; } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java index 3e997883..0bd8e5ec 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java @@ -1,5 +1,6 @@ package com.supervision.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.supervision.exception.BusinessException; @@ -76,13 +77,25 @@ public class AskPhysicalServiceImpl implements AskPhysicalService { diagnosisPhysicalRecord.setPhysicalId(result.getId()); diagnosisPhysicalRecord.setToolId(tool.getId()); diagnosisPhysicalRecord.setLocationId(location.getId()); - diagnosisPhysicalRecord.setPrimaryId(reqVO.getPrimaryId()); diagnosisPhysicalRecord.setResult(result.getResult()); diagnosisPhysicalRecord.setCreateUserId(UserUtil.getUser().getCreateUserId()); diagnosisPhysicalRecord.setUpdateUserId(UserUtil.getUser().getCreateUserId()); diagnosisPhysicalRecord.insert(); - return initDiagnosisPhysicalRecordVo(reqVO.getPrimaryId(), process.getId(), result, tool, location); + // 保存初步诊断 + for (String primaryId : reqVO.getPrimaryIdList()) { + DiagnosisPrimaryRelation diagnosisPrimaryRelation = new DiagnosisPrimaryRelation(); + diagnosisPrimaryRelation.setProcessId(process.getId()); + diagnosisPrimaryRelation.setPrimaryId(primaryId); + diagnosisPrimaryRelation.setType(2); + diagnosisPrimaryRelation.setRelationId(diagnosisPhysicalRecord.getId()); + diagnosisPrimaryRelation.insert(); + } + + DiagnosisPhysicalRecordVo resVo = BeanUtil.toBean(diagnosisPhysicalRecord, DiagnosisPhysicalRecordVo.class); + resVo.setLocationName(location.getLocationName()); + resVo.setToolName(tool.getToolName()); + return resVo; } @@ -93,21 +106,6 @@ public class AskPhysicalServiceImpl implements AskPhysicalService { } - private static DiagnosisPhysicalRecordVo initDiagnosisPhysicalRecordVo(String primaryId, String processId, - DiseasePhysical result, ConfigPhysicalTool tool, - ConfigPhysicalLocation location) { - DiagnosisPhysicalRecordVo diagnosisPhysicalRecordVo = new DiagnosisPhysicalRecordVo(); - diagnosisPhysicalRecordVo.setProcessId(processId); - diagnosisPhysicalRecordVo.setToolId(tool.getToolName()); - diagnosisPhysicalRecordVo.setToolName(tool.getToolName()); - diagnosisPhysicalRecordVo.setLocationId(location.getId()); - diagnosisPhysicalRecordVo.setLocationName(location.getLocationName()); - diagnosisPhysicalRecordVo.setPrimaryId(primaryId); - diagnosisPhysicalRecordVo.setPhysicalId(result.getId()); - diagnosisPhysicalRecordVo.setResult(result.getResult()); - return diagnosisPhysicalRecordVo; - } - public static Predicate distinctPredicateNotNull(Function function){ ConcurrentHashMap map = new ConcurrentHashMap<>(); return t-> null != function.apply(t) && null == map.putIfAbsent(function.apply(t), true);