/**
 * COCTMT530000UVSupply.java
 * <p>
 * File generated from the coctmt530000UV::COCTMT530000UVSupply uml Class
 * Generated by IHE - europe, gazelle team
 */
package net.ihe.gazelle.hl7v3.coctmt530000UV;

import java.io.Serial;
import java.util.ArrayList;
import java.util.List;

import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import net.ihe.gazelle.gen.common.ConstraintValidatorModule;

import org.w3c.dom.Document;
import org.w3c.dom.Node;


/**
 * Description of the class COCTMT530000UVSupply.
 *
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "COCT_MT530000UV.Supply", propOrder = {
	"realmCode",
	"typeId",
	"templateId",
	"id",
	"code",
	"text",
	"statusCode",
	"effectiveTime",
	"availabilityTime",
	"priorityCode",
	"confidentialityCode",
	"repeatNumber",
	"independentInd",
	"languageCode",
	"quantity",
	"expectedUseTime",
	"subject",
	"product",
	"recordTarget",
	"responsibleParty",
	"performer",
	"author",
	"dataEnterer",
	"informant",
	"verifier",
	"location",
	"definition",
	"conditions",
	"sourceOf1",
	"sourceOf2",
	"subjectOf",
	"targetOf",
	"classCode",
	"moodCode",
	"nullFlavor"
})
@XmlRootElement(name = "COCT_MT530000UV.Supply")
public class COCTMT530000UVSupply implements java.io.Serializable {
	
	/**
	 * 
	 */
	@Serial
    private static final long serialVersionUID = 1L;

	
	@XmlElement(name = "realmCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CS> realmCode;
	@XmlElement(name = "typeId", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.II typeId;
	@XmlElement(name = "templateId", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.II> templateId;
	@XmlElement(name = "id", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.II> id;
	@XmlElement(name = "code", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CD code;
	@XmlElement(name = "text", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.ED text;
	@XmlElement(name = "statusCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CS statusCode;
	@XmlElement(name = "effectiveTime", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.SXCMTS> effectiveTime;
	@XmlElement(name = "availabilityTime", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.TS availabilityTime;
	@XmlElement(name = "priorityCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> priorityCode;
	@XmlElement(name = "confidentialityCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> confidentialityCode;
	@XmlElement(name = "repeatNumber", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.IVLINT repeatNumber;
	@XmlElement(name = "independentInd", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.BL independentInd;
	@XmlElement(name = "languageCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE languageCode;
	@XmlElement(name = "quantity", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.PQ quantity;
	@XmlElement(name = "expectedUseTime", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.IVLTS expectedUseTime;
	@XmlElement(name = "subject", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject2> subject;
	@XmlElement(name = "product", required = true, namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVProduct1> product;
	@XmlElement(name = "recordTarget", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVRecordTarget recordTarget;
	@XmlElement(name = "responsibleParty", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVResponsibleParty2> responsibleParty;
	@XmlElement(name = "performer", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVPerformer> performer;
	@XmlElement(name = "author", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVAuthor> author;
	@XmlElement(name = "dataEnterer", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVDataEnterer dataEnterer;
	@XmlElement(name = "informant", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVInformant> informant;
	@XmlElement(name = "verifier", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVVerifier> verifier;
	@XmlElement(name = "location", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVLocation> location;
	@XmlElement(name = "definition", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVDefinition definition;
	@XmlElement(name = "conditions", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVConditions> conditions;
	@XmlElement(name = "sourceOf1", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf1> sourceOf1;
	@XmlElement(name = "sourceOf2", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf3> sourceOf2;
	@XmlElement(name = "subjectOf", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject1 subjectOf;
	@XmlElement(name = "targetOf", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf2> targetOf;
	@XmlAttribute(name = "classCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.ActClassSupply classCode;
	@XmlAttribute(name = "moodCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.XClinicalStatementSupplyMood moodCode;
	@XmlAttribute(name = "nullFlavor")
	public net.ihe.gazelle.hl7v3.voc.NullFlavor nullFlavor;
	
	/**
	 * An attribute containing marshalled element node
	 */
	@XmlTransient
	private org.w3c.dom.Node _xmlNodePresentation;
	
	
	/**
	 * Return realmCode.
	 * @return realmCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CS> getRealmCode() {
		if (realmCode == null) {
	        realmCode = new ArrayList<>();
	    }
	    return realmCode;
	}
	
	/**
	 * Set a value to attribute realmCode.
     */
	public void setRealmCode(List<net.ihe.gazelle.hl7v3.datatypes.CS> realmCode) {
	    this.realmCode = realmCode;
	}
	
	
	
	/**
	 * Add a realmCode to the realmCode collection.
	 * @param realmCode_elt Element to add.
	 */
	public void addRealmCode(net.ihe.gazelle.hl7v3.datatypes.CS realmCode_elt) {
	    this.realmCode.add(realmCode_elt);
	}
	
	/**
	 * Remove a realmCode to the realmCode collection.
	 * @param realmCode_elt Element to remove
	 */
	public void removeRealmCode(net.ihe.gazelle.hl7v3.datatypes.CS realmCode_elt) {
	    this.realmCode.remove(realmCode_elt);
	}
	
	/**
	 * Return typeId.
	 * @return typeId
	 */
	public net.ihe.gazelle.hl7v3.datatypes.II getTypeId() {
	    return typeId;
	}
	
	/**
	 * Set a value to attribute typeId.
     */
	public void setTypeId(net.ihe.gazelle.hl7v3.datatypes.II typeId) {
	    this.typeId = typeId;
	}
	
	
	
	
	/**
	 * Return templateId.
	 * @return templateId
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.II> getTemplateId() {
		if (templateId == null) {
	        templateId = new ArrayList<>();
	    }
	    return templateId;
	}
	
	/**
	 * Set a value to attribute templateId.
     */
	public void setTemplateId(List<net.ihe.gazelle.hl7v3.datatypes.II> templateId) {
	    this.templateId = templateId;
	}
	
	
	
	/**
	 * Add a templateId to the templateId collection.
	 * @param templateId_elt Element to add.
	 */
	public void addTemplateId(net.ihe.gazelle.hl7v3.datatypes.II templateId_elt) {
	    this.templateId.add(templateId_elt);
	}
	
	/**
	 * Remove a templateId to the templateId collection.
	 * @param templateId_elt Element to remove
	 */
	public void removeTemplateId(net.ihe.gazelle.hl7v3.datatypes.II templateId_elt) {
	    this.templateId.remove(templateId_elt);
	}
	
	/**
	 * Return id.
	 * @return id
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.II> getId() {
		if (id == null) {
	        id = new ArrayList<>();
	    }
	    return id;
	}
	
	/**
	 * Set a value to attribute id.
     */
	public void setId(List<net.ihe.gazelle.hl7v3.datatypes.II> id) {
	    this.id = id;
	}
	
	
	
	/**
	 * Add a id to the id collection.
	 * @param id_elt Element to add.
	 */
	public void addId(net.ihe.gazelle.hl7v3.datatypes.II id_elt) {
	    this.id.add(id_elt);
	}
	
	/**
	 * Remove a id to the id collection.
	 * @param id_elt Element to remove
	 */
	public void removeId(net.ihe.gazelle.hl7v3.datatypes.II id_elt) {
	    this.id.remove(id_elt);
	}
	
	/**
	 * Return code.
	 * @return code
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CD getCode() {
	    return code;
	}
	
	/**
	 * Set a value to attribute code.
     */
	public void setCode(net.ihe.gazelle.hl7v3.datatypes.CD code) {
	    this.code = code;
	}
	
	
	
	
	/**
	 * Return text.
	 * @return text
	 */
	public net.ihe.gazelle.hl7v3.datatypes.ED getText() {
	    return text;
	}
	
	/**
	 * Set a value to attribute text.
     */
	public void setText(net.ihe.gazelle.hl7v3.datatypes.ED text) {
	    this.text = text;
	}
	
	
	
	
	/**
	 * Return statusCode.
	 * @return statusCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CS getStatusCode() {
	    return statusCode;
	}
	
	/**
	 * Set a value to attribute statusCode.
     */
	public void setStatusCode(net.ihe.gazelle.hl7v3.datatypes.CS statusCode) {
	    this.statusCode = statusCode;
	}
	
	
	
	
	/**
	 * Return effectiveTime.
	 * @return effectiveTime
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.SXCMTS> getEffectiveTime() {
		if (effectiveTime == null) {
	        effectiveTime = new ArrayList<>();
	    }
	    return effectiveTime;
	}
	
	/**
	 * Set a value to attribute effectiveTime.
     */
	public void setEffectiveTime(List<net.ihe.gazelle.hl7v3.datatypes.SXCMTS> effectiveTime) {
	    this.effectiveTime = effectiveTime;
	}
	
	
	
	/**
	 * Add a effectiveTime to the effectiveTime collection.
	 * @param effectiveTime_elt Element to add.
	 */
	public void addEffectiveTime(net.ihe.gazelle.hl7v3.datatypes.SXCMTS effectiveTime_elt) {
	    this.effectiveTime.add(effectiveTime_elt);
	}
	
	/**
	 * Remove a effectiveTime to the effectiveTime collection.
	 * @param effectiveTime_elt Element to remove
	 */
	public void removeEffectiveTime(net.ihe.gazelle.hl7v3.datatypes.SXCMTS effectiveTime_elt) {
	    this.effectiveTime.remove(effectiveTime_elt);
	}
	
	/**
	 * Return availabilityTime.
	 * @return availabilityTime
	 */
	public net.ihe.gazelle.hl7v3.datatypes.TS getAvailabilityTime() {
	    return availabilityTime;
	}
	
	/**
	 * Set a value to attribute availabilityTime.
     */
	public void setAvailabilityTime(net.ihe.gazelle.hl7v3.datatypes.TS availabilityTime) {
	    this.availabilityTime = availabilityTime;
	}
	
	
	
	
	/**
	 * Return priorityCode.
	 * @return priorityCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> getPriorityCode() {
		if (priorityCode == null) {
	        priorityCode = new ArrayList<>();
	    }
	    return priorityCode;
	}
	
	/**
	 * Set a value to attribute priorityCode.
     */
	public void setPriorityCode(List<net.ihe.gazelle.hl7v3.datatypes.CE> priorityCode) {
	    this.priorityCode = priorityCode;
	}
	
	
	
	/**
	 * Add a priorityCode to the priorityCode collection.
	 * @param priorityCode_elt Element to add.
	 */
	public void addPriorityCode(net.ihe.gazelle.hl7v3.datatypes.CE priorityCode_elt) {
	    this.priorityCode.add(priorityCode_elt);
	}
	
	/**
	 * Remove a priorityCode to the priorityCode collection.
	 * @param priorityCode_elt Element to remove
	 */
	public void removePriorityCode(net.ihe.gazelle.hl7v3.datatypes.CE priorityCode_elt) {
	    this.priorityCode.remove(priorityCode_elt);
	}
	
	/**
	 * Return confidentialityCode.
	 * @return confidentialityCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> getConfidentialityCode() {
		if (confidentialityCode == null) {
	        confidentialityCode = new ArrayList<>();
	    }
	    return confidentialityCode;
	}
	
	/**
	 * Set a value to attribute confidentialityCode.
     */
	public void setConfidentialityCode(List<net.ihe.gazelle.hl7v3.datatypes.CE> confidentialityCode) {
	    this.confidentialityCode = confidentialityCode;
	}
	
	
	
	/**
	 * Add a confidentialityCode to the confidentialityCode collection.
	 * @param confidentialityCode_elt Element to add.
	 */
	public void addConfidentialityCode(net.ihe.gazelle.hl7v3.datatypes.CE confidentialityCode_elt) {
	    this.confidentialityCode.add(confidentialityCode_elt);
	}
	
	/**
	 * Remove a confidentialityCode to the confidentialityCode collection.
	 * @param confidentialityCode_elt Element to remove
	 */
	public void removeConfidentialityCode(net.ihe.gazelle.hl7v3.datatypes.CE confidentialityCode_elt) {
	    this.confidentialityCode.remove(confidentialityCode_elt);
	}
	
	/**
	 * Return repeatNumber.
	 * @return repeatNumber
	 */
	public net.ihe.gazelle.hl7v3.datatypes.IVLINT getRepeatNumber() {
	    return repeatNumber;
	}
	
	/**
	 * Set a value to attribute repeatNumber.
     */
	public void setRepeatNumber(net.ihe.gazelle.hl7v3.datatypes.IVLINT repeatNumber) {
	    this.repeatNumber = repeatNumber;
	}
	
	
	
	
	/**
	 * Return independentInd.
	 * @return independentInd
	 */
	public net.ihe.gazelle.hl7v3.datatypes.BL getIndependentInd() {
	    return independentInd;
	}
	
	/**
	 * Set a value to attribute independentInd.
     */
	public void setIndependentInd(net.ihe.gazelle.hl7v3.datatypes.BL independentInd) {
	    this.independentInd = independentInd;
	}
	
	
	
	
	/**
	 * Return languageCode.
	 * @return languageCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getLanguageCode() {
	    return languageCode;
	}
	
	/**
	 * Set a value to attribute languageCode.
     */
	public void setLanguageCode(net.ihe.gazelle.hl7v3.datatypes.CE languageCode) {
	    this.languageCode = languageCode;
	}
	
	
	
	
	/**
	 * Return quantity.
	 * @return quantity
	 */
	public net.ihe.gazelle.hl7v3.datatypes.PQ getQuantity() {
	    return quantity;
	}
	
	/**
	 * Set a value to attribute quantity.
     */
	public void setQuantity(net.ihe.gazelle.hl7v3.datatypes.PQ quantity) {
	    this.quantity = quantity;
	}
	
	
	
	
	/**
	 * Return expectedUseTime.
	 * @return expectedUseTime
	 */
	public net.ihe.gazelle.hl7v3.datatypes.IVLTS getExpectedUseTime() {
	    return expectedUseTime;
	}
	
	/**
	 * Set a value to attribute expectedUseTime.
     */
	public void setExpectedUseTime(net.ihe.gazelle.hl7v3.datatypes.IVLTS expectedUseTime) {
	    this.expectedUseTime = expectedUseTime;
	}
	
	
	
	
	/**
	 * Return subject.
	 * @return subject
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject2> getSubject() {
		if (subject == null) {
	        subject = new ArrayList<>();
	    }
	    return subject;
	}
	
	/**
	 * Set a value to attribute subject.
     */
	public void setSubject(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject2> subject) {
	    this.subject = subject;
	}
	
	
	
	/**
	 * Add a subject to the subject collection.
	 * @param subject_elt Element to add.
	 */
	public void addSubject(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject2 subject_elt) {
	    this.subject.add(subject_elt);
	}
	
	/**
	 * Remove a subject to the subject collection.
	 * @param subject_elt Element to remove
	 */
	public void removeSubject(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject2 subject_elt) {
	    this.subject.remove(subject_elt);
	}
	
	/**
	 * Return product.
	 * @return product
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVProduct1> getProduct() {
		if (product == null) {
	        product = new ArrayList<>();
	    }
	    return product;
	}
	
	/**
	 * Set a value to attribute product.
     */
	public void setProduct(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVProduct1> product) {
	    this.product = product;
	}
	
	
	
	/**
	 * Add a product to the product collection.
	 * @param product_elt Element to add.
	 */
	public void addProduct(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVProduct1 product_elt) {
	    this.product.add(product_elt);
	}
	
	/**
	 * Remove a product to the product collection.
	 * @param product_elt Element to remove
	 */
	public void removeProduct(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVProduct1 product_elt) {
	    this.product.remove(product_elt);
	}
	
	/**
	 * Return recordTarget.
	 * @return recordTarget
	 */
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVRecordTarget getRecordTarget() {
	    return recordTarget;
	}
	
	/**
	 * Set a value to attribute recordTarget.
     */
	public void setRecordTarget(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVRecordTarget recordTarget) {
	    this.recordTarget = recordTarget;
	}
	
	
	
	
	/**
	 * Return responsibleParty.
	 * @return responsibleParty
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVResponsibleParty2> getResponsibleParty() {
		if (responsibleParty == null) {
	        responsibleParty = new ArrayList<>();
	    }
	    return responsibleParty;
	}
	
	/**
	 * Set a value to attribute responsibleParty.
     */
	public void setResponsibleParty(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVResponsibleParty2> responsibleParty) {
	    this.responsibleParty = responsibleParty;
	}
	
	
	
	/**
	 * Add a responsibleParty to the responsibleParty collection.
	 * @param responsibleParty_elt Element to add.
	 */
	public void addResponsibleParty(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVResponsibleParty2 responsibleParty_elt) {
	    this.responsibleParty.add(responsibleParty_elt);
	}
	
	/**
	 * Remove a responsibleParty to the responsibleParty collection.
	 * @param responsibleParty_elt Element to remove
	 */
	public void removeResponsibleParty(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVResponsibleParty2 responsibleParty_elt) {
	    this.responsibleParty.remove(responsibleParty_elt);
	}
	
	/**
	 * Return performer.
	 * @return performer
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVPerformer> getPerformer() {
		if (performer == null) {
	        performer = new ArrayList<>();
	    }
	    return performer;
	}
	
	/**
	 * Set a value to attribute performer.
     */
	public void setPerformer(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVPerformer> performer) {
	    this.performer = performer;
	}
	
	
	
	/**
	 * Add a performer to the performer collection.
	 * @param performer_elt Element to add.
	 */
	public void addPerformer(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVPerformer performer_elt) {
	    this.performer.add(performer_elt);
	}
	
	/**
	 * Remove a performer to the performer collection.
	 * @param performer_elt Element to remove
	 */
	public void removePerformer(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVPerformer performer_elt) {
	    this.performer.remove(performer_elt);
	}
	
	/**
	 * Return author.
	 * @return author
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVAuthor> getAuthor() {
		if (author == null) {
	        author = new ArrayList<>();
	    }
	    return author;
	}
	
	/**
	 * Set a value to attribute author.
     */
	public void setAuthor(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVAuthor> author) {
	    this.author = author;
	}
	
	
	
	/**
	 * Add a author to the author collection.
	 * @param author_elt Element to add.
	 */
	public void addAuthor(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVAuthor author_elt) {
	    this.author.add(author_elt);
	}
	
	/**
	 * Remove a author to the author collection.
	 * @param author_elt Element to remove
	 */
	public void removeAuthor(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVAuthor author_elt) {
	    this.author.remove(author_elt);
	}
	
	/**
	 * Return dataEnterer.
	 * @return dataEnterer
	 */
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVDataEnterer getDataEnterer() {
	    return dataEnterer;
	}
	
	/**
	 * Set a value to attribute dataEnterer.
     */
	public void setDataEnterer(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVDataEnterer dataEnterer) {
	    this.dataEnterer = dataEnterer;
	}
	
	
	
	
	/**
	 * Return informant.
	 * @return informant
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVInformant> getInformant() {
		if (informant == null) {
	        informant = new ArrayList<>();
	    }
	    return informant;
	}
	
	/**
	 * Set a value to attribute informant.
     */
	public void setInformant(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVInformant> informant) {
	    this.informant = informant;
	}
	
	
	
	/**
	 * Add a informant to the informant collection.
	 * @param informant_elt Element to add.
	 */
	public void addInformant(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVInformant informant_elt) {
	    this.informant.add(informant_elt);
	}
	
	/**
	 * Remove a informant to the informant collection.
	 * @param informant_elt Element to remove
	 */
	public void removeInformant(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVInformant informant_elt) {
	    this.informant.remove(informant_elt);
	}
	
	/**
	 * Return verifier.
	 * @return verifier
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVVerifier> getVerifier() {
		if (verifier == null) {
	        verifier = new ArrayList<>();
	    }
	    return verifier;
	}
	
	/**
	 * Set a value to attribute verifier.
     */
	public void setVerifier(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVVerifier> verifier) {
	    this.verifier = verifier;
	}
	
	
	
	/**
	 * Add a verifier to the verifier collection.
	 * @param verifier_elt Element to add.
	 */
	public void addVerifier(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVVerifier verifier_elt) {
	    this.verifier.add(verifier_elt);
	}
	
	/**
	 * Remove a verifier to the verifier collection.
	 * @param verifier_elt Element to remove
	 */
	public void removeVerifier(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVVerifier verifier_elt) {
	    this.verifier.remove(verifier_elt);
	}
	
	/**
	 * Return location.
	 * @return location
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVLocation> getLocation() {
		if (location == null) {
	        location = new ArrayList<>();
	    }
	    return location;
	}
	
	/**
	 * Set a value to attribute location.
     */
	public void setLocation(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVLocation> location) {
	    this.location = location;
	}
	
	
	
	/**
	 * Add a location to the location collection.
	 * @param location_elt Element to add.
	 */
	public void addLocation(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVLocation location_elt) {
	    this.location.add(location_elt);
	}
	
	/**
	 * Remove a location to the location collection.
	 * @param location_elt Element to remove
	 */
	public void removeLocation(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVLocation location_elt) {
	    this.location.remove(location_elt);
	}
	
	/**
	 * Return definition.
	 * @return definition
	 */
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVDefinition getDefinition() {
	    return definition;
	}
	
	/**
	 * Set a value to attribute definition.
     */
	public void setDefinition(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVDefinition definition) {
	    this.definition = definition;
	}
	
	
	
	
	/**
	 * Return conditions.
	 * @return conditions
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVConditions> getConditions() {
		if (conditions == null) {
	        conditions = new ArrayList<>();
	    }
	    return conditions;
	}
	
	/**
	 * Set a value to attribute conditions.
     */
	public void setConditions(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVConditions> conditions) {
	    this.conditions = conditions;
	}
	
	
	
	/**
	 * Add a conditions to the conditions collection.
	 * @param conditions_elt Element to add.
	 */
	public void addConditions(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVConditions conditions_elt) {
	    this.conditions.add(conditions_elt);
	}
	
	/**
	 * Remove a conditions to the conditions collection.
	 * @param conditions_elt Element to remove
	 */
	public void removeConditions(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVConditions conditions_elt) {
	    this.conditions.remove(conditions_elt);
	}
	
	/**
	 * Return sourceOf1.
	 * @return sourceOf1
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf1> getSourceOf1() {
		if (sourceOf1 == null) {
	        sourceOf1 = new ArrayList<>();
	    }
	    return sourceOf1;
	}
	
	/**
	 * Set a value to attribute sourceOf1.
     */
	public void setSourceOf1(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf1> sourceOf1) {
	    this.sourceOf1 = sourceOf1;
	}
	
	
	
	/**
	 * Add a sourceOf1 to the sourceOf1 collection.
	 * @param sourceOf1_elt Element to add.
	 */
	public void addSourceOf1(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf1 sourceOf1_elt) {
	    this.sourceOf1.add(sourceOf1_elt);
	}
	
	/**
	 * Remove a sourceOf1 to the sourceOf1 collection.
	 * @param sourceOf1_elt Element to remove
	 */
	public void removeSourceOf1(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf1 sourceOf1_elt) {
	    this.sourceOf1.remove(sourceOf1_elt);
	}
	
	/**
	 * Return sourceOf2.
	 * @return sourceOf2
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf3> getSourceOf2() {
		if (sourceOf2 == null) {
	        sourceOf2 = new ArrayList<>();
	    }
	    return sourceOf2;
	}
	
	/**
	 * Set a value to attribute sourceOf2.
     */
	public void setSourceOf2(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf3> sourceOf2) {
	    this.sourceOf2 = sourceOf2;
	}
	
	
	
	/**
	 * Add a sourceOf2 to the sourceOf2 collection.
	 * @param sourceOf2_elt Element to add.
	 */
	public void addSourceOf2(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf3 sourceOf2_elt) {
	    this.sourceOf2.add(sourceOf2_elt);
	}
	
	/**
	 * Remove a sourceOf2 to the sourceOf2 collection.
	 * @param sourceOf2_elt Element to remove
	 */
	public void removeSourceOf2(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf3 sourceOf2_elt) {
	    this.sourceOf2.remove(sourceOf2_elt);
	}
	
	/**
	 * Return subjectOf.
	 * @return subjectOf
	 */
	public net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject1 getSubjectOf() {
	    return subjectOf;
	}
	
	/**
	 * Set a value to attribute subjectOf.
     */
	public void setSubjectOf(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSubject1 subjectOf) {
	    this.subjectOf = subjectOf;
	}
	
	
	
	
	/**
	 * Return targetOf.
	 * @return targetOf
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf2> getTargetOf() {
		if (targetOf == null) {
	        targetOf = new ArrayList<>();
	    }
	    return targetOf;
	}
	
	/**
	 * Set a value to attribute targetOf.
     */
	public void setTargetOf(List<net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf2> targetOf) {
	    this.targetOf = targetOf;
	}
	
	
	
	/**
	 * Add a targetOf to the targetOf collection.
	 * @param targetOf_elt Element to add.
	 */
	public void addTargetOf(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf2 targetOf_elt) {
	    this.targetOf.add(targetOf_elt);
	}
	
	/**
	 * Remove a targetOf to the targetOf collection.
	 * @param targetOf_elt Element to remove
	 */
	public void removeTargetOf(net.ihe.gazelle.hl7v3.coctmt530000UV.COCTMT530000UVSourceOf2 targetOf_elt) {
	    this.targetOf.remove(targetOf_elt);
	}
	
	/**
	 * Return classCode.
	 * @return classCode
	 */
	public net.ihe.gazelle.hl7v3.voc.ActClassSupply getClassCode() {
	    return classCode;
	}
	
	/**
	 * Set a value to attribute classCode.
     */
	public void setClassCode(net.ihe.gazelle.hl7v3.voc.ActClassSupply classCode) {
	    this.classCode = classCode;
	}
	
	
	
	
	/**
	 * Return moodCode.
	 * @return moodCode
	 */
	public net.ihe.gazelle.hl7v3.voc.XClinicalStatementSupplyMood getMoodCode() {
	    return moodCode;
	}
	
	/**
	 * Set a value to attribute moodCode.
     */
	public void setMoodCode(net.ihe.gazelle.hl7v3.voc.XClinicalStatementSupplyMood moodCode) {
	    this.moodCode = moodCode;
	}
	
	
	
	
	/**
	 * Return nullFlavor.
	 * @return nullFlavor
	 */
	public net.ihe.gazelle.hl7v3.voc.NullFlavor getNullFlavor() {
	    return nullFlavor;
	}
	
	/**
	 * Set a value to attribute nullFlavor.
     */
	public void setNullFlavor(net.ihe.gazelle.hl7v3.voc.NullFlavor nullFlavor) {
	    this.nullFlavor = nullFlavor;
	}
	
	
	
	
	
	public Node get_xmlNodePresentation() {
		if (_xmlNodePresentation == null){
				JAXBContext jc;
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				dbf.setNamespaceAware(true);
				DocumentBuilder db = null;
				Document doc = null;
				try {
					db = dbf.newDocumentBuilder();
					doc = db.newDocument();
				} catch (ParserConfigurationException ignored) {}
				try {
					jc = JAXBContext.newInstance("net.ihe.gazelle.hl7v3.coctmt530000UV");
					Marshaller m = jc.createMarshaller();
					m.marshal(this, doc);
					_xmlNodePresentation = doc.getElementsByTagNameNS("urn:hl7-org:v3", "COCT_MT530000UV.Supply").item(0);
				} catch (JAXBException e) {
					try{
						db = dbf.newDocumentBuilder();
						_xmlNodePresentation = db.newDocument();
					}
					catch(Exception ignored){}
				}
			}
			return _xmlNodePresentation;
	}
	
	public void set_xmlNodePresentation(Node _xmlNodePresentation) {
		this._xmlNodePresentation = _xmlNodePresentation;
	}
	
	
	

	
	/**
     * validate by a module of validation
     * 
     */
   public static void validateByModule(COCTMT530000UVSupply cOCTMT530000UVSupply, String _location, ConstraintValidatorModule cvm, List<net.ihe.gazelle.validation.Notification> diagnostic){
   		if (cOCTMT530000UVSupply != null){
   			cvm.validate(cOCTMT530000UVSupply, _location, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CS realmCode: cOCTMT530000UVSupply.getRealmCode()){
					net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(realmCode, _location + "/realmCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(cOCTMT530000UVSupply.getTypeId(), _location + "/typeId", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II templateId: cOCTMT530000UVSupply.getTemplateId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(templateId, _location + "/templateId[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II id: cOCTMT530000UVSupply.getId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(id, _location + "/id[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.CD.validateByModule(cOCTMT530000UVSupply.getCode(), _location + "/code", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.ED.validateByModule(cOCTMT530000UVSupply.getText(), _location + "/text", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(cOCTMT530000UVSupply.getStatusCode(), _location + "/statusCode", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.SXCMTS effectiveTime: cOCTMT530000UVSupply.getEffectiveTime()){
					net.ihe.gazelle.hl7v3.datatypes.SXCMTS.validateByModule(effectiveTime, _location + "/effectiveTime[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.TS.validateByModule(cOCTMT530000UVSupply.getAvailabilityTime(), _location + "/availabilityTime", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CE priorityCode: cOCTMT530000UVSupply.getPriorityCode()){
					net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(priorityCode, _location + "/priorityCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
