package thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru;

import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import thyyxxk.webserver.service.PublicServer;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 描述： 新增医嘱类
 * </p>
 *
 * @author xc
 * @date 2022-01-12 17:34
 */
@Data
public class XinZhenYiZhu {
    /**
     * 患者姓名
     */
    private String name;
    private String inpatientNo;
    private Integer admissTimes;
    /**
     * 账页号
     */
    private Integer ledgerSn;
    /**
     * 管床医生
     */
    private String referPhysician;

    /**
     * 科室
     */
    private String deptCode;

    /**
     * 病房
     */
    private String wardCode;

    /**
     * 婴儿标志
     */
    private Integer infantFlag;
    private String deptDirector;

    public String getInfantFlag() {
        return inpatientNo == null ? null : String.valueOf(PublicServer.getInfantFlag(inpatientNo));
    }

    /**
     * 是否插入医嘱
     */
    private Boolean chaRuYiZhu = false;

    /**
     * 是否插入模板
     */
    private Boolean chaRuMuBan = false;

    /**
     * 模板的 code
     */
    private String patternCode;

    /**
     * 是否出纳了
     */
    private Integer timesBilled;

    /**
     * 入院时间
     */
    private Date admissDate;

    /**
     * 患者入院小科室
     */
    private String smallDept;

    /**
     * 患者现在的科室
     */
    private String zkWard;

    /**
     * 床位
     */
    private String bedNo;

    private String userCode;

    /**
     * 处方类型
     */
    private String cfType;

    /**
     * 单条数据校验
     */
    private XinZhenYzActOrder data;

    /**
     * 医嘱号
     */
    private String actOrderNo;

    /**
     * 药房
     */
    private String groupNo;

    /**
     * 住院流水号
     */
    private String zySerialNo;

    private String consultPhysician;

    /**
     * 开限制用药时的上级医生的工号
     */
    private String seniorDoctor;

    /**
     * 1-男 2-女
     */
    private Integer sex;

    /**
     * 出生日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 入院诊断
     */
    private String admissDiag;

    public Integer patientAge() {
        if (birthDate == null) {
            return 0;
        }
        return DateUtil.age(birthDate, admissDate);
    }

    /**
     * 医嘱关联数组
     */
    private List<BigDecimal> associatedGroup;

    @NotNull(message = "上传数据不能为空")
    private List<XinZhenYzActOrder> list;
}
