package com.xinelu.manage.dto.patientvisitrecord;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @description: 就诊记录保存传输对象
 * @author: haown
 * @create: 2024-03-25 09:43
 **/
@Data
public class PatientVisitRecordSaveDto {

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

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

	/** 身份证号 */
	@ApiModelProperty(value = "身份证号")
	@NotNull(message = "身份证号不能为空")
	private String cardNo;

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

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

	/** 家属电话 */
	@ApiModelProperty(value = "家属电话")
	private String familyMemberPhone;

	/** 地址 */
	@ApiModelProperty(value = "地址")
	private String address;

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

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

	/** 就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL */
	@ApiModelProperty(value = "就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL")
	@NotNull(message = "就诊类型不能为空")
	private String visitMethod;

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

	/** 所属医院id */
	@ApiModelProperty(value = "所属医院id")
	@NotNull(message = "所属医院不能为空")
	private Long hospitalAgencyId;

	/** 所属医院名称 */
	@ApiModelProperty(value = "所属医院名称")
	@NotNull(message = "所属医院不能为空")
	private String hospitalAgencyName;

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

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

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

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

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

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

	/** 主治医生id */
	@ApiModelProperty(value = "主治医生id")
	private Long attendingPhysicianId;

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

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

	/** 入院时间 */
	@ApiModelProperty(value = "入院时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	private LocalDateTime admissionTime;

	/** 出院时间 */
	@ApiModelProperty(value = "出院时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	private LocalDateTime dischargeTime;

	/** _记录时间（入院记录） */
	@ApiModelProperty(value = "_记录时间")
	@Excel(name = "_记录时间", readConverterExp = "入=院记录")
	private LocalDateTime recordTime;

	/** 住院天数（出院记录），单位为：天 */
	@ApiModelProperty(value = "住院天数")
	@Excel(name = "住院天数", readConverterExp = "出=院记录")
	private Integer hospitalizationDays;

	/** 入院病历信息，存储患者入院的整个病历信息 */
	@ApiModelProperty(value = "入院病历信息，存储患者入院的整个病历信息")
	private String inHospitalInfo;

	/** 出院病历信息，存储患者出院的整个病历信息 */
	@ApiModelProperty(value = "出院病历信息，存储患者出院的整个病历信息")
	private String outHospitalInfo;

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

	/** 门诊/住院号 */
	@ApiModelProperty(value = "门诊/住院号")
	@NotNull(message = "门诊/住院号不能为空")
	private String inHospitalNumber;

	/** 责任护士 */
	@ApiModelProperty(value = "责任护士")
	private String responsibleNurse;

	/** 手术名称 */
	@ApiModelProperty(value = "手术名称")
	private String surgicalName;

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

	/** 手术记录 */
	@ApiModelProperty(value = "手术记录")
	private String surgicalRecord;
}
