package thyyxxk.webserver.entity.medicalinsurance.query;

import lombok.Data;
import thyyxxk.webserver.constants.sidicts.ChrgitmLv;
import thyyxxk.webserver.constants.sidicts.MedChrgitmType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;

/**
 * @description: 费用明细
 * @author: DingJie
 * @create: 2021/8/415:54
 */
@Data
public class SiSetlFeeDetl implements Serializable {

    private static final long serialVersionUID = 6915940168474232083L;

    /**
     * 就诊ID
     */
    private String mdtrtId;

    /**
     * 结算ID
     */
    private String setlId;

    /**
     * 费用流水号
     */
    private Integer feedetlSn;

    /**
     * 门诊 费用流水号
     */
    private String mzFeedetlSn;

    /**
     * 费用发生时间
     */
    private Date feeOcurTime;

    /**
     * 数量
     */
    private BigDecimal cnt;

    /**
     * 单价
     */
    private String pric;

    /**
     * 明细项目费用总额
     */
    private String detItemFeeSumamt;

    /**
     * 自付比例
     */
    private BigDecimal selfpayProp;

    /**
     * 全自费金额
     */
    private String fulamtOwnpayAmt;

    /**
     * 超限价金额
     */
    private String overlmtAmt;

    /**
     * 先行自付金额
     */
    private String preselfpayAmt;

    /**
     * 符合政策范围金额
     */
    private String inscpScpAmt;

    /**
     * 收费项目等级
     */
    private String chrgitmLv;

    /**
     * 医保目录编码
     */
    private String hilistCode;

    /**
     * 医保目录名称
     */
    private String hilistName;

    /**
     * 目录类别
     */
    private String listType;

    /**
     * 医疗目录编码
     */
    private String medListCodg;

    /**
     * 医疗目录编码
     */
    private String medListName;


    /**
     * 医药机构目录编码
     */
    private String medinsListCodg;

    /**
     * 医药机构目录名称
     */
    private String medinsListName;

    /**
     * 医疗收费项目类别  {@link MedChrgitmType}
     */
    private String medChrgitmType;

    /**
     * 开单科室编码
     */
    private String bilgDeptCodg;

    /**
     * 开单科室名称
     */
    private String bilgDeptName;

    /**
     * 开单医生编码
     */
    private String bilgDrCodg;

    /**
     * 开单医师姓名
     */
    private String bilgDrName;

    /**
     * 限制使用标志
     */
    private String lmtUsedFlag;

    /**
     * 医院制剂标志
     */
    private String hospPrepFlag;

    /**
     * 医院审批标志
     */
    private String hospApprFlag;

    /**
     * 中药使用方式
     */
    private String tcmdrugUsedWay;

    /**
     * 生产地类别
     */
    private String prodplacType;

    /**
     * 基本药物标志
     */
    private String basMednFlag;

    /**
     * 医保谈判药品标志
     */
    private String hiNegoDrugFlag;

    /**
     * 儿童用药标志
     */
    private String chldMedcFlag;

    /**
     * 外检标志
     */
    private String etipFlag;

    /**
     * 外检医院编码
     */
    private String etipHospCode;

    /**
     * 出院带药标志
     */
    private String dscgTkdrugFlag;

    /**
     * 目录特项标志（特检特治项目或特殊药品）
     */
    private String listSpItemFlag;

    /**
     * 生育费用标志
     */
    private String matnFeeFlag;

    /**
     * 直报标志
     */
    private String drtReimFlag;

    /**
     * 备注
     */
    private String memo;

    /**
     * 经办人ID
     */
    private String opterId;

    /**
     * 经办人姓名
     */
    private String opterName;

    /**
     * 经办时间
     */
    private Date optTime;

    /**
     * 自付比例转百分比字符串
     */
    private String selfpayPropPercent;

    /**
     * 收费项目等级名称
     */
    private String chrgitmLvName;

    public String getSelfpayPropPercent() {
        if (null == selfpayProp) {
            return "";
        }
        return Integer.parseInt(new DecimalFormat("0")
                .format(selfpayProp.multiply(BigDecimal.valueOf(100)))) + "%";
    }

    public String getChrgitmLvName() {
        ChrgitmLv chrgitmLvEnum = ChrgitmLv.get(chrgitmLv);
        return null == chrgitmLvEnum ? chrgitmLv : chrgitmLvEnum.getName();
    }
}
