//
// 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.05.14 at 04:52:12 PM MDT 
//


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

import gov.va.med.cds.clinicaldata.ClinicalRecordInterface;
import gov.va.med.cds.template.generated.basedatatypes.HL72EntityIdentifier;
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.common.PatientLite;

import java.util.ArrayList;
import java.util.List;

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.XmlType;


/**
 * <p>Java class for LabTestPromise complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="LabTestPromise">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="recordIdentifier" type="{Basedatatypes}HL72EntityIdentifier"/>
 *         &lt;element name="patient" type="{Common}PatientLite"/>
 *         &lt;element name="placerOrderIdentifier" type="{Basedatatypes}HL72EntityIdentifier" minOccurs="0"/>
 *         &lt;element name="placerAccessionReference" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="fillerIenReference" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="reportCompleteDate" type="{Basedatatypes}PointInTime" minOccurs="0"/>
 *         &lt;element name="labSubscript" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="priority" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="status" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="labCommentEvents" type="{Lab}LabCommentEvent" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="labTestRequest" type="{Lab}LabTestRequest" minOccurs="0"/>
 *         &lt;element name="patientVisit" type="{Lab}LabPatientVisit" minOccurs="0"/>
 *         &lt;element name="specimen" type="{Lab}Specimen"/>
 *         &lt;element name="labTests" type="{Lab}LabTest" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="recordSource" type="{Basedatatypes}HL72FacilityIdentifier"/>
 *         &lt;element name="recordVersion" type="{http://www.w3.org/2001/XMLSchema}int"/>
 *         &lt;element name="recordUpdateTime" type="{Basedatatypes}PointInTime"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlRootElement(name="labTestPromises")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "LabTestPromise", propOrder = {
    "recordIdentifier",
    "patient",
    "placerOrderIdentifier",
    "placerAccessionReference",
    "fillerIenReference",
    "reportCompleteDate",
    "labSubscript",
    "priority",
    "status",
    "labCommentEvents",
    "labTestRequest",
    "patientVisit",
    "specimen",
    "labTests",
    "recordSource",
    "recordVersion",
    "recordUpdateTime",
    "requestId",
    "id"
})
public class LabTestPromise  implements ClinicalRecordInterface{

    @XmlElement(required = true)
    protected HL72EntityIdentifier recordIdentifier;
    @XmlElement(required = true)
    protected PatientLite patient;
    protected HL72EntityIdentifier placerOrderIdentifier;
    protected String placerAccessionReference;
    protected String fillerIenReference;
    protected PointInTime reportCompleteDate;
    protected String labSubscript;
    protected String priority;
    protected String status;
    @XmlElement(required = false)
    protected List<LabCommentEvent> labCommentEvents;
    protected LabTestRequest labTestRequest;
    protected LabPatientVisit patientVisit;
    @XmlElement(required = true)
    protected Specimen specimen;
    @XmlElement(required = false)
    protected List<LabTest> labTests;
    @XmlElement( required = true, nillable = false )
    protected HL72FacilityIdentifier recordSource;
    protected Integer recordVersion;
    @XmlElement(required = true)
    protected PointInTime recordUpdateTime;
    protected String requestId;
    protected Long id;

    /**
     * Gets the value of the recordIdentifier property.
     * 
     * @return
     *     possible object is
     *     {@link HL72EntityIdentifier }
     *     
     */
    public HL72EntityIdentifier getRecordIdentifier() {
        return recordIdentifier;
    }

    /**
     * Sets the value of the recordIdentifier property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72EntityIdentifier }
     *     
     */
    public void setRecordIdentifier(HL72EntityIdentifier value) {
        this.recordIdentifier = value;
    }

    /**
     * Gets the value of the patient property.
     * 
     * @return
     *     possible object is
     *     {@link PatientLite }
     *     
     */
    public PatientLite getPatient() {
        return patient;
    }

    /**
     * Sets the value of the patient property.
     * 
     * @param value
     *     allowed object is
     *     {@link PatientLite }
     *     
     */
    public void setPatient(PatientLite value) {
        this.patient = value;
    }

    /**
     * Gets the value of the placerOrderIdentifier property.
     * 
     * @return
     *     possible object is
     *     {@link HL72EntityIdentifier }
     *     
     */
    public HL72EntityIdentifier getPlacerOrderIdentifier() {
        return placerOrderIdentifier;
    }

    /**
     * Sets the value of the placerOrderIdentifier property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72EntityIdentifier }
     *     
     */
    public void setPlacerOrderIdentifier(HL72EntityIdentifier value) {
        this.placerOrderIdentifier = value;
    }

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * Gets the value of the labCommentEvents property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the labCommentEvents property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getLabCommentEvents().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link LabCommentEventOld }
     * 
     * 
     */
    public List<LabCommentEvent> getLabCommentEvents() {
        if (labCommentEvents == null) {
            labCommentEvents = new ArrayList<LabCommentEvent>();
        }
        return this.labCommentEvents;
    }
    public void setLabCommentEvents(List<LabCommentEvent> commentEvents) {
       
        this.labCommentEvents = commentEvents;
    }

    /**
     * Gets the value of the labTestRequest property.
     * 
     * @return
     *     possible object is
     *     {@link LabTestRequest }
     *     
     */
    public LabTestRequest getLabTestRequest() {
        return labTestRequest;
    }

    /**
     * Sets the value of the labTestRequest property.
     * 
     * @param value
     *     allowed object is
     *     {@link LabTestRequest }
     *     
     */
    public void setLabTestRequest(LabTestRequest value) {
        this.labTestRequest = value;
    }

    /**
     * Gets the value of the patientVisit property.
     * 
     * @return
     *     possible object is
     *     {@link LabPatientVisit }
     *     
     */
    public LabPatientVisit getPatientVisit() {
        return patientVisit;
    }

    /**
     * Sets the value of the patientVisit property.
     * 
     * @param value
     *     allowed object is
     *     {@link LabPatientVisit }
     *     
     */
    public void setPatientVisit(LabPatientVisit value) {
        this.patientVisit = value;
    }

    /**
     * Gets the value of the specimen property.
     * 
     * @return
     *     possible object is
     *     {@link Specimen }
     *     
     */
    public Specimen getSpecimen() {
        return specimen;
    }

    /**
     * Sets the value of the specimen property.
     * 
     * @param value
     *     allowed object is
     *     {@link Specimen }
     *     
     */
    public void setSpecimen(Specimen value) {
        this.specimen = value;
    }

    /**
     * Gets the value of the labTests property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the labTests property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getLabTests().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link LabTestOld }
     * 
     * 
     */
    public List<LabTest> getLabTests() {
        if (labTests == null) {
            labTests = new ArrayList<LabTest>();
        }
        return this.labTests;
    }
    public void setLabTests(List<LabTest> labTests) {
        
        this.labTests = labTests;
    }

    /**
     * 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 recordVersion property.
     * 
     */
    public int getRecordVersion() {
        return recordVersion;
    }

    /**
     * Sets the value of the recordVersion property.
     * 
     */
    public void setRecordVersion(Integer value) {
        this.recordVersion = 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;
    }
    
    public void setRequestId(String requestId) {
		this.requestId = requestId;
		
	}
	
	public String getRequestId() {
		return this.requestId;
	}
    
    public Long getId() {
		return id;
	}

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


}
