//
// 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.10 at 02:12:35 PM MDT 
//


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

import gov.va.med.cds.template.generated.basedatatypes.HL72CodedElementLite;
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.HL72LocationIdentifier;
import gov.va.med.cds.template.generated.basedatatypes.PhysicalQuantity;
import gov.va.med.cds.template.generated.basedatatypes.PointInTime;
import gov.va.med.cds.template.generated.common.Medicine;
import gov.va.med.cds.template.generated.common.PatientLite;
import gov.va.med.cds.template.generated.common.PharmacyOrderableItem;
import gov.va.med.cds.template.generated.common.PractitionerParticipationLite;

import java.math.BigInteger;
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.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>Java class for NonVaMedicationEvent complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="NonVaMedicationEvent">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;all>
 *         &lt;element name="pharmacyPatient" type="{Common}PatientLite" minOccurs="0"/>
 *         &lt;element name="dosage" type="{Basedatatypes}PhysicalQuantity" minOccurs="0"/>
 *         &lt;element name="route" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="schedule" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="status" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="discontinueDate" type="{Basedatatypes}PointInTime" minOccurs="0"/>
 *         &lt;element name="orderIdentifier" type="{Basedatatypes}HL72EntityIdentifier" minOccurs="0"/>
 *         &lt;element name="documentedBy" type="{Common}PractitionerParticipationLite" minOccurs="0"/>
 *         &lt;element name="startDate" type="{Basedatatypes}PointInTime" minOccurs="0"/>
 *         &lt;element name="orderLocationIdentifier" type="{Basedatatypes}HL72LocationIdentifier" minOccurs="0"/>
 *         &lt;element name="pharmacyOrderableItem" type="{Common}PharmacyOrderableItem" minOccurs="0"/>
 *         &lt;element name="medication" type="{Common}Medicine" minOccurs="0"/>
 *         &lt;element name="source" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="recordSource" type="{Basedatatypes}HL72FacilityIdentifier" minOccurs="0"/>
 *         &lt;element name="recordVersion" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
 *         &lt;element name="recordUpdateTime" type="{Basedatatypes}PointInTime" minOccurs="0"/>
 *         &lt;element name="recordIdentifier" type="{Basedatatypes}HL72EntityIdentifier" minOccurs="0"/>
 *         &lt;element name="comments" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="disclaimers" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="disclaimer" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="detectedIssueEvents" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element name="detectedIssueEvent" type="{Pharmacy}DetectedIssueEvent" maxOccurs="unbounded" minOccurs="0"/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/all>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlRootElement(name="nonVaMedicationEvent")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "NonVaMedicationEvent", propOrder = {

})
public class NonVaMedicationEvent {

    protected PatientLite pharmacyPatient;
    protected PhysicalQuantity dosage;
    protected HL72CodedElementLite route;
    protected HL72CodedElementLite schedule;
    protected HL72CodedElementLite status;
    protected PointInTime discontinueDate;
    protected HL72EntityIdentifier orderIdentifier;
    protected PractitionerParticipationLite documentedBy;
    protected PointInTime startDate;
    protected HL72LocationIdentifier orderLocationIdentifier;
    protected PharmacyOrderableItem pharmacyOrderableItem;
    protected Medicine medication;
    protected String source;
    protected HL72FacilityIdentifier recordSource;
    protected BigInteger recordVersion;
    protected PointInTime recordUpdateTime;
    protected HL72EntityIdentifier recordIdentifier;
    protected NonVaMedicationEvent.Comments comments;
    protected NonVaMedicationEvent.Disclaimers disclaimers;
    protected NonVaMedicationEvent.DetectedIssueEvents detectedIssueEvents;
    protected String nvmId;
    @XmlTransient
    protected String StatusQuery;

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

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

    /**
     * Gets the value of the dosage property.
     * 
     * @return
     *     possible object is
     *     {@link PhysicalQuantity }
     *     
     */
    public PhysicalQuantity getDosage() {
        return dosage;
    }

    /**
     * Sets the value of the dosage property.
     * 
     * @param value
     *     allowed object is
     *     {@link PhysicalQuantity }
     *     
     */
    public void setDosage(PhysicalQuantity value) {
        this.dosage = value;
    }

    /**
     * Gets the value of the route property.
     * 
     * @return
     *     possible object is
     *     {@link HL72CodedElementLite }
     *     
     */
    public HL72CodedElementLite getRoute() {
        return route;
    }

    /**
     * Sets the value of the route property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72CodedElementLite }
     *     
     */
    public void setRoute(HL72CodedElementLite value) {
        this.route = value;
    }

    /**
     * Gets the value of the schedule property.
     * 
     * @return
     *     possible object is
     *     {@link HL72CodedElementLite }
     *     
     */
    public HL72CodedElementLite getSchedule() {
        return schedule;
    }

    /**
     * Sets the value of the schedule property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72CodedElementLite }
     *     
     */
    public void setSchedule(HL72CodedElementLite value) {
        this.schedule = value;
    }

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

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

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

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

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

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

    /**
     * Gets the value of the documentedBy property.
     * 
     * @return
     *     possible object is
     *     {@link PractitionerParticipationLite }
     *     
     */
    public PractitionerParticipationLite getDocumentedBy() {
        return documentedBy;
    }

    /**
     * Sets the value of the documentedBy property.
     * 
     * @param value
     *     allowed object is
     *     {@link PractitionerParticipationLite }
     *     
     */
    public void setDocumentedBy(PractitionerParticipationLite value) {
        this.documentedBy = value;
    }

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

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

    /**
     * Gets the value of the orderLocationIdentifier property.
     * 
     * @return
     *     possible object is
     *     {@link HL72LocationIdentifier }
     *     
     */
    public HL72LocationIdentifier getOrderLocationIdentifier() {
        return orderLocationIdentifier;
    }

    /**
     * Sets the value of the orderLocationIdentifier property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72LocationIdentifier }
     *     
     */
    public void setOrderLocationIdentifier(HL72LocationIdentifier value) {
        this.orderLocationIdentifier = value;
    }

    /**
     * Gets the value of the pharmacyOrderableItem property.
     * 
     * @return
     *     possible object is
     *     {@link PharmacyOrderableItem }
     *     
     */
    public PharmacyOrderableItem getPharmacyOrderableItem() {
        return pharmacyOrderableItem;
    }

    /**
     * Sets the value of the pharmacyOrderableItem property.
     * 
     * @param value
     *     allowed object is
     *     {@link PharmacyOrderableItem }
     *     
     */
    public void setPharmacyOrderableItem(PharmacyOrderableItem value) {
        this.pharmacyOrderableItem = value;
    }

    /**
     * Gets the value of the medication property.
     * 
     * @return
     *     possible object is
     *     {@link Medicine }
     *     
     */
    public Medicine getMedication() {
        return medication;
    }

    /**
     * Sets the value of the medication property.
     * 
     * @param value
     *     allowed object is
     *     {@link Medicine }
     *     
     */
    public void setMedication(Medicine value) {
        this.medication = value;
    }

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

    /**
     * Sets the value of the source property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSource(String value) {
        this.source = 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 recordVersion property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getRecordVersion() {
        return recordVersion;
    }

    /**
     * Sets the value of the recordVersion property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setRecordVersion(BigInteger 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;
    }

    /**
     * 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 comments property.
     * 
     * @return
     *     possible object is
     *     {@link NonVaMedicationEvent.Comments }
     *     
     */
    public NonVaMedicationEvent.Comments getComments() {
        return comments;
    }

    /**
     * Sets the value of the comments property.
     * 
     * @param value
     *     allowed object is
     *     {@link NonVaMedicationEvent.Comments }
     *     
     */
    public void setComments(NonVaMedicationEvent.Comments value) {
        this.comments = value;
    }

    /**
     * Gets the value of the disclaimers property.
     * 
     * @return
     *     possible object is
     *     {@link NonVaMedicationEvent.Disclaimers }
     *     
     */
    public NonVaMedicationEvent.Disclaimers getDisclaimers() {
        return disclaimers;
    }

    /**
     * Sets the value of the disclaimers property.
     * 
     * @param value
     *     allowed object is
     *     {@link NonVaMedicationEvent.Disclaimers }
     *     
     */
    public void setDisclaimers(NonVaMedicationEvent.Disclaimers value) {
        this.disclaimers = value;
    }

    /**
     * Gets the value of the detectedIssueEvents property.
     * 
     * @return
     *     possible object is
     *     {@link NonVaMedicationEvent.DetectedIssueEvents }
     *     
     */
    public NonVaMedicationEvent.DetectedIssueEvents getDetectedIssueEvents() {
        return detectedIssueEvents;
    }

    /**
     * Sets the value of the detectedIssueEvents property.
     * 
     * @param value
     *     allowed object is
     *     {@link NonVaMedicationEvent.DetectedIssueEvents }
     *     
     */
    public void setDetectedIssueEvents(NonVaMedicationEvent.DetectedIssueEvents value) {
        this.detectedIssueEvents = value;
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "comment"
    })
    public static class Comments {

        protected List<String> comment;
        @XmlTransient
        protected String singleComment;

        /**
         * Gets the value of the comment 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 comment property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getComment().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link String }
         * 
         * 
         */
        public List<String> getComment() {
            if (comment == null) {
                comment = new ArrayList<String>();
            }
            return this.comment;
        }
        public void setComment(List<String> comment) {
           this.comment = comment;
        }
        
        public String getSingleComment() {
           
            return this.singleComment;
        }
        public void setSingleComment(String singleComment) {
        	this.getComment().add(singleComment);
        	this.singleComment = singleComment;
        }
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="detectedIssueEvent" type="{Pharmacy}DetectedIssueEvent" maxOccurs="unbounded" minOccurs="0"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlRootElement(name="detectedIssueEvents")
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "detectedIssueEvent",
        "subNonVaMeds"
    })
    public static class DetectedIssueEvents {

        protected List<DetectedIssueEvent> detectedIssueEvent;
        @XmlTransient
        protected DetectedIssueEvent singleDetectedIssueEvent;
        @XmlTransient
        protected Object nvmId;
        protected String subNonVaMeds;

        /**
         * Gets the value of the detectedIssueEvent 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 detectedIssueEvent property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getDetectedIssueEvent().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link DetectedIssueEvent }
         * 
         * 
         */
        public List<DetectedIssueEvent> getDetectedIssueEvent() {
            if (detectedIssueEvent == null) {
                detectedIssueEvent = new ArrayList<DetectedIssueEvent>();
            }
            return this.detectedIssueEvent;
        }
        public void setDetectedIssueEvent(List<DetectedIssueEvent> detectedIssueEvent) {
          
           this.detectedIssueEvent = detectedIssueEvent;
        }
        
        public DetectedIssueEvent getSingleDetectedIssueEvent() {
            return this.singleDetectedIssueEvent;
        }
        public void setSingleDetectedIssueEvent(DetectedIssueEvent singleDetectedIssueEvent) {
           this.getDetectedIssueEvent().add(singleDetectedIssueEvent);
           this.singleDetectedIssueEvent = singleDetectedIssueEvent;
        }
        
        public String getSubNonVaMeds() {
            return this.subNonVaMeds;
        }
        public void setSubNonVaMeds(String subNonVaMeds) {
           this.subNonVaMeds = subNonVaMeds;
           
        }
        
        public Object getNvmId() {
    		return nvmId;
    	}

    	public void setNvmId(Object nvmId) {
    		this.nvmId = nvmId;
    	}


    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="disclaimer" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "disclaimer"
    })
    public static class Disclaimers {

        protected List<String> disclaimer;
        @XmlTransient
        protected String singleDisclaimer;

        /**
         * Gets the value of the disclaimer 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 disclaimer property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getDisclaimer().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link String }
         * 
         * 
         */
        public List<String> getDisclaimer() {
            if (disclaimer == null) {
                disclaimer = new ArrayList<String>();
            }
            return this.disclaimer;
        }
        public void setDisclaimer(List<String> disclaimer) {
           this.disclaimer = disclaimer;
        }
        
        public String getSingleDisclaimer() {
            return this.singleDisclaimer;
        }
        public void setSingleDisclaimer(String singleDisclaimer) {
           this.getDisclaimer().add(singleDisclaimer);
           this.singleDisclaimer = singleDisclaimer;
        }

    }
    
    public String getNvmId() {
		return nvmId;
	}

	public void setNvmId(String nvmId) {
		this.nvmId = nvmId;
	}
	
	public String getStatusQuery() {
		return StatusQuery;
	}

	public void setStatusQuery(String statusQuery) {
		this.StatusQuery = statusQuery;
	}

}
