package com.diagbot.client.hystrix;

import com.diagbot.client.TranServiceClient;
import com.diagbot.dto.DoctorInfoDTO;
import com.diagbot.dto.GetDiseaseIcdDTO;
import com.diagbot.dto.GetTopPatientInfoDTO;
import com.diagbot.dto.HospitalDeptInfoDTO;
import com.diagbot.dto.HospitalInfoDTO;
import com.diagbot.dto.LisConfigDTO;
import com.diagbot.dto.PatientInfoDTO;
import com.diagbot.dto.RespDTO;
import com.diagbot.dto.TranFieldInfoDTO;
import com.diagbot.entity.DoctorInfo;
import com.diagbot.entity.HospitalDept;
import com.diagbot.entity.PatientInfo;
import com.diagbot.vo.DoctorInfoVO;
import com.diagbot.vo.GetDiseaseIcdVO;
import com.diagbot.vo.GetTopPatientInfoVO;
import com.diagbot.vo.HosCodeVO;
import com.diagbot.vo.HospitalDeptInfoVO;
import com.diagbot.vo.HospitalInfoVO;
import com.diagbot.vo.LisHospitalCodeVO;
import com.diagbot.vo.PatientInfoVO;
import com.diagbot.vo.SaveInquiryToHisVO;
import com.diagbot.vo.TranFieldInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * @Description: 调用信息对接层服务
 * @author: gaodm
 * @time: 2019/2/1 17:00
 */
@Component
@Slf4j
public class TranServiceHystrix implements TranServiceClient {
    @Override
    public RespDTO<List<DoctorInfoDTO>> getDoctorInfo(@Valid DoctorInfoVO doctorInfoVo) {
        log.error("【hystrix】调用{}异常", "getDoctorInfo");
        return null;
    }

    @Override
    public RespDTO<Map<Long, DoctorInfo>> doctorInfoMapByIds(List<Long> ids) {
        log.error("【hystrix】调用{}异常", "doctorInfoMapByIds");
        return null;
    }

    @Override
    public RespDTO<List<HospitalInfoDTO>> getHospitalInfo(HospitalInfoVO hospitalInfoVO) {
        log.error("【hystrix】调用{}异常", "getHospitalInfo");
        return null;
    }

    @Override
    public RespDTO<HospitalDeptInfoDTO> getHospitalDeptInfo(HospitalDeptInfoVO hospitalDeptInfoVO) {
        log.error("【hystrix】调用{}异常", "getHospitalDeptInfo");
        return null;
    }

    @Override
    public RespDTO<Map<Long, HospitalDept>> hospitalDeptInfoMapByIds(List<Long> ids) {
        log.error("【hystrix】调用{}异常", "hospitalDeptInfoMapByIds");
        return null;
    }

    @Override
    public RespDTO<List<LisConfigDTO>> getLisConfigByhospitalId(LisHospitalCodeVO lisHospitalCodeVO) {
        log.error("【hystrix】调用{}异常", "getLisConfigByhospitalId");
        return null;
    }

    @Override
    public RespDTO<PatientInfoDTO> getPatientInfo(PatientInfoVO patientInfoVO) {
        log.error("【hystrix】调用{}异常", "getPatientInfo");
        return null;
    }

    @Override
    public RespDTO<GetTopPatientInfoDTO> getTopPatientInfo(GetTopPatientInfoVO getTopPatientInfoVO) {
        log.error("【hystrix】调用{}异常", "getTopPatientInfo");
        return null;
    }

    @Override
    public RespDTO<Map<Long, PatientInfo>> patientInfoMapByIds(List<Long> ids) {
        log.error("【hystrix】调用{}异常", "patientInfoMapByIds");
        return null;
    }

    @Override
    public RespDTO<List<TranFieldInfoDTO>> getInfoByUuid(TranFieldInfoVO tranFieldInfoVO) {
        log.error("【hystrix】调用{}异常", "getInfoByUuid");
        return null;
    }

    @Override
    public RespDTO<List<GetDiseaseIcdDTO>> getDiseaseIcds(GetDiseaseIcdVO getDiseaseIcdVO) {
        log.error("【hystrix】调用{}异常", "getDiseaseIcds");
        return null;
    }

    @Override
    public RespDTO<Boolean> saveInquiryToHis(SaveInquiryToHisVO saveInquiryToHisVO) {
        log.error("【hystrix】调用{}异常", "saveInquiryToHis");
        return null;
    }


    //    @Override
    //    public Response<ResponseData> bayesPageData(SearchData searchData) {
    //        log.error("【hystrix】调用{}异常", "bayesPageData");
    //        return null;
    //    }

    /**
     * 根据医院编码获取化验公表映射关系-itemName不为空
     *
     * @param hosCodeVO
     * @return
     */
    @Override
    public RespDTO<Map<String, Map<String, String>>> getLisConfigByHosCode_NotEmptyItemName(@RequestBody HosCodeVO hosCodeVO) {
        log.error("【hystrix】调用{}异常", "getLisConfigByHosCode_NotEmptyItemName");
        return null;
    }

    /**
     * 根据医院编码获取化验公表映射关系-itemName为空
     *
     * @param hosCodeVO
     * @return
     */
    @Override
    public RespDTO<Map<String, String>> getLisConfigByHosCode_EmptyItemName(@RequestBody HosCodeVO hosCodeVO) {
        log.error("【hystrix】调用{}异常", "getLisConfigByHosCode_EmptyItemName");
        return null;
    }

    /**
     * 根据医院编码获取辅检公表映射关系
     *
     * @param hosCodeVO
     * @return
     */
    @Override
    public RespDTO<Map<String, String>> getPacsConfigByHosCode(@RequestBody HosCodeVO hosCodeVO) {
        log.error("【hystrix】调用{}异常", "getPacsConfigByHosCode");
        return null;
    }

    /**
     * 根据医院编码获取提示信息标题映射关系
     *
     * @param hosCodeVO
     * @return
     */
    @Override
    public RespDTO<Map<String, String>> getTitleMappingHosCode(@RequestBody HosCodeVO hosCodeVO) {
        log.error("【hystrix】调用{}异常", "getTitleMappingHosCode");
        return null;
    }

    /**
     * 根据医院编码查询诊断icd映射
     *
     * @param hosCodeVO
     * @return
     */
    @Override
    public RespDTO<Map<String, String>> getDiseaseIcdByHosCode(@RequestBody HosCodeVO hosCodeVO) {
        log.error("【hystrix】调用{}异常", "getDiseaseIcdByHosCode");
        return null;
    }

    /**
     * 数据服务模式是否对外对接
     *
     * @return
     */
    @Override
    public RespDTO<Boolean> isDocking() {
        log.error("【hystrix】调用{}异常", "isDocking");
        return null;
    }
}
