package thyyxxk.webserver.entity.zhuyuanyisheng.emr;

import java.io.Serializable;

import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * @author xc
 */
@Data
@Accessors(chain = true)
public class EmrPatientData implements Serializable {

    private static final long serialVersionUID = 172057163746918134L;

    /**
     * id
     */
    private Integer id;

    /**
     * 患者住院号
     */
    @NotNull(message = "住院号不能为空")
    @NotBlank(message = "住院号不能为空")
    private String patNo;

    /**
     * 患者住院次数
     */
    @NotNull(message = "患者住院次数不能为空")
    private Integer times;

    /**
     * 电子病历中的唯一值
     */
    @NotNull(message = "电子病历中的唯一值不能为空")
    @NotBlank(message = "电子病历中的唯一值不能为空")
    private String emrDocumentId;

    /**
     * 病历模板编码。
     */
    @NotNull(message = "病历模板编码不能为空")
    @NotBlank(message = "病历模板编码不能为空")
    private String emrCategoryCode;

    /**
     * 是否删除
     */
    private Integer delFlag;

    /**
     * 模板的名称
     */
    @NotNull(message = "模板的名称为空")
    @NotBlank(message = "模板的名称为空")
    private String emrName;

    /**
     * 医生取得名称
     */
    private String name;

    /**
     * 创建人
     */
    private String createId;
    private String createName;

    /**
     * 创建时间
     */
    private Date createDate;

    /**
     * 修改人
     */
    private String modifyId;

    /**
     * 修改时间
     */
    private Date modifyDate;

    /**
     * 子节点
     */
    private List<EmrPatientData> children;

    /**
     * 电子病历结构化数据
     */
    private JSONObject emrDataElement;

    /**
     * 是否提交
     */
    private Integer submit;

    /**
     * 提交人
     */
    private String submitId;

    /**
     * 提交时间
     */
    private Date submitTime;


    /**
     * 前端保存的页面数据结构
     */
    private JSONObject documentData;

    /**
     * 病程记录的片段
     */
    private List<EmrProgressNote> fragment;

    /**
     * 父级节点
     */
    private String parent;

    /**
     * 管床医生
     */
    private String referPhysician;

    /**
     * 主治医生
     */
    private String consultPhysician;

    /**
     * 主任医生
     */
    private String deptDirector;

    /**
     * 审核医生
     */
    private String reviewDoctors;

    /**
     * 审核时间
     */
    private Date reviewTime;

    public String getType() {
        return "category";
    }

}
