//
// 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.03.13 at 09:48:02 AM MDT 
//


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

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

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



/**
 * <p>Java class for IntoleranceCondition complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="IntoleranceCondition">
 *   &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="observationTime" type="{Basedatatypes}PointInTime" minOccurs="0"/>
 *         &lt;element name="agent" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="allergyType" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="gmrAllergyAgent" type="{Basedatatypes}HL72CodedElement" minOccurs="0"/>
 *         &lt;element name="informationSourceCategory" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="severity" type="{Allergies}SeverityObservationEvent" minOccurs="0"/>
 *         &lt;element name="mechanism" type="{Basedatatypes}HL72CodedElementLite" minOccurs="0"/>
 *         &lt;element name="status" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="verified" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="reaction" type="{Allergies}ReactionObservationEvent" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="verifier" type="{Common}PractitionerParticipationLite" minOccurs="0"/>
 *         &lt;element name="author" type="{Common}PractitionerParticipationLite" minOccurs="0"/>
 *         &lt;element name="errorEnterer" type="{Common}PractitionerParticipationLite" minOccurs="0"/>
 *         &lt;element name="idBandMarker" type="{Common}PractitionerParticipationLite" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="chartMarker" type="{Common}PractitionerParticipationLite" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="commentEvents" type="{Allergies}AllergyCommentEvent" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="drugClass" type="{Allergies}DrugClass" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="drugIngredient" type="{Allergies}DrugIngredient" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="facilityIdentifier" type="{Basedatatypes}HL72OrganizationIdentifier" minOccurs="0"/>
 *         &lt;element name="recordSource" type="{Basedatatypes}HL72FacilityIdentifier" minOccurs="0"/>
 *         &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="intoleranceConditions")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "IntoleranceCondition", propOrder = {
    "recordIdentifier",
    "patient",
    "observationTime",
    "agent",
    "allergyType",
    "gmrAllergyAgent",
    "informationSourceCategory",
    "severity",
    "mechanism",
    "status",
    "verified",
    "reaction",
    "verifier",
    "author",
    "errorEnterer",
    "idBandMarker",
    "chartMarker",
    "commentEvents",
    "drugClass",
    "drugIngredient",
    "facilityIdentifier",
    "recordSource",
    "recordVersion",
    "recordUpdateTime",
    "requestId",
    "id"
})
public class IntoleranceCondition implements ClinicalRecordInterface {

    @XmlElement(required = true)
    protected HL72EntityIdentifier recordIdentifier;
    @XmlElement(required = true)
    protected PatientLite patient;
    protected PointInTime observationTime;
    protected HL72CodedElementLite agent;
    protected HL72CodedElementLite allergyType;
    protected HL72CodedElement gmrAllergyAgent;
    protected HL72CodedElementLite informationSourceCategory;
    protected SeverityObservationEvent severity;
    protected HL72CodedElementLite mechanism;
    protected String status;
    protected String verified;
    @XmlElement(required = false)
    protected List<ReactionObservationEvent> reaction;
    protected PractitionerParticipationLite verifier;
    protected PractitionerParticipationLite author;
    protected PractitionerParticipationLite errorEnterer;
    @XmlElement(required = false)
    protected List<PractitionerParticipationLite> idBandMarker;
    @XmlElement(required = false)
    protected List<PractitionerParticipationLite> chartMarker;
    @XmlElement(required = false)
    protected List<AllergyCommentEvent> commentEvents;
    @XmlElement(required = false)
    protected List<DrugClass> drugClass;
    @XmlElement(required = false)
    protected List<DrugIngredient> drugIngredient;
    protected HL72OrganizationIdentifier facilityIdentifier;
    @XmlElement( required = true, nillable = false )
    protected HL72FacilityIdentifier recordSource;
    protected Integer recordVersion;
    @XmlElement(required = true)
    protected PointInTime recordUpdateTime;
    protected String requestId;
    protected Long id;
    @XmlTransient
    protected BigDecimal idV;
    
    
    /**
     * 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 observationTime property.
     * 
     * @return
     *     possible object is
     *     {@link PointInTime }
     *     
     */
    public PointInTime getObservationTime() {
        return observationTime;
    }

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

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

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

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

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

    /**
     * Gets the value of the gmrAllergyAgent property.
     * 
     * @return
     *     possible object is
     *     {@link HL72CodedElement }
     *     
     */
    public HL72CodedElement getGmrAllergyAgent() {
        return gmrAllergyAgent;
    }

    /**
     * Sets the value of the gmrAllergyAgent property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72CodedElement }
     *     
     */
    public void setGmrAllergyAgent(HL72CodedElement value) {
        this.gmrAllergyAgent = value;
    }

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

    /**
     * Sets the value of the informationSourceCategory property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72CodedElementLite }
     *     
     */
    public void setInformationSourceCategory(HL72CodedElementLite value) {
        this.informationSourceCategory = value;
    }
    
    /**
     * Gets the value of the severity property.
     * 
     * @return
     *    SeverityObservationEvent
     *     
     */
    public SeverityObservationEvent getSeverity() {
        return severity;
    }

    /**
     * Sets the value of the mechanism property.
     * 
     * @param value
     *     SeverityObservationEvent
     *     
     */
    public void setSeverity(SeverityObservationEvent value) {
        this.severity = value;
    }

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

    /**
     * Sets the value of the mechanism property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72CodedElementLite }
     *     
     */
    public void setMechanism(HL72CodedElementLite value) {
        this.mechanism = 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 verified property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getVerified() {
        return verified;
    }

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

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

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

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

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

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

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

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

    /**
     * Gets the value of the idBandMarker 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 idBandMarker property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getIdBandMarker().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link PractitionerParticipationLite }
     * 
     * 
     */
    public List<PractitionerParticipationLite> getIdBandMarker() {
        if (idBandMarker == null) {
            idBandMarker = new ArrayList<PractitionerParticipationLite>();
        }
        return this.idBandMarker;
    }
    public void setIdBandMarker( List<PractitionerParticipationLite> idBandMarker) {
        
    	this.idBandMarker=idBandMarker;
    }
    /**
     * Gets the value of the chartMarker 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 chartMarker property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getChartMarker().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link PractitionerParticipationLite }
     * 
     * 
     */
    public List<PractitionerParticipationLite> getChartMarker() {
        if (chartMarker == null) {
            chartMarker = new ArrayList<PractitionerParticipationLite>();
        }
        return this.chartMarker;
    }
    public void setChartMarker(List<PractitionerParticipationLite> chartMarker) {
       
    	this.chartMarker=chartMarker;
    }

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

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

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

    /**
     * Gets the value of the facilityIdentifier property.
     * 
     * @return
     *     possible object is
     *     {@link HL72OrganizationIdentifier }
     *     
     */
    public HL72OrganizationIdentifier getFacilityIdentifier() {
        return facilityIdentifier;
    }

    /**
     * Sets the value of the facilityIdentifier property.
     * 
     * @param value
     *     allowed object is
     *     {@link HL72OrganizationIdentifier }
     *     
     */
    public void setFacilityIdentifier(HL72OrganizationIdentifier value) {
        this.facilityIdentifier = 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.
     * 
     */
    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;
	}
	
	public BigDecimal getIdV() {
		return idV;
	}

	public void setIdV(BigDecimal id) {
		this.idV = id;
	}
	
}
