package cn.iocoder.yudao.module.system.dal.dataobject.biz;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;


/**
 * <p>
 * 综合能力评估表
 * </p>
 *
 * @author caizengcan
 * @since 2022-05-09
 */
@TableName("elderly_synthetic_ability")
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ElderlySyntheticAbilityDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 老人ID
     */
    private Long elderId;
    /**
     * 评估员
     */
    private String evaluator;
    /**
     * 评估日期
     */
    @JSONField(format = "yyyy-MM-dd HH:mm")
    private Date evaluatorDate;
    /**
     * 能力报告结果
     */
    private String questionnaireJson;
    /**
     * 问卷ID
     */
    private String questionnaireId;

    /**
     * 问卷名称
     */
    private String questionnaireName;
    /**
     * 评估状态，0：未完成  1：已完成
     */
    @Schema(description = "评估状态，0:未完成  1：已完成")
    private String status;
    /**
     * 创建时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm")
    private LocalDateTime createDate;

    /**
     * 评估模板问卷ID
     */
    private Long evaluationTemplateId;

    /**
     * 评估模板问卷总计分数
     */
    private Integer totalScore;

    private String result;
    /**
     * 系统类型
     */
    private Integer orgType;

    /**
     * 推荐护理等级
     */
    @Schema(description = "推荐护理等级")
    private String recommendedNursingLevel;

    @Schema(description = "最终评估等级")
    private String finalNursingLevel;

    @Schema(description = "评估编码")
    private String evaluationCode;

    @Schema(description = "痴呆")
    private String questionnaireType;

    @Schema(description = "痴呆")
    private String dementia;

    @Schema(description = "精神疾病")
    private String mentalIllness;

    @Schema(description = "其他疾病")
    private String otherDiseases;

    @Schema(description = "跌倒情况")
    private String accidentalFall;

    @Schema(description = "走失情况")
    private String accidentalLoss;

    @Schema(description = "噎食情况")
    private String accidentalChoking;

    @Schema(description = "自杀情况")
    private String accidentalSuicide;

    @Schema(description = "其他情况")
    private String accidentalOther;

    @Schema(description = "评估原因")
    private String evaluateReasons;

    @Schema(description = "评估机构,1本院机构 2：第三方评估")
    private String evaluationAgency;

    @Schema(description = "第三方名称")
    private String thirdPartyName;

    @Schema(description = "签名状态，0：未签字 1：已签字未确认 2.已确认")
    private Integer signType;

    @Schema(description = "租户ID")
    private Long tenantId;

    @Schema(description = "疾病诊断")
    private String diseaseDiagnosis;


    @Schema(description = "长期用药情况")
    private String medicationSituation;

    @Schema(description = "压力性损伤")
    private String pressureInjury;

    @Schema(description = "关节活动度")
    private String motionOfJoint;

    @Schema(description = "伤口情况")
    private String woundCondition;

    @Schema(description = "特殊护理情况")
    private String specialCareSituation;

    @Schema(description = "疼痛感")
    private String pain;

    @Schema(description = "牙齿缺失情况")
    private String absenceOfTeeth;

    @Schema(description = "义齿佩戴情况")
    private String dentureWearingCondition;

    @Schema(description = "吞咽困难的情形和症状")
    private String dysphagia;

    @Schema(description = "营养不良")
    private String malnutrition;

    @Schema(description = "清理呼吸道无效")
    private String ineffectiveAirwayClearance;

    @Schema(description = "昏迷")
    private String coma;

    @Schema(description = "其他补充")
    private String otherSupplements;

    @Schema(description = "信息提供者姓名")
    private String informationProviderName;

    @Schema(description = "与老年人关系")
    private String relation;

    @Schema(description = "联系人姓名")
    private String contactName;

    @Schema(description = "联系人电话")
    private String contactPhone;

    /**
     * 长者信息
     */
    @TableField(exist = false)
    private ElderlyInfoDO elder;
//    @TableField(exist = false)
//    private long num;
//    @TableField(exist = false)
//    private long statisticalRecord;
    /**
     * 二维码随机字符串
     */
    @TableField(exist = false)
    private String randomStr;
    /**
     * 签名集合
     */
    @TableField(exist = false)
    private List<ElderSyntheticAbilitySignDO> signs;

    //评估表JSON
    @TableField(exist = false)
    private String infoJson;

    @TableField(exist = false)
    private String configProperties;

    @TableField(exist = false)
    private List<ElderlySyntheticAbilityInfoDO> syntheticAbilityInfoList;

    @TableField(exist = false)
    List<CheckInProcessSequenceDO> processSequenceList;


    /*****************老人信息*******************/
    @TableField(exist = false)
    private String elderName;
    @TableField(exist = false)
    private Integer elderSex;
    @TableField(exist = false)
    private Integer elderAge;
    @TableField(exist = false)
    private String idCard;
    @TableField(exist = false)
    @JSONField(format = "yyyy-MM-dd")
    private Date birthday;
    @TableField(exist = false)
    private Integer papersType;

    @Schema(description = "长者身高")
    @TableField(exist = false)
    private BigDecimal elderHeight;
    @Schema(description = "长者体重")
    @TableField(exist = false)
    private BigDecimal elderWeight;

}
