package com.openhis.administration.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.administration.domain.EncounterDiagnosis;
import com.openhis.common.enums.ybenums.YbIptDiseTypeCode;

/**
 * 就诊诊断管理Service接口
 *
 * @author system
 * @date 2025-02-20
 */
public interface IEncounterDiagnosisService extends IService<EncounterDiagnosis> {

    /**
     * 删除就诊信息
     * 
     * @param encounterId 就诊id
     */
    void deleteEncounterDiagnosisInfos(Long encounterId);

    /**
     * 删除中医诊断
     *
     * @param encounterId 就诊id
     */
    void deleteTcmEncounterDiagnosisInfos(Long encounterId);

    /**
     * 查询 med_type 类型
     * 
     * @param encounterId 就诊id
     * @return 诊断集合
     */
    List<String> getMetTypeList(Long encounterId);

    /**
     * 查询 EncounterDiagnosis
     * 
     * @param encounterId 就诊id
     * @return 诊断集合
     */
    List<EncounterDiagnosis> getDiagnosisList(Long encounterId);

    /**
     * 查询 EncounterDiagnosis
     * 
     * @param encounterId 就诊id
     * @param ybIptDiseTypeCode 诊断类型
     * @return 诊断集合
     */
    List<EncounterDiagnosis> getDiagnosisList(Long encounterId, YbIptDiseTypeCode ybIptDiseTypeCode);

    /**
     * 查询 EncounterDiagnosis
     * 
     * @param diaIdList 诊断主键id
     * @return 诊断集合
     */
    List<EncounterDiagnosis> getDiagnosisList(List<Long> diaIdList);

    /**
     * 在诊断中筛选主诊断
     * 
     * @param list 诊断集合
     * @return 主诊断
     */
    EncounterDiagnosis getMainDiagnosis(List<EncounterDiagnosis> list);

    /**
     * 根据就诊id定义id等查询就诊诊断
     * 
     * @param encounterId 就诊id
     * @param conditionDefId 定义id
     * @param tenantId 租户
     * @return 查询结果
     */
    EncounterDiagnosis getEncounterDiagnosisByEncounterConDefId(Long encounterId, Long conditionDefId,
        Integer tenantId);
}