package com.xinelu.manage.vo.signpatientrecord;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.manage.domain.signpatientinformed.SignPatientInformed;
import com.xinelu.manage.domain.signpatientpackagehardware.SignPatientPackageHardware;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Data;

/**
 * @description: 患者签约信息查询返回视图类
 * @author: haown
 * @create: 2024-02-28 16:17
 **/
@ApiModel("患者签约信息查询返回视图类")
@Data
public class SignPatientInfoVo {
	/**
	 * 主键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 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;

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

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

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

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

	// ------服务包相关begin
	/** 服务包表id */
	@ApiModelProperty(value = "服务包表id")
	private Long servicePackageId;

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

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

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

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

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

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

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

	/**
	 * 签约患者管理路径id
	 */
	private Long signPatientManageRouteId;

	/**
	 * 签约路径信息
	 */
	@ApiModelProperty("管理路径id")
	private Long routeId;

	@ApiModelProperty("管理路径名称")
	private String routeName;

	@ApiModelProperty(value = "签约硬件设备列表")
	private List<SignPatientPackageHardware> signDevices;

	@ApiModelProperty(value = "签约知情书列表")
	private List<SignPatientInformed> signPatientInformeds;

}
