package com.xinelu.manage.domain.patientinfo;

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

/**
 * 患者全部信息视图对象 patient_all_info_view
 *
 * @author xinelu
 * @date 2024-06-11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "患者全部信息视图对象", description = "patient_all_info_view")
public class PatientAllInfoView {

	private static final long serialVersionUID=1L;

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

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

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

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

    /** 出生日期，格式：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 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")
    @Excel(name = "患者类型，预住院患者：PRE_HOSPITALIZED_PATIENT，在院患者：IN_HOSPITAL_PATIENT，门诊患者：OUTPATIENT，出院患者：DISCHARGED_PATIENT，签约患者：CONTRACTED_PATIENT")
    private String patientType;

    /** 就诊记录id */
    @ApiModelProperty(value = "就诊记录id")
    @Excel(name = "就诊记录id")
    private Long patientVisitRecordId;

    /** 就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_HOSPITALIZED */
    @ApiModelProperty(value = "就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_HOSPITALIZED")
    @Excel(name = "就诊类型，门诊：OUTPATIENT_SERVICE，住院：BE_HOSPITALIZED")
    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;

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

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

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

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

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

    /** 主治医生姓名 */
    @ApiModelProperty(value = "主治医生姓名")
    @Excel(name = "主治医生姓名")
    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 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 = "手术记录")
    @Excel(name = "手术记录")
    private String surgicalRecord;

    /** 签约记录表id */
    @ApiModelProperty(value = "签约记录表id")
    @Excel(name = "签约记录表id")
    private Long signPatientRecordId;

    /** 缴费状态，已缴费：PAID，未交费：UNPAID_FEES */
    @ApiModelProperty(value = "缴费状态，已缴费：PAID，未交费：UNPAID_FEES")
    @Excel(name = "缴费状态，已缴费：PAID，未交费：UNPAID_FEES")
    private String paymentStatus;

    /** 所属健康管理师名称（用户表名称） */
    @ApiModelProperty(value = "所属健康管理师名称")
    @Excel(name = "所属健康管理师名称", readConverterExp = "用=户表名称")
    private String healthManageName;

    /** 服务状态，意向签约：INTENTIONAL_SIGNING，服务中：SERVICE_CENTER，服务结束：SERVICE_END */
    @ApiModelProperty(value = "服务状态，意向签约：INTENTIONAL_SIGNING，服务中：SERVICE_CENTER，服务结束：SERVICE_END")
    @Excel(name = "服务状态，意向签约：INTENTIONAL_SIGNING，服务中：SERVICE_CENTER，服务结束：SERVICE_END")
    private String serviceStatus;

    /** 签约状态，在签：IN_SIGN，忽略：IGNORE_SIGN，解约：SEPARATE_SIGN，续约：CONTINUOUS_SIGN */
    @ApiModelProperty(value = "签约状态，在签：IN_SIGN，忽略：IGNORE_SIGN，解约：SEPARATE_SIGN，续约：CONTINUOUS_SIGN")
    @Excel(name = "签约状态，在签：IN_SIGN，忽略：IGNORE_SIGN，解约：SEPARATE_SIGN，续约：CONTINUOUS_SIGN")
    private String signStatus;

    /** 开单医生姓名（意向签约） */
    @ApiModelProperty(value = "开单医生姓名")
    @Excel(name = "开单医生姓名", readConverterExp = "意=向签约")
    private String billingDoctorName;

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

    /** 服务包名称 */
    @ApiModelProperty(value = "服务包名称")
    @Excel(name = "服务包名称")
    private String packageName;

    /** 服务包缴费状态，已缴费：PAID，未交费：UNPAID_FEES */
    @ApiModelProperty(value = "服务包缴费状态，已缴费：PAID，未交费：UNPAID_FEES")
    @Excel(name = "服务包缴费状态，已缴费：PAID，未交费：UNPAID_FEES")
    private String packagePaymentStatus;

    /** 服务包价格，小数点后两位 */
    @ApiModelProperty(value = "服务包价格，小数点后两位")
    @Excel(name = "服务包价格，小数点后两位")
    private BigDecimal packagePrice;

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

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

    /** 服务包期限 */
    @ApiModelProperty(value = "服务包期限")
    @Excel(name = "服务包期限")
    private Integer packageTerm;

    /** 服务包期限单位，年，月，日 */
    @ApiModelProperty(value = "服务包期限单位，年，月，日")
    @Excel(name = "服务包期限单位，年，月，日")
    private String packageTermUnit;

}
