package com.openhis.web.doctorstation.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.openhis.web.doctorstation.dto.DiagnosisQueryDto;
import com.openhis.web.doctorstation.dto.RequestBaseDto;

/**
 * 医生站-中医 应用Mapper
 */
@Repository
public interface DoctorStationChineseMedicalAppMapper {

    /**
     * 查询中医就诊诊断信息
     *
     * @param encounterId 就诊id
     * @return 中医就诊诊断信息
     */
    List<DiagnosisQueryDto> getTcmEncounterDiagnosis(@Param("encounterId") Long encounterId);

    /**
     * 查询中医医嘱请求数据
     *
     * @param encounterId 就诊id
     * @param patientId 患者id
     * @param MED_MEDICATION_REQUEST 药品请求表名
     * @param WOR_DEVICE_REQUEST 耗材请求表名
     * @param WOR_SERVICE_REQUEST 诊疗请求表名
     * @param practitionerId 当前账号的参与者id
     * @param historyFlag 历史医嘱标记
     * @param generateSourceEnum 生成来源
     * @return 中医医嘱请求数据
     */
    List<RequestBaseDto> getTcmRequestBaseInfo(@Param("encounterId") Long encounterId,
        @Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
        @Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
        @Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
        @Param("historyFlag") String historyFlag, @Param("generateSourceEnum") Integer generateSourceEnum);

    /**
     * 查询中医医嘱历史请求数据
     *
     * @param encounterId 就诊id
     * @param patientId 患者id
     * @param MED_MEDICATION_REQUEST 药品请求表名
     * @param WOR_DEVICE_REQUEST 耗材请求表名
     * @param WOR_SERVICE_REQUEST 诊疗请求表名
     * @param practitionerId 当前账号的参与者id
     * @param historyFlag 历史医嘱标记
     * @param generateSourceEnum 生成来源
     * @return 中医医嘱历史请求数据
     */
    List<RequestBaseDto> getTcmRequestHistoryInfo(@Param("encounterId") Long encounterId,
        @Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
        @Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
        @Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
        @Param("historyFlag") String historyFlag, @Param("generateSourceEnum") Integer generateSourceEnum);

    /**
     * 查询中医诊断id集合
     * 
     * @param syndromeGroupNo 中医证候组号
     * @return 中医诊断id集合
     */
    List<Long> getConditionIds(@Param("syndromeGroupNo") String syndromeGroupNo);

    /**
     * 根据诊断id集合查询对应开立的医嘱个数
     * 
     * @param conditionIds 诊断id集合
     * @return 开立的医嘱个数
     */
    Integer getAdviceNumByConditionIds(@Param("conditionIds") List<Long> conditionIds);

}
