医生站-查询诊断分类数据

This commit is contained in:
Wang.Huan
2025-03-12 10:58:04 +08:00
parent 4d5c89466b
commit 4dbc0af031
7 changed files with 137 additions and 21 deletions

View File

@@ -66,4 +66,12 @@ public interface IDoctorStationDiagnosisAppService {
*/ */
R<?> saveDoctorDiagnosis(SaveDiagnosisParam saveDiagnosisParam); R<?> saveDoctorDiagnosis(SaveDiagnosisParam saveDiagnosisParam);
/**
* 查询诊断定义业务分类数据
*
* @param patientId 患者id
* @return 诊断定义业务分类数据
*/
R<?> getConditionDefinitionBusinessClass(Long patientId);
} }

View File

@@ -33,10 +33,7 @@ import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisPageUtils; import com.openhis.common.utils.HisPageUtils;
import com.openhis.common.utils.HisQueryUtils; import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.doctorstation.appservice.IDoctorStationDiagnosisAppService; import com.openhis.web.doctorstation.appservice.IDoctorStationDiagnosisAppService;
import com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata; import com.openhis.web.doctorstation.dto.*;
import com.openhis.web.doctorstation.dto.DiagnosisBelongBindingDto;
import com.openhis.web.doctorstation.dto.SaveDiagnosisChildParam;
import com.openhis.web.doctorstation.dto.SaveDiagnosisParam;
import com.openhis.web.doctorstation.mapper.DoctorStationDiagnosisAppMapper; import com.openhis.web.doctorstation.mapper.DoctorStationDiagnosisAppMapper;
/** /**
@@ -165,22 +162,7 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn
// 诊断信息 // 诊断信息
Page<ConditionDefinitionMetadata> conditionDefinitionMetadataPage = HisPageUtils Page<ConditionDefinitionMetadata> conditionDefinitionMetadataPage = HisPageUtils
.selectPage(conditionDefinitionMapper, queryWrapper, pageNo, pageSize, ConditionDefinitionMetadata.class); .selectPage(conditionDefinitionMapper, queryWrapper, pageNo, pageSize, ConditionDefinitionMetadata.class);
conditionDefinitionMetadataPage.getRecords().forEach(e -> { this.handleConditionDefinitionMetadata(conditionDefinitionMetadataPage.getRecords());
// 所属分类
e.setSourceEnum_enumText(EnumUtils.getInfoByValue(ConditionDefinitionSource.class, e.getSourceEnum()));
// 中医诊断/西医诊断
if (ConditionDefinitionSource.TRADITIONAL_CHINESE_MEDICINE_DIAGNOSIS.getValue().equals(e.getSourceEnum())
|| ConditionDefinitionSource.TRADITIONAL_CHINESE_MEDICINE_SYNDROME_CATALOG.getValue()
.equals(e.getSourceEnum())) {
e.setTypeName(CommonConstants.BusinessName.TCM_DIAGNOSIS);
} else {
e.setTypeName(CommonConstants.BusinessName.WESTERN_MEDICINE_DIAGNOSIS);
}
// 医保标记
e.setYbFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getYbFlag()));
// 医保对码标记
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getYbMatchFlag()));
});
return conditionDefinitionMetadataPage; return conditionDefinitionMetadataPage;
} }
@@ -219,8 +201,51 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn
encounterDiagnosis.setMaindiseFlag(saveDiagnosisChildParam.getMaindiseFlag()); encounterDiagnosis.setMaindiseFlag(saveDiagnosisChildParam.getMaindiseFlag());
iEncounterDiagnosisService.save(encounterDiagnosis); iEncounterDiagnosisService.save(encounterDiagnosis);
} }
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊断"})); return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊断"}));
} }
/**
* 查询诊断定义业务分类数据
*
* @param patientId 患者id
* @return 诊断定义业务分类数据
*/
@Override
public R<?> getConditionDefinitionBusinessClass(Long patientId) {
// 诊断定义业务分类信息
ConditionDefinitionBusinessClass conditionDefinitionBusinessClass = new ConditionDefinitionBusinessClass();
// 病人历史诊断
List<ConditionDefinitionMetadata> patientHistoryList =
doctorStationDiagnosisAppMapper.getPatientHistoryList(PublicationStatus.ACTIVE.getValue(), patientId);
this.handleConditionDefinitionMetadata(patientHistoryList);
conditionDefinitionBusinessClass.setPatientHistoryList(patientHistoryList);
//
return R.ok(conditionDefinitionBusinessClass);
}
/**
* 处理诊断定义元数据
*
* @param conditionDefinitionMetadataList 诊断定义元数据集合
*/
private void handleConditionDefinitionMetadata(List<ConditionDefinitionMetadata> conditionDefinitionMetadataList) {
conditionDefinitionMetadataList.forEach(e -> {
// 所属分类
e.setSourceEnum_enumText(EnumUtils.getInfoByValue(ConditionDefinitionSource.class, e.getSourceEnum()));
// 中医诊断/西医诊断
if (ConditionDefinitionSource.TRADITIONAL_CHINESE_MEDICINE_DIAGNOSIS.getValue().equals(e.getSourceEnum())
|| ConditionDefinitionSource.TRADITIONAL_CHINESE_MEDICINE_SYNDROME_CATALOG.getValue()
.equals(e.getSourceEnum())) {
e.setTypeName(CommonConstants.BusinessName.TCM_DIAGNOSIS);
} else {
e.setTypeName(CommonConstants.BusinessName.WESTERN_MEDICINE_DIAGNOSIS);
}
// 医保标记
e.setYbFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getYbFlag()));
// 医保对码标记
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getYbMatchFlag()));
});
}
} }

View File

@@ -5,6 +5,7 @@ import java.util.HashSet;
import javax.annotation.Resource; import javax.annotation.Resource;
import com.core.common.utils.SecurityUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -49,6 +50,9 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer
// 构建查询条件 // 构建查询条件
QueryWrapper<PatientInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper(patientInfoDto, searchKey, QueryWrapper<PatientInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper(patientInfoDto, searchKey,
new HashSet<>(Arrays.asList("patient_name", "id_card", "phone")), null); new HashSet<>(Arrays.asList("patient_name", "id_card", "phone")), null);
// TODO: userId(当前登录账号ID) 和 currentUserOrganizationId(当前登录账号所属的科室ID) 待补充
// 当前登录账号ID
Long userId = SecurityUtils.getLoginUser().getUserId();
IPage<PatientInfoDto> patientInfo = doctorStationMainAppMapper.getPatientInfo(new Page<>(pageNo, pageSize), IPage<PatientInfoDto> patientInfo = doctorStationMainAppMapper.getPatientInfo(new Page<>(pageNo, pageSize),
ParticipantType.ADMITTER.getCode(), ClinicalStatus.INACTIVE.getValue(), null, null, queryWrapper); ParticipantType.ADMITTER.getCode(), ClinicalStatus.INACTIVE.getValue(), null, null, queryWrapper);
patientInfo.getRecords().forEach(e -> { patientInfo.getRecords().forEach(e -> {

View File

@@ -137,4 +137,15 @@ public class DoctorStationDiagnosisController {
return iDoctorStationDiagnosisAppService.saveDoctorDiagnosis(saveDiagnosisParam); return iDoctorStationDiagnosisAppService.saveDoctorDiagnosis(saveDiagnosisParam);
} }
/**
* 查询诊断定义业务分类数据
*
* @param patientId 患者id
* @return 诊断定义业务分类数据
*/
@GetMapping(value = "/get-condition-definition-class")
public R<?> getConditionDefinitionBusinessClass(@RequestParam Long patientId) {
return iDoctorStationDiagnosisAppService.getConditionDefinitionBusinessClass(patientId);
}
} }

View File

@@ -0,0 +1,34 @@
package com.openhis.web.doctorstation.dto;
import java.util.List;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 诊断定义 业务分类
*/
@Data
@Accessors(chain = true)
public class ConditionDefinitionBusinessClass {
/**
* 病人历史诊断
*/
List<ConditionDefinitionMetadata> patientHistoryList;
/**
* 医生常用诊断
*/
List<ConditionDefinitionMetadata> doctorCommonUseList;
/**
* 用户个人诊断
*/
List<ConditionDefinitionMetadata> userPersonalList;
/**
* 科室诊断
*/
List<ConditionDefinitionMetadata> organizationList;
}

View File

@@ -1,5 +1,7 @@
package com.openhis.web.doctorstation.mapper; package com.openhis.web.doctorstation.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -7,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata;
import com.openhis.web.doctorstation.dto.DiagnosisBelongBindingDto; import com.openhis.web.doctorstation.dto.DiagnosisBelongBindingDto;
/** /**
@@ -28,4 +31,14 @@ public interface DoctorStationDiagnosisAppMapper {
@Param("bindingType1") Integer bindingType1, @Param("bindingType2") Integer bindingType2, @Param("bindingType1") Integer bindingType1, @Param("bindingType2") Integer bindingType2,
@Param(Constants.WRAPPER) QueryWrapper<DiagnosisBelongBindingDto> queryWrapper); @Param(Constants.WRAPPER) QueryWrapper<DiagnosisBelongBindingDto> queryWrapper);
/**
* 查询病人历史诊断
*
* @param statusEnum 状态
* @param patientId 患者id
* @return 病人历史诊断
*/
List<ConditionDefinitionMetadata> getPatientHistoryList(@Param("statusEnum") Integer statusEnum,
@Param("patientId") Long patientId);
} }

View File

@@ -37,4 +37,25 @@
${ew.customSqlSegment} ${ew.customSqlSegment}
</select> </select>
<select id="getPatientHistoryList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T1.ID,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
AND EXISTS(
SELECT 1
FROM cli_condition AS T2
WHERE T2.delete_flag = '0'
AND T2.definition_id IS NOT NULL
AND T2.patient_id = #{patientId}
AND T2.definition_id = T1.ID
)
</select>
</mapper> </mapper>