package thyyxxk.webserver.service.externalhttp;

import com.alibaba.fastjson.JSONObject;
import com.dtflys.forest.annotation.Get;
import com.dtflys.forest.annotation.JSONBody;
import com.dtflys.forest.annotation.Post;
import com.dtflys.forest.annotation.Var;
import thyyxxk.webserver.entity.ResultVo;
import thyyxxk.webserver.entity.markmtfees.MzVisit;
import thyyxxk.webserver.entity.markmtfees.SiMzBusinessParams;
import thyyxxk.webserver.entity.medicalinsurance.digitalreceipt.request.*;
import thyyxxk.webserver.entity.medicalinsurance.manage.clinicinfo.RevokeRegRequest;
import thyyxxk.webserver.entity.medicalinsurance.outpatient.MzPatientInfo;
import thyyxxk.webserver.entity.medicalinsurance.outpatient.SpcChrDiseAcct;
import thyyxxk.webserver.entity.medicalinsurance.query.SiPatInfo;
import thyyxxk.webserver.entity.medicalinsurance.setlinfo.FundDetail;

public interface SiMzSrvc {

    @Post("{url}/outpatientRegistration")
    ResultVo<String> outpatientRegistration(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/executeOutpatientRegRevoke")
    ResultVo<String> executeOutpatientRegRevoke(@Var("url") String url, @JSONBody RevokeRegRequest request);

    @Post("{url}/revokeOutpatientRegistration")
    ResultVo<String> revokeOutpatientRegistration(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/uploadOutpatientFeeDetails")
    ResultVo<SiPatInfo> uploadOutpatientFeeDetails(@Var("url") String url, @JSONBody SpcChrDiseAcct p);

    @Post("{url}/revokeOutpatientFeeDetails")
    ResultVo<String> revokeOutpatientFeeDetails(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/outpatientPreSettlement")
    ResultVo<FundDetail> outpatientPreSettlement(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/outpatientSettlement")
    ResultVo<FundDetail> outpatientSettlement(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/timeoutSetl")
    ResultVo<FundDetail> timeoutSetl(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/revokeOutpatientSettlement")
    ResultVo<FundDetail> revokeOutpatientSettlement(@Var("url") String url, @JSONBody MzPatientInfo p);

    @Post("{url}/directRegistration")
    ResultVo<FundDetail> directRegistration(@Var("url") String url, @JSONBody SiMzBusinessParams param);

    @Get("{url}/isPatientDuringSiSettle?patientId={patientId}")
    ResultVo<Integer> isPatientDuringSiSettle(@Var("url") String url, @Var("patientId") String patientId);

    @Post("{url}/createRxPdf")
    ResultVo<String> createRxPdf(@Var("url") String url, @JSONBody RxPreCheckRequest param);

    @Post("{url}/rxPreCheck")
    ResultVo<JSONObject> rxPreCheck(@Var("url") String url, @JSONBody RxPreCheckRequest param);

    @Post("{url}/rxSign")
    ResultVo<JSONObject> rxSign(@Var("url") String url, @JSONBody RxSignRequest param);

    @Post("{url}/rxUpload")
    ResultVo<JSONObject> rxUpload(@Var("url") String url, @JSONBody RxUploadRequest param);

    @Post("{url}/rxRevoke")
    ResultVo<JSONObject> rxRevoke(@Var("url") String url, @JSONBody RxRevokeRequest param);

    @Post("{url}/rxInfoQuery")
    ResultVo<JSONObject> rxInfoQuery(@Var("url") String url, @JSONBody RxInfoQueryRequest param);

    @Post("{url}/rxAuditingQuery")
    ResultVo<JSONObject> rxAuditingQuery(@Var("url") String url, @JSONBody RxAuditingQueryRequest param);

    @Post("{url}/rxSetlQuery")
    ResultVo<JSONObject> rxSetlQuery(@Var("url") String url, @JSONBody RxSetlQueryRequest param);

    @Post("{url}/medicineInquiry")
    ResultVo<JSONObject> medicineInquiry(@Var("url") String url, @JSONBody MedicineInquiry param);
}
