package com.xinelu.manage.domain.signpatientrecord;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.core.domain.BaseEntity;
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.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 患者签约记录表
 *
 * @TableName sign_patient_record
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "患者签约记录表", description = "sign_patient_record")
public class SignPatientRecord extends BaseEntity {

    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    private Long id;

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

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

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

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

    /**
     * 性别
     */
    @ApiModelProperty(value = "性别")
    private String sex;

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

    /**
     * 签约时间，格式：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;

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

    /**
     * 签约时所属医院名称
     */
    @ApiModelProperty(value = "签约时所属医院名称")
    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;

	/**
	 * 就诊记录表主键
	 */
	@ApiModelProperty(value = "就诊记录表主键")
	private Long patientVisitRecordId;

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

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

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

    /**
     * 签约时诊断
     */
    @ApiModelProperty(value = "签约时诊断")
    private String signDiagnosis;

    /**
     * 审核后诊断
     */
    @ApiModelProperty(value = "审核后诊断")
    private String reviewDiagnosis;

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

    /**
     * 签约状态，未签约：UN_SIGN,在签：IN_SIGN,解约：SEPARATE_SIGN, 服务过期：EXPIRE_SIGN
     */
    @ApiModelProperty(value = "签约状态，未签约：UN_SIGN,在签：IN_SIGN,解约：SEPARATE_SIGN, 过期：EXPIRE_SIGN")
    private String signStatus;

    /**
     * 意向来源（意向签约，字典枚举）
     */
    @ApiModelProperty(value = "意向来源（意向签约，字典枚举）,DOCTOR_BILLING:医生开单")
    private String intentionalSource;

    /**
     * 加入意向时间（意向签约）
     */
    @ApiModelProperty(value = "加入意向时间（意向签约）")
    private LocalDateTime intentionalTime;

    /**
     * 开单医生id（意向签约）
     */
    @ApiModelProperty(value = "开单医生id（意向签约）")
    private Long billingDoctorId;

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

    /**
     * 提交时间（待续签）
     */
    @ApiModelProperty(value = "提交时间（待续签）")
    private LocalDateTime submissionTime;
    /**
     * 金额
     */
    @ApiModelProperty(value = "金额")
    private BigDecimal price;

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

    /**
     * 解约原因
     */
    @ApiModelProperty(value = "解约原因")
    private String separateReason;

    /**
     * 健康管理师id
     */
    @ApiModelProperty(value = "健康管理师id")
    private Long healthManageId;

    /**
     * 健康管理师姓名
     */
    @ApiModelProperty(value = "健康管理师姓名")
    private String healthManageName;

	/**
	 * 画像审核状态，同意：AGREE，不同意：DISAGREE
	 */
	@ApiModelProperty(value = "画像审核状态，同意：AGREE，不同意：DISAGREE")
	private String portaitCheckStatus;

	/**
	 * 画像审核人姓名
	 */
	@ApiModelProperty(value = "画像审核人姓名")
	private String portaitCheckPerson;

	/**
	 * 画像审核时间
	 */
	@ApiModelProperty(value = "画像审核时间")
	private LocalDateTime portaitCheckDate;

	/**
	 * 画像审核备注信息，存储审核备注信息以及审核不通过原因等信息
	 */
	@ApiModelProperty(value = "画像审核备注信息，存储审核备注信息以及审核不通过原因等信息")
	private String portaitCheckRemark;

	/**
	 * 专病路径审核状态，同意：AGREE，不同意：DISAGREE
	 */
	@ApiModelProperty(value = "专病路径审核状态，同意：AGREE，不同意：DISAGREE")
	private String routeCheckStatus;

	/**
	 * 专病路径审核人姓名
	 */
	@ApiModelProperty(value = "专病路径审核人姓名")
	private String routeCheckPerson;

	/**
	 * 专病路径审核时间
	 */
	@ApiModelProperty(value = "专病路径审核时间")
	private LocalDateTime routeCheckDate;

	/**
	 * 专病路径审核备注信息，存储审核备注信息以及审核不通过原因等信息
	 */
	@ApiModelProperty(value = "专病路径审核备注信息，存储审核备注信息以及审核不通过原因等信息")
	private String routeCheckRemark;

    /**
     * 删除标识，0：未删除，1：已删除
     */
    @ApiModelProperty(value = "删除标识，0：未删除，1：已删除")
    private Integer delFlag;

}