//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2015.06.22 at 12:17:16 PM MDT 
//


package gov.va.med.cds.template.generated.surveyscommon;

import gov.va.med.cds.clinicaldata.ClinicalRecordInterface;
import gov.va.med.cds.template.generated.basedatatypes.HL72FacilityIdentifier;
import gov.va.med.cds.template.generated.basedatatypes.PointInTime;
import gov.va.med.cds.template.generated.surveys.CensusSurveyResponse;
import gov.va.med.cds.template.generated.surveys.PSSurveyResponse;

import java.util.Date;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>Java class for SurveyResponse complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="SurveyResponse">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="xmlVersion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="survey" type="{SurveysCommon}Survey"/>
 *         &lt;element name="surveyPatient" type="{SurveysCommon}SurveyPatient"/>
 *         &lt;element name="enrollmentDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
 *         &lt;element name="disenrollmentDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
 *         &lt;element name="activationDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
 *         &lt;element name="inactivationDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
 *         &lt;element name="vendorMRN" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="facility" type="{SurveysCommon}Facility"/>
 *         &lt;element name="vendor" type="{SurveysCommon}Vendor"/>
 *         &lt;element name="careCoordinator" type="{SurveysCommon}CareCoordinator" minOccurs="0"/>
 *         &lt;element name="scheduledDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
 *         &lt;element name="completedDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
 *         &lt;element name="currentDialogueName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="programName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="deviceName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="responseStatus" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="recordSource" type="{Basedatatypes}HL72FacilityIdentifier"/>
 *         &lt;element name="recordUpdateTime" type="{Basedatatypes}PointInTime"/>
 *         &lt;choice>
 *           &lt;element name="surveyQuestionsAndAnswers" type="{SurveysCommon}SurveyQuestionsAndAnswers" minOccurs="0"/>
 *           &lt;element name="surveyQuestionsAndAnswersWithScores" type="{SurveysCommon}SurveyQuestionsAndAnswersWithScores" minOccurs="0"/>
 *         &lt;/choice>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "SurveyResponse", propOrder = {
    "xmlVersion",
    "survey",
    "surveyPatient",
    "enrollmentDate",
    "disenrollmentDate",
    "activationDate",
    "inactivationDate",
    "vendorMRN",
    "facility",
    "vendor",
    "careCoordinator",
    "scheduledDate",
    "completedDate",
    "currentDialogueName",
    "programName",
    "deviceName",
    "responseStatus",
    "recordSource",
    "recordUpdateTime",
    "surveyQuestionsAndAnswers",
    "surveyQuestionsAndAnswersWithScores",
    "requestId",
    "id"
})
@XmlSeeAlso({
    PSSurveyResponse.class, CensusSurveyResponse.class
})
public class SurveyResponse implements ClinicalRecordInterface{

    protected String xmlVersion;
    @XmlElement(required = true)
    protected Survey survey;
    @XmlElement(required = true)
    protected SurveyPatient surveyPatient;
    @XmlSchemaType(name = "date")
    protected Date enrollmentDate;
    @XmlSchemaType(name = "date")
    @XmlElement(required = false)
    protected Date disenrollmentDate;
    @XmlSchemaType(name = "date")
    @XmlElement(required = false)
    protected Date activationDate;
    @XmlSchemaType(name = "date")
    @XmlElement(required = false)
    protected Date inactivationDate;
    @XmlElement(required = true)
    protected String vendorMRN;
    @XmlElement(required = true)
    protected Facility facility;
    @XmlElement(required = true)
    protected Vendor vendor;
    protected CareCoordinator careCoordinator;
    @XmlSchemaType(name = "date")
    @XmlElement(required = false)
    protected Date scheduledDate;
    @XmlElement(required = true)
    @XmlSchemaType(name = "dateTime")
    protected Date completedDate;
    protected String currentDialogueName;
    protected String programName;
    protected String deviceName;
    @XmlElement(required = true)
    protected String responseStatus;
    @XmlElement(required = true)
    protected HL72FacilityIdentifier recordSource;
    @XmlElement(required = true)
    protected PointInTime recordUpdateTime;
    protected SurveyQuestionsAndAnswers surveyQuestionsAndAnswers;
    protected SurveyQuestionsAndAnswersWithScores surveyQuestionsAndAnswersWithScores;
    protected String requestId;
	protected Long id;
	@XmlTransient
	protected SurveyPatient surveyPatientPatient;

    /**
     * Gets the value of the xmlVersion property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getXmlVersion() {
        return xmlVersion;
    }

    /**
     * Sets the value of the xmlVersion property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setXmlVersion(String value) {
        this.xmlVersion = value;
    }

    /**
     * Gets the value of the survey property.
     * 
     * @return
     *     possible object is
     *     {@link Survey }
     *     
     */
    public Survey getSurvey() {
        return survey;
    }

    /**
     * Sets the value of the survey property.
     * 
     * @param value
     *     allowed object is
     *     {@link Survey }
     *     
     */
    public void setSurvey(Survey value) {
        this.survey = value;
    }

    /**
     * Gets the value of the surveyPatient property.
     * 
     * @return
     *     possible object is
     *     {@link SurveyPatient }
     *     
     */
    public SurveyPatient getSurveyPatient() {
        return surveyPatient;
    }
    /*mirrored element to get around duplicate component mapping when persisting in hibernate*/
    public SurveyPatient getSurveyPatientPatient() {
        return surveyPatient;
    }

    /**
     * Sets the value of the surveyPatient property.
     * 
     * @param value
     *     allowed object is
     *     {@link SurveyPatient }
     *     
     */
    public void setSurveyPatient(SurveyPatient value) {
        this.surveyPatient = value;
    }
    /*mirrored element to get around duplicate component mapping when persisting in hibernate*/
    public void setSurveyPatientPatient(SurveyPatient value) {
    	if(this.surveyPatient!=null){
    		this.surveyPatient.setPatient(value.getPatient());
    	}
    }

    /**
     * Gets the value of the enrollmentDate property.
     * 
     * @return
     *     possible object is
     *     {@link Date }
     *     
     */
    public Date getEnrollmentDate() {
        return enrollmentDate;
    }

    /**
     * Sets the value of the enrollmentDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link Date }
     *     
     */
    public void setEnrollmentDate(Date value) {
        this.enrollmentDate = value;
    }

    /**
     * Gets the value of the disenrollmentDate property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public Date getDisenrollmentDate() {
        return disenrollmentDate;
    }

    /**
     * Sets the value of the disenrollmentDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public void setDisenrollmentDate(Date value) {
        this.disenrollmentDate = value;
    }

    /**
     * Gets the value of the activationDate property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public Date getActivationDate() {
        return activationDate;
    }

    /**
     * Sets the value of the activationDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public void setActivationDate(Date value) {
        this.activationDate = value;
    }

    /**
     * Gets the value of the inactivationDate property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public Date getInactivationDate() {
        return inactivationDate;
    }

    /**
     * Sets the value of the inactivationDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public void setInactivationDate(Date value) {
        this.inactivationDate = value;
    }

    /**
     * Gets the value of the vendorMRN property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getVendorMRN() {
        return vendorMRN;
    }

    /**
     * Sets the value of the vendorMRN property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setVendorMRN(String value) {
        this.vendorMRN = value;
    }

    /**
     * Gets the value of the facility property.
     * 
     * @return
     *     possible object is
     *     {@link Facility }
     *     
     */
    public Facility getFacility() {
        return facility;
    }

    /**
     * Sets the value of the facility property.
     * 
     * @param value
     *     allowed object is
     *     {@link Facility }
     *     
     */
    public void setFacility(Facility value) {
        this.facility = value;
    }

    /**
     * Gets the value of the vendor property.
     * 
     * @return
     *     possible object is
     *     {@link Vendor }
     *     
     */
    public Vendor getVendor() {
        return vendor;
    }

    /**
     * Sets the value of the vendor property.
     * 
     * @param value
     *     allowed object is
     *     {@link Vendor }
     *     
     */
    public void setVendor(Vendor value) {
        this.vendor = value;
    }

    /**
     * Gets the value of the careCoordinator property.
     * 
     * @return
     *     possible object is
     *     {@link CareCoordinator }
     *     
     */
    public CareCoordinator getCareCoordinator() {
        return careCoordinator;
    }

    /**
     * Sets the value of the careCoordinator property.
     * 
     * @param value
     *     allowed object is
     *     {@link CareCoordinator }
     *     
     */
    public void setCareCoordinator(CareCoordinator value) {
        this.careCoordinator = value;
    }

    /**
     * Gets the value of the scheduledDate property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public Date getScheduledDate() {
        return scheduledDate;
    }

    /**
     * Sets the value of the scheduledDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Date }{@code >}
     *     
     */
    public void setScheduledDate(Date value) {
        this.scheduledDate = value;
    }

    /**
     * Gets the value of the completedDate property.
     * 
     * @return
     *     possible object is
     *     {@link Date }
     *     
     */
    public Date getCompletedDate() {
        return completedDate;
    }

    /**
     * Sets the value of the completedDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link Date }
     *     
     */
    public void setCompletedDate(Date value) {
        this.completedDate = value;
    }

    /**
     * Gets the value of the currentDialogueName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCurrentDialogueName() {
        return currentDialogueName;
    }

    /**
     * Sets the value of the currentDialogueName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCurrentDialogueName(String value) {
        this.currentDialogueName = value;
    }

    /**
     * Gets the value of the programName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getProgramName() {
        return programName;
    }

    /**
     * Sets the value of the programName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setProgramName(String value) {
        this.programName = value;
    }

    /**
     * Gets the value of the deviceName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDeviceName() {
        return deviceName;
    }

    /**
     * Sets the value of the deviceName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDeviceName(String value) {
        this.deviceName = value;
    }

    /**
     * Gets the value of the responseStatus property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getResponseStatus() {
        return responseStatus;
    }

    /**
     * Sets the value of the responseStatus property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setResponseStatus(String value) {
        this.responseStatus = value;
    }

    /**
     * Gets the value of the recordSource property.
     * 
     * @return
     *     possible object is
     *     {@link HL72FacilityIdentifier }
     *     
     */
    public HL72FacilityIdentifier getRecordSource() {
        return recordSource;
    }

    /**
     * Sets the value of the recordSource property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72FacilityIdentifier }
     *     
     */
    public void setRecordSource(HL72FacilityIdentifier value) {
        this.recordSource = value;
    }

    /**
     * Gets the value of the recordUpdateTime property.
     * 
     * @return
     *     possible object is
     *     {@link PointInTime }
     *     
     */
    public PointInTime getRecordUpdateTime() {
        return recordUpdateTime;
    }

    /**
     * Sets the value of the recordUpdateTime property.
     * 
     * @param value
     *     allowed object is
     *     {@link PointInTime }
     *     
     */
    public void setRecordUpdateTime(PointInTime value) {
        this.recordUpdateTime = value;
    }

    /**
     * Gets the value of the surveyQuestionsAndAnswers property.
     * 
     * @return
     *     possible object is
     *     {@link SurveyQuestionsAndAnswers }
     *     
     */
    public SurveyQuestionsAndAnswers getSurveyQuestionsAndAnswers() {
        return surveyQuestionsAndAnswers;
    }

    /**
     * Sets the value of the surveyQuestionsAndAnswers property.
     * 
     * @param value
     *     allowed object is
     *     {@link SurveyQuestionsAndAnswers }
     *     
     */
    public void setSurveyQuestionsAndAnswers(SurveyQuestionsAndAnswers value) {
        this.surveyQuestionsAndAnswers = value;
    }

    /**
     * Gets the value of the surveyQuestionsAndAnswersWithScores property.
     * 
     * @return
     *     possible object is
     *     {@link SurveyQuestionsAndAnswersWithScores }
     *     
     */
    public SurveyQuestionsAndAnswersWithScores getSurveyQuestionsAndAnswersWithScores() {
        return surveyQuestionsAndAnswersWithScores;
    }

    /**
     * Sets the value of the surveyQuestionsAndAnswersWithScores property.
     * 
     * @param value
     *     allowed object is
     *     {@link SurveyQuestionsAndAnswersWithScores }
     *     
     */
    public void setSurveyQuestionsAndAnswersWithScores(SurveyQuestionsAndAnswersWithScores value) {
        this.surveyQuestionsAndAnswersWithScores = value;
    }
    
    public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	public void setRequestId(String requestId) {
		this.requestId = requestId;
			
	}
		
	public String getRequestId() {
		return this.requestId;
	}

}
