package com.ruoyi.os.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;

import lombok.Data;

/**
 *
 * 患者病历信息
 * 
 * @author 何顺
 */
@Data
public class PatientMedicalRecordsVO {
    // 以下为患者信息表
    /**
     * 患者 id
     */
    private Long patientInfoId;

    /**
     * 就诊人类型
     */
    private Long patientType;
    /**
     * 就诊人类型 的 字典 名称
     * healthcare_os_diagnosis_type
     */
    private String dictionariesNamePatientType;
    /**
     * 就诊人类型 的 字典 名称 显示 的 数值
     */
    @Excel(name = "就诊人类型")
    private String patientTypeLabel;

    /**
     * 学号/工号
     */
    @Excel(name = "学号/工号")
    private String studentId;

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

    /**
     * 姓名
     */
    @Excel(name = "身份证号")
    private String idCard;

    /**
     * 性别
     */
    private String gender;

    /**
     * 性别 的 字典 名称
     */
    private String dictionariesNameGender;

    /**
     * 性别 的 字典 名称 显示 的 数值
     */

    private String genderLabel;

    /**
     * 年龄
     */

    private Integer age;

    /**
     * 专业
     */

    private String major;

    /**
     * 班级
     */

    private String classInfo;

    /**
     * 电话
     */

    private String phone;

    /**
     * 辅导员
     */

    private String counselor;

    /**
     * 部门
     */

    private String department;

    // 以下为患者诊断信息

    /**
     * 唯一标识符 诊断 ID
     */
    private Long patientDiagnosisId;

    /**
     * 患者 id 进行 列表 的 id
     */
    private Long patientId;

    /**
     * 诊断类型 ( 0: 初诊 1: 复诊 )
     */
    @Excel(name = "诊断类型", dictType = "healthcare_os_diagnosis_type")
    private Long diagnosisType;

    /**
     * 是否医保
     */
    private Long isInsured;

    /**
     * 是否医保 的 字典 名称
     */
    private String dictionariesNameIsInsured;

    /**
     * 是否医保 的 字典 名称 显示 的 数值
     */
    @Excel(name = "是否医保")
    private String isInsuredLabel;

    /**
     * 数值
     */
    @Excel(name = "报销比率")
    private BigDecimal value;

    /**
     * 主诉
     */
    @Excel(name = "主诉")
    private String chiefComplaint;

    /**
     * 现病史
     */
    @Excel(name = "现病史")
    private String presentIllness;

    /**
     * 既往史
     */
    @Excel(name = "既往史")
    private String pastHistory;

    /**
     * 诊断
     */
    @Excel(name = "诊断")
    private String diagnosis;

    /**
     * 医嘱事项
     */
    @Excel(name = "医嘱事项")
    private String medicalAdvice;

    /**
     * 医生名字
     */
    @Excel(name = "医生名字")
    private String doctorName;

    /**
     * 状态(0:待发药,1:已发药,2:已退药)os_diagnosis_status
     */
    private Long status;

    /**
     * 库房id
     */
    private Long storeroomId;

    /**
     * 库房名称
     */
    @Excel(name = "接诊地址")
    private String storeroomName;

    /**
     * 状态 的 字典 名称
     */
    private String dictionariesNameStatus;

    /**
     * 状态 的 字典 名称 显示 的 数值
     */
    @Excel(name = "状态")
    private String statusLabel;

    /**
     * 就诊时间 outpatient_time
     */
    @Excel(name = "就诊时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date outpatientTime;

    /**
     * 总价钱
     */
    private BigDecimal totalPrice;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTime;

    private BigDecimal totalAmount;

    /**
     * 应收金额
     */
    @Excel(name = "应收金额")
    private BigDecimal receivableAmount;

    /**
     * 处方总金额
     */
    @Excel(name = "处方总金额")
    private BigDecimal prescriptionTotalAmount;

    /**
     * 预计报销
     */
    @Excel(name = "预计报销")
    private BigDecimal estimatedReimbursement;

    /**
     * Prescription usage (medicine name + total quantity).
     */
    @Excel(name = "\u5904\u65b9\u7528\u836f")
    private String prescriptionUsage;

    /**
     * @field 处方详情列表
     */
    private List<List<HealthcareOsPrescriptionDetails>> prescriptionDetailsList;

}
