package com.ywt.alipaympapi.service;


import com.ywt.core.exception.AppMessageException;
import com.ywt.model.PageVO;
import com.ywt.request.card.*;
import com.ywt.response.card.*;

import java.util.List;

/**
 * 就诊卡相关接口
 **/
public interface IsvMedicCardService {

    /**
     * 新增或者绑定就诊卡
     *
     * @param request 如果有cardNum那么就是绑定操作
     * @return 绑定结果
     **/
    CreateOrBindCardResponseData createOrBindMedicCard(CreateOrBindCardRequest request) throws Exception;

    /**
     * 更新就诊卡中的信息
     *
     * @param request 就诊卡需要更新的信息, cardNum必填
     * @return 更新后的结果
     **/
    UpdateCardResponseData updateMedicCard(UpdateCardRequest request) throws Exception;

    /**
     * 单卡查询
     *
     * @param request 就诊卡需要更新的信息, cardNum必填
     * @return 查询结果
     **/
    QuerySingleCardResponseData querySingleMedicCard(QuerySingleCardRequest request) throws Exception;

    /**
     * 默认就诊卡查询
     *
     * @param request
     * @return 查询结果
     **/
    QueryDefaultCardResponseData queryDefaultMedicCard(QueryDefaultCardRequest request) throws Exception;

    /**
     * 就诊卡列表查询
     *
     * @param request
     * @return 查询结果
     **/
    PageVO<QueryListCardResponseData> queryListMedicCard(QueryListCardRequest request) throws Exception;

    /**
     * 删除就诊卡
     *
     * @param request
     * @return 删除结果
     **/
    DeleteCardResponseData deleteMedicCard(DeleteCardRequest request) throws Exception;

    /**
     * 医保卡绑定
     *
     * @param request
     * @return 绑定结果
     **/
    BindMedInsuranceCardResponseData bindMedInsuranceCard(BindMedInsuranceCardRequest request) throws Exception;

    /**
     * 就诊人列表查询
     *
     * @param request
     * @return
     **/
    List<QueryPatientListResponse> queryPatientList(QueryPatientListRequest request) throws Exception;

    /**
     * 就诊人绑定就诊卡
     *
     * @param request
     * @return
     */
    PatientBindCardResponse bindMedicCard(PatientBindCardRequest request) throws Exception;

    /**
     * 删除就诊人
     *
     * @param request
     * @return
     */
    DeletePatientResponse deletePatient(DeletePatientRequest request) throws Exception;

    /**
     * 添加就诊人
     *
     * @param request
     * @return
     */
    AddPatientResponse addPatient(AddPatientRequest request) throws Exception;

    /**
     * 编辑就诊人
     *
     * @param request
     * @return
     */
    UpdatePatientResponse updatePatient(UpdatePatientRequest request) throws Exception;

    /**
     * 查询就诊人详情
     *
     * @param request
     * @return
     */
    QueryPatientDetailResponse querySinglePatient(QueryPatientDetailRequest request) throws Exception;

    /**
     * 查询登录用户就诊卡列表
     *
     * @param request
     * @return
     */
    List<MyCardListResponse> myCardList(MyCardListRequest request) throws Exception;
}
