package com.xinelu.manage.vo.patientinfo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Data;

/**
 * @description: 患者档案列表返回视图类
 * @author: haown
 * @create: 2024-08-05 09:00
 **/
@Data
public class PatientInfoVo {

	/**
	 * 主键id
	 */
	private Long id;

	/**
	 * 导入患者表id
	 */
	@ApiModelProperty(value = "导入患者表id")
	private Long patientInfoImportId;

	/**
	 * 导入流水号
	 */
	@ApiModelProperty(value = "导入流水号")
	private String sn;


	/**
	 * 居民信息表id
	 */
	@ApiModelProperty(value = "居民信息表id")
	private Long residentId;

	/**
	 * 患者姓名
	 */
	@ApiModelProperty(value = "患者姓名")
	private String patientName;

	/**
	 * 患者电话
	 */
	@ApiModelProperty(value = "患者电话")
	private String patientPhone;

	/**
	 * 出生日期，格式：yyyy-MM-dd
	 */
	@ApiModelProperty(value = "出生日期，格式：yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd")
	private LocalDate birthDate;

	/**
	 * 身份证号
	 */
	@ApiModelProperty(value = "身份证号")
	private String cardNo;

	/**
	 * 性别，男：MALE，女：FEMALE
	 */
	@ApiModelProperty(value = "性别，男：MALE，女：FEMALE")
	@Excel(name = "性别，男：MALE，女：FEMALE")
	private String sex;

	/**
	 * 住址
	 */
	@ApiModelProperty(value = "住址")
	@Excel(name = "住址")
	private String address;

	/**
	 * 患者类型，预住院患者：PRE_HOSPITALIZED_PATIENT，在院患者：IN_HOSPITAL_PATIENT，门诊患者：OUTPATIENT，出院患者：DISCHARGED_PATIENT，
	 * 签约患者：CONTRACTED_PATIENT
	 */
	@ApiModelProperty(value = "患者类型，预住院患者：PRE_HOSPITALIZED_PATIENT，在院患者：IN_HOSPITAL_PATIENT，门诊患者：OUTPATIENT，出院患者：DISCHARGED_PATIENT，签约患者：CONTRACTED_PATIENT")
	private String patientType;

	/**
	 * 就诊方式，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL
	 */
	@ApiModelProperty(value = "就诊方式，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL")
	private String visitMethod;

	/** 就诊流水号 */
	@ApiModelProperty(value = "就诊流水号")
	private String visitSerialNumber;

	/** 门诊/住院号 */
	@ApiModelProperty(value = "门诊/住院号")
	private String inHospitalNumber;

	/**
	 * 主要诊断
	 */
	@ApiModelProperty(value = "主要诊断")
	private String mainDiagnosis;

	/**
	 * 主治医生
	 */
	@ApiModelProperty(value = "主治医生")
	@Excel(name = "主治医生")
	private String attendingPhysicianName;

	/**
	 * 所属医院id
	 */
	@ApiModelProperty(value = "所属医院id")
	private Long hospitalAgencyId;

	/**
	 * 所属医院名称
	 */
	@ApiModelProperty(value = "所属医院名称")
	@Excel(name = "所属医院名称")
	private String hospitalAgencyName;

	/**
	 * 所属院区id
	 */
	@ApiModelProperty(value = "所属院区id")
	private Long campusAgencyId;

	/**
	 * 所属院区名称
	 */
	@ApiModelProperty(value = "所属院区名称")
	@Excel(name = "所属院区名称")
	private String campusAgencyName;

	/**
	 * 所属科室id
	 */
	@ApiModelProperty(value = "所属科室id")
	private Long departmentId;

	/**
	 * 所属科室名称
	 */
	@ApiModelProperty(value = "所属科室名称")
	@Excel(name = "所属科室名称")
	private String departmentName;

	/**
	 * 所属病区id
	 */
	@ApiModelProperty(value = "所属病区id")
	private Long wardId;

	/**
	 * 所属病区名称
	 */
	@ApiModelProperty(value = "所属病区名称")
	@Excel(name = "所属病区名称")
	private String wardName;

	/**
	 * 最新一条就诊记录id
	 */
	@ApiModelProperty(value = "最新一条就诊记录id")
	private Long patientVisitRecordId;

	private Long signPatientRecordId;

	/**
	 * 就诊时间，格式：yyyy-MM-dd HH:mm:ss
	 */
	@ApiModelProperty(value = "就诊时间，格式：yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd")
	private LocalDateTime visitDate;

	/**
	 * 患者来源，微信小程序：WE_CHAT_APPLET，微信公众号：WE_CHAT_OFFICIAL_ACCOUNT，管理端：MANAGE_END
	 */
	@ApiModelProperty(value = "患者来源，微信小程序：WE_CHAT_APPLET，微信公众号：WE_CHAT_OFFICIAL_ACCOUNT，管理端：MANAGE_END")
	private String patientSource;

	/** 节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED */
	@ApiModelProperty(value = "节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED")
	private String nodeExecuteStatus;

	/** 患者宣教阅读或问卷提交的时间；null表示尚未阅读或提交 */
	@ApiModelProperty(value = "患者宣教阅读或问卷提交的时间")
	private LocalDateTime nodeFinishDate;

	/** 患者问卷提交的状态 */
	@ApiModelProperty(value = "患者问卷提交的状态")
	private LocalDateTime nodeFinishStatus;
	/**
	 * 管理路径节点名称
	 */
	private String routeNodeName;

	/**
	 * 管理路径节点时间
	 */
	private Integer routeNodeDay;

	/**
	 * 患者签约状态
	 */
	private String patientSignStatus;

	/**
	 * 任务执行时间
	 */
	private LocalDateTime executeDateTime;

	//2024-12-20 zyk注释掉，同新定义的字段重名，导致冲突
	/** 节点任务完成状态，已完成：EXECUTED，未完成：UNEXECUTED */
	// @ApiModelProperty(value = "节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED")
	// private String nodeFinishStatus;

	/**
	 * 任务总数
	 */
	@ApiModelProperty(value = "任务总数")
	private BigDecimal taskNum;

	/**
	 * 任务执行数量
	 */
	@ApiModelProperty(value = "任务执行数量")
	private BigDecimal taskExecuteNum;

	/**
	 * 任务执行率
	 */
	@ApiModelProperty(value = "任务执行率")
	private BigDecimal taskExecuteRate;

	/**
	 * 任务完成数量
	 */
	@ApiModelProperty(value = "任务完成数量")
	private BigDecimal taskFinishNum;

	/**
	 * 任务完成率
	 */
	@ApiModelProperty(value = "任务完成率")
	private BigDecimal taskFinishRate;

	/**
	 * 下次任务名称
	 */
	@ApiModelProperty(value = "下次任务名称")
	private String nextTaskName;

	@ApiModelProperty(value = "下次任务执行时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	private LocalDateTime nextTaskTime;

	@ApiModelProperty(value = "年龄")
	private Integer age;
}
