package com.openhis.yb.domain;

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

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.HisBaseEntity;
import com.fasterxml.jackson.annotation.JsonProperty;

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

/**
 * 【2301】费用明细上传
 *
 * @author SunJQ
 * @date 2025-07-31
 */
@Data
@TableName("yb_inpatient_fee_detail")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class InpatientFeeDetail extends HisBaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_ID)
    @JSONField(serialize = false)
    private Long id;
    /**
     * 费用明细流水号 单次就诊内唯一(对应chargeItem的busNo)
     */
    @JsonProperty("feedetl_sn")
    private String feedetlSn;

    /**
     * 原费用流水号 退单时传入被退单的费用明细流水号
     */
    @JsonProperty("init_feedetl_sn")
    private String initFeedetlSn;

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

    /**
     * 医嘱号
     */
    @JsonProperty("drord_no")
    private String drordNo;

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

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

    /**
     * 费用发生时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("fee_ocur_time")
    private Date feeOcurTime;

    /**
     * 医保目录编码
     */
    @JsonProperty("med_list_codg")
    private String medListCodg;

    /**
     * 医药机构目录编码
     */
    @JsonProperty("medins_list_codg")
    private String medinsListCodg;

    /**
     * 明细项目费用总额
     */
    @JsonProperty("det_item_fee_sumamt")
    private BigDecimal detItemFeeSumamt;

    /**
     * 数量 退单时数量填写负数
     */
    @JsonProperty("cnt")
    private BigDecimal cnt;

    /**
     * 单价
     */
    @JsonProperty("pric")
    private BigDecimal pric;

    /**
     * 开单科室编码
     */
    @JsonProperty("bilg_dept_codg")
    private String bilgDeptCodg;

    /**
     * 开单科室名称
     */
    @JsonProperty("bilg_dept_name")
    private String bilgDeptName;

    /**
     * 开单医生编码
     */
    @JsonProperty("bilg_dr_codg")
    private String bilgDrCodg;

    /**
     * 开单医师姓名
     */
    @JsonProperty("bilg_dr_name")
    private String bilgDrName;

    /**
     * 定价上限金额
     */
    @JsonProperty("pric_uplmt_amt")
    private BigDecimal pricUplmtAmt;

    /**
     * 自付比例
     */
    @JsonProperty("selfpay_prop")
    private BigDecimal selfpayProp;

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

    /**
     * 超限价金额
     */
    @JsonProperty("overlmt_amt")
    private BigDecimal overlmtAmt;

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

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

    /**
     * 收费项目等级
     */
    @JsonProperty("chrgitm_lv")
    private String chrgitmLv;

    /**
     * 医疗收费项目类别
     */
    @JsonProperty("med_chrgitm_type")
    private String medChrgitmType;

    /**
     * 基本药物标志
     */
    @JsonProperty("bas_medn_flag")
    private String basMednFlag;

    /**
     * 医保谈判药品标志
     */
    @JsonProperty("hi_nego_drug_flag")
    private String hiNegoDrugFlag;

    /**
     * 儿童用药标志
     */
    @JsonProperty("chld_medc_flag")
    private String chldMedcFlag;

    /**
     * 目录特项标志
     */
    @JsonProperty("list_sp_item_flag")
    private String listSpItemFlag;

    /**
     * 限制使用标志
     */
    @JsonProperty("lmt_used_flag")
    private String lmtUsedFlag;

    /**
     * 直报标志
     */
    @JsonProperty("drt_reim_flag")
    private String drtReimFlag;

    /**
     * 关联就诊id
     */
    private String encounterId;

    private String inputParam;

    private String outputResult;

}
