package com.openhis.yb.dto;

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.Length;

import com.alibaba.fastjson2.annotation.JSONField;

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

/**
 * 【3101】输出-违规信息（节点标识：result）
 *
 * @author Thanking
 */
@Data
@Accessors(chain = true)
public class Yb3101OutputResult {

    /**
     * 违规标识：计算结果记录唯一ID
     */
    @NotBlank
    @Length(max = 50)
    @JSONField(name = "jr_id")
    private String jrId;

    /**
     * 规则ID：例如：R01
     */
    @NotBlank
    @Length(max = 50)
    @JSONField(name = "rule_id")
    private String ruleId;

    /**
     * 规则名称：例如：配伍禁忌
     */
    @NotBlank
    @Length(max = 200)
    @JSONField(name = "rule_name")
    private String ruleName;

    /**
     * 违规内容：例如：患者处方中存在配伍禁忌的药品【A药】、【B药】。
     */
    @NotBlank
    @Length(max = 500)
    @JSONField(name = "vola_cont")
    private String volaCont;

    /**
     * 参保人ID：（注意：当是多患者导致违规时，这里是其中一个患者ID）
     */
    @NotBlank
    @Length(max = 50)
    @JSONField(name = "patn_id")
    private String patnId;

    /**
     * 就诊ID：（注意：当是多就诊导致违规时，这里是其中一个就诊ID）
     */
    @Length(max = 50)
    @JSONField(name = "mdtrt_id")
    private String mdtrtId;

    /**
     * 违规明细集合
     */
    @NotEmpty
    @JSONField(name = "judge_result_detail_dtos")
    private List<Yb3101OutputJudgeResultDetailDto> judgeResultDetailDtos;

    /**
     * 违规金额
     */
    @NotNull
    @JSONField(name = "vola_amt")
    private BigDecimal volaAmt;

    /**
     * 违规金额计算状态：参考字典表
     */
    @NotBlank
    @Length(max = 3)
    @JSONField(name = "vola_amt_stas")
    private String volaAmtStas;

    /**
     * 严重程度：参考字典表
     */
    @NotBlank
    @Length(max = 3)
    @JSONField(name = "sev_deg")
    private String sevDeg;

    /**
     * 违规依据
     */
    @Length(max = 500)
    @JSONField(name = "vola_evid")
    private String volaEvid;

    /**
     * 违规行为分类：参考字典表
     */
    @NotBlank
    @Length(max = 3)
    @JSONField(name = "vola_bhvr_type")
    private String volaBhvrType;

    /**
     * 规则ID：例如：R01
     */
    @JSONField(name = "task_id")
    private String taskId;

}
