package com.xinelu.manage.domain.patientvisitrecord;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 患者就诊记录基本信息对象 patient_visit_record
 *
 * @author haown
 * @date 2024-03-11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "患者就诊记录基本信息对象", description = "patient_visit_record")
public class PatientVisitRecord extends BaseEntity {
	private static final long serialVersionUID=1L;

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

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

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

	@ApiModelProperty(value = "预住院患者表id")
	@Excel(name = "预住院患者表id")
	private Long patientPreHospitalizationId;

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

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

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

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

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

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

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

    /** 年龄 */
    @ApiModelProperty(value = "年龄")
    @Excel(name = "年龄")
    private Integer age;

    /** 民族 */
    @ApiModelProperty(value = "民族")
    @Excel(name = "民族")
    private String nation;

    /** 就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL */
    @ApiModelProperty(value = "就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL")
    @Excel(name = "就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_IN_HOSPITAL")
    private String visitMethod;

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

    /** 就诊名称 */
    @ApiModelProperty(value = "就诊名称")
    @Excel(name = "就诊名称")
    private String visitName;

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

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

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

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

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

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

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

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

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

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

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

    /** 婚姻，已婚：MARRIED，未婚：UNMARRIED，丧偶：BEREAVE */
    @ApiModelProperty(value = "婚姻，已婚：MARRIED，未婚：UNMARRIED，丧偶：BEREAVE")
    @Excel(name = "婚姻，已婚：MARRIED，未婚：UNMARRIED，丧偶：BEREAVE")
    private String marriage;

    /** _病史陈述者（入院记录） */
    @ApiModelProperty(value = "_病史陈述者")
    @Excel(name = "_病史陈述者", readConverterExp = "入=院记录")
    private String medicalHistoryNarrator;

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

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

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

    /** 门诊记录信息（就诊记录-门诊记录） */
    @ApiModelProperty(value = "门诊记录信息")
    @Excel(name = "门诊记录信息", readConverterExp = "就=诊记录-门诊记录")
    private String outpatientVisitInfo;

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

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

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

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

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

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

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

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

	/** 删除标识，0：未删除，1：已删除 */
	private Integer delFlag;

}
