package com.glxp.mipsdl.req.base.forthird;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.List;

@Data
public class ForInvOutScanCodeFilter {

    /**
     * 单据基础信息
     */
    @JsonProperty("BILLBASEINFO")
    @NotNull(message = "单据基础信息不可为空!")
    private Billbaseinfo billbaseinfo;

    /**
     * 病人相关信息
     */
    @JsonProperty("PATIENTINFO")
    @NotNull(message = "病人相关信息不可为空!")
    private Patientinfo patientinfo;

    /**
     * 耗材使用信息列表
     */
    @JsonProperty("HIGHVALUELIST")
    @NotNull(message = "耗材使用信息列表不可为空!")
    private List<Highvalue> highvaluelist;


    /**
     * 单据基础信息
     */
    @Data
    public static class Billbaseinfo {
        /**
         * 操作员工号
         */
        @JsonProperty("USERID")
        private String userid;

        /**
         * his执行科室编码
         */
        @JsonProperty("DEPTID")
        private String deptid;

        /**
         * 申请时间，格式：yyyy-mm-dd HH:MM:ss
         */
        @JsonProperty("APPLYDATE")
        private String applydate;
    }


    /**
     * 病人相关信息
     */
    @Data
   public static class Patientinfo {
        /**
         * 病人ID（首页序号）
         */
        @JsonProperty("PATIENTID")
        private String patientid;

        /**
         * 病人住院号或门诊卡号
         */
        @JsonProperty("INPATIENTID")
        private String inpatientid;

        /**
         * 门诊或住院1门诊、2住院
         */
        @JsonProperty("MZ_ZY")
        private String mzZy;

        /**
         * 病人名称
         */
        @JsonProperty("NAME")
        private String name;

        /**
         * 性别（1：男；2：女）
         */
        @JsonProperty("SEX")
        private String sex;

        /**
         * 病人所在病区编码
         */
        @JsonProperty("INPATIENTDEPT")
        private String inpatientdept;

        /**
         * 入院时间,格式为yyyy-mm-dd HH:MM:ss
         */
        @JsonProperty("INPATIENTDATE")
        private String inpatientdate;

        /**
         * 入院诊断名称
         */
        @JsonProperty("DIAGNOSIS")
        private String diagnosis;

        /**
         * 出生年月,格式为yyyy-mm
         */
        @JsonProperty("BIRTHDATE")
        private String birthdate;

        /**
         * 住址
         */
        @JsonProperty("ADDRESS")
        private String address;

        /**
         * 证件类型，直接使用“身份证号”
         */
        @JsonProperty("IDTYPE")
        private String idtype;

        /**
         * 证件号
         */
        @JsonProperty("IDENTITYNO")
        private String identityno;

        /**
         * 手机号
         */
        @JsonProperty("CELLPHONENO")
        private String cellphoneno;

        /**
         * 病人家属
         */
        @JsonProperty("OTHERCONTENT")
        private String othercontent;

        /**
         * 病人家属联系电话
         */
        @JsonProperty("OTHERPHONE")
        private String otherphone;

        /**
         * 手术ID（国家标准编码）
         */
        @JsonProperty("OPERID")
        private String operid;

        /**
         * 手术名称
         */
        @JsonProperty("OPERNAME")
        private String opername;

        /**
         * 主刀医生工号
         */
        @JsonProperty("OPERDOCTORID")
        private String operdoctorid;

        /**
         * 主刀医生姓名
         */
        @JsonProperty("OPERDOCTOR")
        private String operdoctor;
        /**
         * 主刀医生的科室编码
         */
        @JsonProperty("OPERDOCTORDEPT")
        private String operdoctordept;

        /**
         * 手术操作护士工号
         */
        @JsonProperty("OPERNURSE")
        private String opernurse;

        /**
         * 手术室址址
         */
        @JsonProperty("OPERADDRESS")
        private String operaddress;

        /**
         * 病人所属科室（请使用HIS的科室编码）【申请科室】
         */
        @JsonProperty("APPLYDEPT")
        private String applydept;

        /**
         * 开单员工工号
         */
        @JsonProperty("APPLYSTAFFID")
        private String applystaffid;

        /**
         * 执行科室（收费科室）
         */
        @JsonProperty("OPERDEPT")
        private String operdept;

        /**
         * 执行员工工号
         */
        @JsonProperty("OPERSTAFFID")
        private String operstaffid;

        /**
         * 手术日期,格式为yyyy-mm-dd HH:MM:ss
         */
        @JsonProperty("OPERDATE")
        private String operdate;

        /**
         * 病人所属医疗组代码
         */
        @JsonProperty("YLZDM")
        private String ylzdm;
    }


    /**
     * 耗材使用信息
     */
    @Data
   public static class Highvalue {

        /**
         * 完整的UDI码
         */
        @JsonProperty("UDICODE")
        private String udicode;

        /**
         * 主条码
         */
        @JsonProperty("FIRSTID")
        private String firstid;

        /**
         * 次条码
         */
        @JsonProperty("SECONDID")
        private String secondid;

        /**
         * HIS项目编码
         */
        @JsonProperty("THIRDID")
        private String thirdid;

        /**
         * 收费金额
         */
        @JsonProperty("FEE")
        private String fee;

        /**
         * 收费单价
         */
        @JsonProperty("PRICE")
        private String price;

        /**
         * 数量 正数代表收费，负数代表退费
         */
        @JsonProperty("QUANTITY")
        private String quantity;

        /**
         * 供应商ID 从库存中获取
         */
        @JsonProperty("PROVIDERID")
        private String providerid;

        /**
         * 收费IDHIS每一次收费的唯一标识
         */
        @JsonProperty("CHARGINGID")
        private String chargingid;

        /**
         * 原收费ID退费的时候 对应原来的收费ID
         */
        @JsonProperty("CHARGINGOLDID")
        private String chargingoldid;

        /**
         * 收费时间
         */
        @JsonProperty("CHARGINGTIME")
        private String chargingtime;

        /**
         * 收费小项目编码
         */
        @JsonProperty("FEEITEMID")
        private String feeitemid;

        /**
         * 批号
         */
        @JsonProperty("PH")
        private String ph;

        /**
         * 有效期
         */
        @JsonProperty("YXQ")
        private String yxq;
    }

}
