package com.xinelu.manage.vo.manualfollowup;

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 lombok.Data;

/**
 * 人工随访代办VO
 *
 * @author : youxilong
 * @date : 2024/4/2 10:36
 */
@Data
public class ManualFollowUpVO {

    /**
     * 患者信息表id
     */
    private Long patientId;

    /**
     * 签约患者管理任务id
     */
    private Long manageRouteId;

    @ApiModelProperty(value = "路径名称（任务名称）")
    private String manageRouteName;

    /**
     * 签约患者管理任务节点id
     */
    private Long manageRouteNodeId;

    @ApiModelProperty(value = "管理路径节点名称，出院后：AFTER_DISCHARGE，入院后：AFTER_ADMISSION，就诊后：AFTER_CONSULTATION，就诊/出院后：AFTER_VISIT_DISCHARGE，术前：PREOPERATIVE，术后：POSTOPERATIVE")
    private String routeNodeName;

    private String routeNode;

    @ApiModelProperty(value = "管理路径节点时间，时间单位为：天")
    private Integer routeNodeDay;

    @ApiModelProperty(value = "患者就诊记录基本信息表id")
    private Long visitRecordId;

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

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

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

    @ApiModelProperty(value = "在院患者：IN_HOSPITAL_PATIENT，门诊患者：OUTPATIENT，出院患者：DISCHARGED_PATIENT")
    private String patientType;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "门诊时间")
    private LocalDateTime visitTime;

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

    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "执行时间")
    private LocalDateTime executeTime;

    @ApiModelProperty(value = "任务类型，电话外呼：PHONE_OUTBOUND，问卷量表：QUESTIONNAIRE_SCALE，宣教文章：PROPAGANDA_ARTICLE，文字提醒：TEXT_REMIND，人工随访：ARTIFICIAL_FOLLOW_UP")
    private String taskType;

    @ApiModelProperty(value = "随访模板")
    private String templateName;

    @ApiModelProperty(value = "模板id")
    private String templateId;

    @ApiModelProperty(value = "节点任务执行状态，已执行：EXECUTED，未执行：UNEXECUTED")
    private String nodeExecuteStatus;

    @ApiModelProperty(value = "电话拨通情况；SUCCESS：成功；FAILURE：失败；EXPIRED：超期自动作废（如超期一周）；NULL或空字符串：缺省值，表示未执行；")
    private String phoneNodeExecuteResultStatus;

    @ApiModelProperty(value = "任务执行记录id")
    private Long taskExecuteRecordId;

    @ApiModelProperty(value = "任务处理信息")
    private String routeHandleRemark;

    @ApiModelProperty(value = "人工随访问卷模板表id")
    private Long followTemplateId;

    @ApiModelProperty(value = "电话话术表id")
    private Long scriptInfoId;

    @ApiModelProperty(value = "任务节点类型，电话外呼：PHONE_OUTBOUND，问卷量表：QUESTIONNAIRE_SCALE，宣教文章：PROPAGANDA_ARTICLE，文字提醒：TEXT_REMIND")
    private String taskNodeType;

    private String taskNodeTypeName;

	/**
	 * AI：自动 或  COMMON：手动
	 */
	@ApiModelProperty(value = "AI：自动 或  COMMON：手动")
	private String phoneDialMethod;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "计划时间")
    private LocalDate planTime;

	/**
	 * 生成通话录音唯一标识,可通过该标识，获取录音
	 */
	@ApiModelProperty(value = "生成通话录音唯一标识,可通过该标识，获取录音")
	private String ctUUID;

    /** 任务执行类型（批量还是单个执行） */
    @ApiModelProperty(value = "任务执行类型（批量还是单个执行，'批量任务：BATCH_TASK,单个实时拔打任务：ACTUAL_TIME_TASK'）")
    private String taskExcuteType;

    /** 任务计划执行时间，格式：YYYY-MM-dd HH:mm */
    @ApiModelProperty(value = "任务计划执行时间，格式：YYYY-MM-dd HH:mm")
    @JsonFormat(pattern = "YYYY-MM-dd HH:mm")
    private LocalDateTime nodePlanTime;

}
