/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.paymentmanage.dto;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.openhis.yb.dto.Clinic2206FundPaymentResult;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * TODO:请概括描述当前类的主要用途和注意事项
 *
 * @author SunJQ
 * @date 2025-08-11
 */
@Data
@Accessors(chain = true)
public class InpatientPreSettleDto {

    /**
     * 就诊ID
     */
    @JsonProperty("mdtrt_id")
    private String mdtrtId;

    /**
     * 人员编号
     */
    @JsonProperty("psn_no")
    private String psnNo;

    /**
     * 人员姓名
     */
    @JsonProperty("psn_name")
    private String psnName;

    /**
     * 人员证件类型
     */
    @JsonProperty("psn_cert_type")
    private String psnCertType;

    /**
     * 证件号码
     */
    @JsonProperty("certno")
    private String certno;

    /**
     * 性别
     */
    @JsonProperty("gend")
    private String gend;

    /**
     * 民族
     */
    @JsonProperty("naty")
    private String naty;

    /**
     * 出生日期 格式：yyyy-MM-dd
     */
    @JsonProperty("brdy")
    private Date brdy;

    /**
     * 年龄
     */
    @JsonProperty("age")
    private BigDecimal age;

    /**
     * 险种类型
     */
    @JsonProperty("insutype")
    private String insutype;

    /**
     * 人员类别
     */
    @JsonProperty("psn_type")
    private String psnType;

    /**
     * 公务员标志
     */
    @JsonProperty("cvlserv_flag")
    private String cvlservFlag;

    /**
     * 结算时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("setl_time")
    private Date setlTime;

    /**
     * 就诊凭证类型
     */
    @JsonProperty("mdtrt_cert_type")
    private String mdtrtCertType;

    /**
     * 医疗类别
     */
    @JsonProperty("med_type")
    private String medType;

    /**
     * 医疗费总额
     */
    @JsonProperty("medfee_sumamt")
    private BigDecimal medfeeSumamt;

    /**
     * 全自费金额
     */
    @JsonProperty("fulamt_ownpay_amt")
    private BigDecimal fulamtOwnpayAmt;

    /**
     * 超限价自费费用
     */
    @JsonProperty("overlmt_selfpay")
    private BigDecimal overlmtSelfpay;

    /**
     * 先行自付金额
     */
    @JsonProperty("preselfpay_amt")
    private BigDecimal preselfpayAmt;

    /**
     * 符合政策范围金额
     */
    @JsonProperty("inscp_scp_amt")
    private BigDecimal inscpScpAmt;

    /**
     * 实际支付起付线
     */
    @JsonProperty("act_pay_dedc")
    private BigDecimal actPayDedc;

    /**
     * 基本医疗保险统筹基金支出
     */
    @JsonProperty("hifp_pay")
    private BigDecimal hifpPay;

    /**
     * 基本医疗保险统筹基金支付比例
     */
    @JsonProperty("pool_prop_selfpay")
    private BigDecimal poolPropSelfpay;

    /**
     * 公务员医疗补助资金支出
     */
    @JsonProperty("cvlserv_pay")
    private BigDecimal cvlservPay;

    /**
     * 企业补充医疗保险基金支出
     */
    @JsonProperty("hifes_pay")
    private BigDecimal hifesPay;

    /**
     * 居民大病保险资金支出
     */
    @JsonProperty("hifmi_pay")
    private BigDecimal hifmiPay;

    /**
     * 职工大额医疗费用补助基金支出
     */
    @JsonProperty("hifob_pay")
    private BigDecimal hifobPay;

    /**
     * 医疗救助基金支出
     */
    @JsonProperty("maf_pay")
    private BigDecimal mafPay;

    /**
     * 其他支出
     */
    @JsonProperty("oth_pay")
    private BigDecimal othPay;

    /**
     * 基金支付总额
     */
    @JsonProperty("fund_pay_sumamt")
    private BigDecimal fundPaySumamt;

    /**
     * 个人负担总金额
     */
    @JsonProperty("psn_part_amt")
    private BigDecimal psnPartAmt;

    /**
     * 个人账户支出
     */
    @JsonProperty("acct_pay")
    private BigDecimal acctPay;

    /**
     * 个人现金支出
     */
    @JsonProperty("psn_cash_pay")
    private BigDecimal psnCashPay;

    /**
     * 医院负担金额
     */
    @JsonProperty("hosp_part_amt")
    private BigDecimal hospPartAmt;

    /**
     * 余额
     */
    @JsonProperty("balc")
    private BigDecimal balc;

    /**
     * 个人账户共济支付金额
     */
    @JsonProperty("acct_mulaid_pay")
    private BigDecimal acctMulaidPay;

    /**
     * 医药机构结算ID 存放发送方报文ID
     */
    @JsonProperty("medins_setl_id")
    private String medinsSetlId;

    /**
     * 清算经办机构
     */
    @JsonProperty("clr_optins")
    private String clrOptins;

    /**
     * 清算方式
     */
    @JsonProperty("clr_way")
    private String clrWay;

    /**
     * 清算类别
     */
    @JsonProperty("clr_type")
    private String clrType;

    /**
     * 伤残人员医疗保障基金支出 1.5.4新增
     */
    @JsonProperty("hifdm_pay")
    private BigDecimal hifdmPay;

    @JSONField(name = "setldetail")
    private List<Clinic2206FundPaymentResult> setldetail;

    /**
     * 账户id
     */
    private Long accountId;

    public InpatientPreSettleDto() {
        this.medfeeSumamt = BigDecimal.ZERO;
        this.fulamtOwnpayAmt = BigDecimal.ZERO;
        this.overlmtSelfpay = BigDecimal.ZERO;
        this.preselfpayAmt = BigDecimal.ZERO;
        this.inscpScpAmt = BigDecimal.ZERO;
        this.actPayDedc = BigDecimal.ZERO;
        this.hifpPay = BigDecimal.ZERO;
        this.poolPropSelfpay = BigDecimal.ZERO;
        this.cvlservPay = BigDecimal.ZERO;
        this.hifesPay = BigDecimal.ZERO;
        this.hifmiPay = BigDecimal.ZERO;
        this.hifobPay = BigDecimal.ZERO;
        this.mafPay = BigDecimal.ZERO;
        this.othPay = BigDecimal.ZERO;
        this.fundPaySumamt = BigDecimal.ZERO;
        this.psnPartAmt = BigDecimal.ZERO;
        this.acctPay = BigDecimal.ZERO;
        this.psnCashPay = BigDecimal.ZERO;
        this.hospPartAmt = BigDecimal.ZERO;
        this.balc = BigDecimal.ZERO;
        this.acctMulaidPay = BigDecimal.ZERO;
        this.hifdmPay = BigDecimal.ZERO;
    }

    public Long getAccountId() {
        return accountId;
    }

    public void setAccountId(Long accountId) {
        this.accountId = accountId;
    }
}
