package com.agilex.healthcare.schedulingmanager.domain;


import com.agilex.healthcare.mobilehealthplatform.domain.PatientData;
import com.agilex.healthcare.utility.datemarshallers.DateMarshaller;
import com.agilex.healthcare.utility.datemarshallers.DateTimeMarshaller;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.Date;

@XmlRootElement(name = "waitListEntry", namespace = Namespace.SchedulingManager)
@XmlAccessorType(value = XmlAccessType.NONE)
public class WaitListEntry extends PatientData {

    private static final long serialVersionUID = -3900030648275030676L;

    public static String ID_KEY = "id";
    public static String DFN_KEY = "dfn";
    public static String STOP_CODE_KEY = "stopCode";
    public static String DATE_LAST_UPDATED_KEY = "dateLastUpdated";
    public static String DESIRED_DATE_KEY = "desiredDate";
    public static String DAYS_ON_LIST_KEY = "daysOnList";
    public static String LAST_NAME_KEY = "lastName";
    public static String SSN_KEY = "ssn";
    public static String SERVICE_CONNECTED_KEY = "serviceConnected";
    public static String CLINIC_NAME_KEY = "clinicName";
    public static String ORIGINATING_DATE_KEY = "originatingDate";
    public static String PATIENT_ZIP_KEY = "patientZip";
    public static String ENROLLEE_STATUS_KEY = "enrolleeStatus";
    public static String PRIORITY_KEY = "priority";
    public static String WAIT_LIST_TYPE_KEY = "waitListType";
    public static String HOME_PHONE_KEY = "homePhone";
    public static String CELL_PHONE_KEY = "cellPhone";
    public static String FACILITY_ID_KEY = "facilityId";
    public static String MESSAGE_KEY = "message";
    public static String ELIGIBILITY_CODE_INTERNAL_KEY = "eligibilityCodeInternal";
    public static String ELIGIBILITY_CODE_EXTERNAL_KEY = "eligibilityCodeExternal";
    public static String DATE_REMOVED_FROM_EWL_KEY = "dateRemovedFromEwl";
    public static String CLINIC_ID_KEY = "clinicId";
    public static String ACCESSIONNO_KEY = "accessionno";
    public static String PROVIDER_KEY = "provider";
    public static String COMMENT_KEY = "comment";
    public static String RECALL_DATE_KEY = "recallDate";
    public static String FAST_NON_FASTING_KEY = "fastNonFasting";
    public static String DATE_REMINDER_SENT_KEY = "dateReminderSent";
    public static String APPOINTMENT_LENGTH_KEY = "appointmentLength";
    public static String USER_KEY = "user";
    public static String RECALL_DATE_1_KEY = "recallDate1";
    public static String SECOND_PRINT_DATE_KEY = "secondPrintDate";
    public static String PATIENT_NAME_KEY = "patientName";
    public static String APPOINTMENT_REQUEST_DATE_KEY = "appointmentRequestDate";
    public static String EWL_IEN_KEY = "ewlIen";



    private String id;

    @XmlElement
    private String dfn;

    @XmlElement
    private String stopCode;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date dateLastUpdated;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date desiredDate;

    @XmlElement
    private String daysOnList;

    @XmlElement
    private String lastName;

    @XmlElement
    private String ssn;

    @XmlElement
    private String serviceConnected;

    @XmlElement
    private String clinicName;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date originatingDate;

    @XmlElement
    private String patientZip;

    @XmlElement
    private String enrolleeStatus;

    @XmlElement
    private String priority;

    @XmlElement
    private String waitListType;

    @XmlElement
    private String homePhone;

    @XmlElement
    private String cellPhone;

    @XmlElement
    private String facilityId;

    @XmlElement
    private String message;

    @XmlElement
    private String eligibilityCodeInternal;

    @XmlElement
    private String eligibilityCodeExternal;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date dateRemovedFromEwl;

    @XmlElement
    private String clinicId;

    @XmlElement
    private String accessionno;

    @XmlElement
    private String provider;

    @XmlElement
    private String comment;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date recallDate;

    @XmlElement
    private String fastNonFasting;

    @XmlElement
    private String appointmentLength;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date dateReminderSent;

    @XmlElement
    private String user;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date recallDate1;

    @XmlElement
    @XmlJavaTypeAdapter(DateMarshaller.class)
    private Date secondPrintDate;

    @XmlElement
    private String patientName;

    @XmlJavaTypeAdapter(DateTimeMarshaller.class)
    private Date appointmentRequestDate;

    @XmlElement
    private String ewlIen;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDfn() {
        return dfn;
    }

    public void setDfn(String dfn) {
        this.dfn = dfn;
    }

    public String getStopCode() {
        return stopCode;
    }

    public void setStopCode(String stopCode) {
        this.stopCode = stopCode;
    }

    public Date getDateLastUpdated() {
        return dateLastUpdated;
    }

    public void setDateLastUpdated(Date dateLastUpdated) {
        this.dateLastUpdated = dateLastUpdated;
    }

    public Date getDesiredDate() {
        return desiredDate;
    }

    public void setDesiredDate(Date desiredDate) {
        this.desiredDate = desiredDate;
    }

    public String getDaysOnList() {
        return daysOnList;
    }

    public void setDaysOnList(String daysOnList) {
        this.daysOnList = daysOnList;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getSsn() {
        return ssn;
    }

    public void setSsn(String ssn) {
        this.ssn = ssn;
    }

    public String getServiceConnected() {
        return serviceConnected;
    }

    public void setServiceConnected(String serviceConnected) {
        this.serviceConnected = serviceConnected;
    }

    public String getClinicName() {
        return clinicName;
    }

    public void setClinicName(String clinicName) {
        this.clinicName = clinicName;
    }

    public Date getOriginatingDate() {
        return originatingDate;
    }

    public void setOriginatingDate(Date originatingDate) {
        this.originatingDate = originatingDate;
    }

    public String getPatientZip() {
        return patientZip;
    }

    public void setPatientZip(String patientZip) {
        this.patientZip = patientZip;
    }

    public String getEnrolleeStatus() {
        return enrolleeStatus;
    }

    public void setEnrolleeStatus(String enrolleeStatus) {
        this.enrolleeStatus = enrolleeStatus;
    }

    public String getPriority() {
        return priority;
    }

    public void setPriority(String priority) {
        this.priority = priority;
    }

    public String getWaitListType() {
        return waitListType;
    }

    public void setWaitListType(String waitListType) {
        this.waitListType = waitListType;
    }

    public Date getDateRemovedFromEwl() {
        return dateRemovedFromEwl;
    }

    public void setDateRemovedFromEwl(Date dateRemovedFromEwl) {
        this.dateRemovedFromEwl = dateRemovedFromEwl;
    }

    public String getHomePhone() {
        return homePhone;
    }

    public void setHomePhone(String homePhone) {
        this.homePhone = homePhone;
    }

    public String getCellPhone() {
        return cellPhone;
    }

    public void setCellPhone(String cellPhone) {
        this.cellPhone = cellPhone;
    }

    public String getFacilityId() {
        return facilityId;
    }

    public void setFacilityId(String facilityId) {
        this.facilityId = facilityId;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getEligibilityCodeInternal() {
        return eligibilityCodeInternal;
    }

    public void setEligibilityCodeInternal(String eligibilityCodeInternal) {
        this.eligibilityCodeInternal = eligibilityCodeInternal;
    }

    public String getEligibilityCodeExternal() {
        return eligibilityCodeExternal;
    }

    public void setEligibilityCodeExternal(String eligibilityCodeExternal) {
        this.eligibilityCodeExternal = eligibilityCodeExternal;
    }

    public String getClinicId() {
        return clinicId;
    }

    public void setClinicId(String clinicId) {
        this.clinicId = clinicId;
    }

    public String getAccessionno() {
        return accessionno;
    }

    public void setAccessionno(String accessionno) {
        this.accessionno = accessionno;
    }

    public String getProvider() {
        return provider;
    }

    public void setProvider(String provider) {
        this.provider = provider;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public Date getRecallDate() {
        return recallDate;
    }

    public void setRecallDate(Date recallDate) {
        this.recallDate = recallDate;
    }

    public String getFastNonFasting() {
        return fastNonFasting;
    }

    public void setFastNonFasting(String fastNonFasting) {
        this.fastNonFasting = fastNonFasting;
    }

    public String getAppointmentLength() {
        return appointmentLength;
    }

    public void setAppointmentLength(String appointmentLength) {
        this.appointmentLength = appointmentLength;
    }

    public Date getDateReminderSent() {
        return dateReminderSent;
    }

    public void setDateReminderSent(Date dateReminderSent) {
        this.dateReminderSent = dateReminderSent;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public Date getRecallDate1() {
        return recallDate1;
    }

    public void setRecallDate1(Date recallDate1) {
        this.recallDate1 = recallDate1;
    }

    public Date getSecondPrintDate() {
        return secondPrintDate;
    }

    public void setSecondPrintDate(Date secondPrintDate) {
        this.secondPrintDate = secondPrintDate;
    }

    public String getPatientName() {
        return patientName;
    }

    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }

    public Date getAppointmentRequestDate() {
        return appointmentRequestDate;
    }

    public void setAppointmentRequestDate(Date appointmentRequestDate) {
        this.appointmentRequestDate = appointmentRequestDate;
    }

    public String getEwlIen() {
        return ewlIen;
    }

    public void setEwlIen(String ewlIen) {
        this.ewlIen = ewlIen;
    }
}
