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

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 COCTMT510000UV06PolicyOrProgram.
 *
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "COCT_MT510000UV06.PolicyOrProgram", propOrder = {
	"realmCode",
	"typeId",
	"templateId",
	"id",
	"code",
	"statusCode",
	"effectiveTime",
	"confidentialityCode",
	"coveredParty",
	"holder",
	"responsibleParty",
	"primaryPerformer",
	"author",
	"definition",
	"replacementOf",
	"limitation1",
	"limitation2",
	"coverageOf",
	"classCode",
	"moodCode",
	"nullFlavor"
})
@XmlRootElement(name = "COCT_MT510000UV06.PolicyOrProgram")
public class COCTMT510000UV06PolicyOrProgram 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", required = true, namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CD code;
	@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 net.ihe.gazelle.hl7v3.datatypes.IVLTS effectiveTime;
	@XmlElement(name = "confidentialityCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> confidentialityCode;
	@XmlElement(name = "coveredParty", required = true, namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06CoveredParty2 coveredParty;
	@XmlElement(name = "holder", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Holder holder;
	@XmlElement(name = "responsibleParty", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ResponsibleParty2 responsibleParty;
	@XmlElement(name = "primaryPerformer", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer> primaryPerformer;
	@XmlElement(name = "author", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Author2> author;
	@XmlElement(name = "definition", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Definition3 definition;
	@XmlElement(name = "replacementOf", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ReplacementOf replacementOf;
	@XmlElement(name = "limitation1", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3> limitation1;
	@XmlElement(name = "limitation2", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation> limitation2;
	@XmlElement(name = "coverageOf", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2> coverageOf;
	@XmlAttribute(name = "classCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.ActClass classCode;
	@XmlAttribute(name = "moodCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.ActMood 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 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 net.ihe.gazelle.hl7v3.datatypes.IVLTS getEffectiveTime() {
	    return effectiveTime;
	}
	
	/**
	 * Set a value to attribute effectiveTime.
     */
	public void setEffectiveTime(net.ihe.gazelle.hl7v3.datatypes.IVLTS effectiveTime) {
	    this.effectiveTime = effectiveTime;
	}
	
	
	
	
	/**
	 * 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 coveredParty.
	 * @return coveredParty
	 */
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06CoveredParty2 getCoveredParty() {
	    return coveredParty;
	}
	
	/**
	 * Set a value to attribute coveredParty.
     */
	public void setCoveredParty(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06CoveredParty2 coveredParty) {
	    this.coveredParty = coveredParty;
	}
	
	
	
	
	/**
	 * Return holder.
	 * @return holder
	 */
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Holder getHolder() {
	    return holder;
	}
	
	/**
	 * Set a value to attribute holder.
     */
	public void setHolder(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Holder holder) {
	    this.holder = holder;
	}
	
	
	
	
	/**
	 * Return responsibleParty.
	 * @return responsibleParty
	 */
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ResponsibleParty2 getResponsibleParty() {
	    return responsibleParty;
	}
	
	/**
	 * Set a value to attribute responsibleParty.
     */
	public void setResponsibleParty(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ResponsibleParty2 responsibleParty) {
	    this.responsibleParty = responsibleParty;
	}
	
	
	
	
	/**
	 * Return primaryPerformer.
	 * @return primaryPerformer
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer> getPrimaryPerformer() {
		if (primaryPerformer == null) {
	        primaryPerformer = new ArrayList<>();
	    }
	    return primaryPerformer;
	}
	
	/**
	 * Set a value to attribute primaryPerformer.
     */
	public void setPrimaryPerformer(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer> primaryPerformer) {
	    this.primaryPerformer = primaryPerformer;
	}
	
	
	
	/**
	 * Add a primaryPerformer to the primaryPerformer collection.
	 * @param primaryPerformer_elt Element to add.
	 */
	public void addPrimaryPerformer(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer primaryPerformer_elt) {
	    this.primaryPerformer.add(primaryPerformer_elt);
	}
	
	/**
	 * Remove a primaryPerformer to the primaryPerformer collection.
	 * @param primaryPerformer_elt Element to remove
	 */
	public void removePrimaryPerformer(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer primaryPerformer_elt) {
	    this.primaryPerformer.remove(primaryPerformer_elt);
	}
	
	/**
	 * Return author.
	 * @return author
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Author2> getAuthor() {
		if (author == null) {
	        author = new ArrayList<>();
	    }
	    return author;
	}
	
	/**
	 * Set a value to attribute author.
     */
	public void setAuthor(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Author2> author) {
	    this.author = author;
	}
	
	
	
	/**
	 * Add a author to the author collection.
	 * @param author_elt Element to add.
	 */
	public void addAuthor(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Author2 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.coctmt510000UV06.COCTMT510000UV06Author2 author_elt) {
	    this.author.remove(author_elt);
	}
	
	/**
	 * Return definition.
	 * @return definition
	 */
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Definition3 getDefinition() {
	    return definition;
	}
	
	/**
	 * Set a value to attribute definition.
     */
	public void setDefinition(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Definition3 definition) {
	    this.definition = definition;
	}
	
	
	
	
	/**
	 * Return replacementOf.
	 * @return replacementOf
	 */
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ReplacementOf getReplacementOf() {
	    return replacementOf;
	}
	
	/**
	 * Set a value to attribute replacementOf.
     */
	public void setReplacementOf(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ReplacementOf replacementOf) {
	    this.replacementOf = replacementOf;
	}
	
	
	
	
	/**
	 * Return limitation1.
	 * @return limitation1
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3> getLimitation1() {
		if (limitation1 == null) {
	        limitation1 = new ArrayList<>();
	    }
	    return limitation1;
	}
	
	/**
	 * Set a value to attribute limitation1.
     */
	public void setLimitation1(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3> limitation1) {
	    this.limitation1 = limitation1;
	}
	
	
	
	/**
	 * Add a limitation1 to the limitation1 collection.
	 * @param limitation1_elt Element to add.
	 */
	public void addLimitation1(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3 limitation1_elt) {
	    this.limitation1.add(limitation1_elt);
	}
	
	/**
	 * Remove a limitation1 to the limitation1 collection.
	 * @param limitation1_elt Element to remove
	 */
	public void removeLimitation1(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3 limitation1_elt) {
	    this.limitation1.remove(limitation1_elt);
	}
	
	/**
	 * Return limitation2.
	 * @return limitation2
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation> getLimitation2() {
		if (limitation2 == null) {
	        limitation2 = new ArrayList<>();
	    }
	    return limitation2;
	}
	
	/**
	 * Set a value to attribute limitation2.
     */
	public void setLimitation2(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation> limitation2) {
	    this.limitation2 = limitation2;
	}
	
	
	
	/**
	 * Add a limitation2 to the limitation2 collection.
	 * @param limitation2_elt Element to add.
	 */
	public void addLimitation2(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation limitation2_elt) {
	    this.limitation2.add(limitation2_elt);
	}
	
	/**
	 * Remove a limitation2 to the limitation2 collection.
	 * @param limitation2_elt Element to remove
	 */
	public void removeLimitation2(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation limitation2_elt) {
	    this.limitation2.remove(limitation2_elt);
	}
	
	/**
	 * Return coverageOf.
	 * @return coverageOf
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2> getCoverageOf() {
		if (coverageOf == null) {
	        coverageOf = new ArrayList<>();
	    }
	    return coverageOf;
	}
	
	/**
	 * Set a value to attribute coverageOf.
     */
	public void setCoverageOf(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2> coverageOf) {
	    this.coverageOf = coverageOf;
	}
	
	
	
	/**
	 * Add a coverageOf to the coverageOf collection.
	 * @param coverageOf_elt Element to add.
	 */
	public void addCoverageOf(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2 coverageOf_elt) {
	    this.coverageOf.add(coverageOf_elt);
	}
	
	/**
	 * Remove a coverageOf to the coverageOf collection.
	 * @param coverageOf_elt Element to remove
	 */
	public void removeCoverageOf(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2 coverageOf_elt) {
	    this.coverageOf.remove(coverageOf_elt);
	}
	
	/**
	 * Return classCode.
	 * @return classCode
	 */
	public net.ihe.gazelle.hl7v3.voc.ActClass getClassCode() {
	    return classCode;
	}
	
	/**
	 * Set a value to attribute classCode.
     */
	public void setClassCode(net.ihe.gazelle.hl7v3.voc.ActClass classCode) {
	    this.classCode = classCode;
	}
	
	
	
	
	/**
	 * Return moodCode.
	 * @return moodCode
	 */
	public net.ihe.gazelle.hl7v3.voc.ActMood getMoodCode() {
	    return moodCode;
	}
	
	/**
	 * Set a value to attribute moodCode.
     */
	public void setMoodCode(net.ihe.gazelle.hl7v3.voc.ActMood 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.coctmt510000UV06");
					Marshaller m = jc.createMarshaller();
					m.marshal(this, doc);
					_xmlNodePresentation = doc.getElementsByTagNameNS("urn:hl7-org:v3", "COCT_MT510000UV06.PolicyOrProgram").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(COCTMT510000UV06PolicyOrProgram cOCTMT510000UV06PolicyOrProgram, String _location, ConstraintValidatorModule cvm, List<net.ihe.gazelle.validation.Notification> diagnostic){
   		if (cOCTMT510000UV06PolicyOrProgram != null){
   			cvm.validate(cOCTMT510000UV06PolicyOrProgram, _location, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CS realmCode: cOCTMT510000UV06PolicyOrProgram.getRealmCode()){
					net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(realmCode, _location + "/realmCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(cOCTMT510000UV06PolicyOrProgram.getTypeId(), _location + "/typeId", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II templateId: cOCTMT510000UV06PolicyOrProgram.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: cOCTMT510000UV06PolicyOrProgram.getId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(id, _location + "/id[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.CD.validateByModule(cOCTMT510000UV06PolicyOrProgram.getCode(), _location + "/code", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(cOCTMT510000UV06PolicyOrProgram.getStatusCode(), _location + "/statusCode", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.IVLTS.validateByModule(cOCTMT510000UV06PolicyOrProgram.getEffectiveTime(), _location + "/effectiveTime", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CE confidentialityCode: cOCTMT510000UV06PolicyOrProgram.getConfidentialityCode()){
					net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(confidentialityCode, _location + "/confidentialityCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06CoveredParty2.validateByModule(cOCTMT510000UV06PolicyOrProgram.getCoveredParty(), _location + "/coveredParty", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Holder.validateByModule(cOCTMT510000UV06PolicyOrProgram.getHolder(), _location + "/holder", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ResponsibleParty2.validateByModule(cOCTMT510000UV06PolicyOrProgram.getResponsibleParty(), _location + "/responsibleParty", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer primaryPerformer: cOCTMT510000UV06PolicyOrProgram.getPrimaryPerformer()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06PrimaryPerformer.validateByModule(primaryPerformer, _location + "/primaryPerformer[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Author2 author: cOCTMT510000UV06PolicyOrProgram.getAuthor()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Author2.validateByModule(author, _location + "/author[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Definition3.validateByModule(cOCTMT510000UV06PolicyOrProgram.getDefinition(), _location + "/definition", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06ReplacementOf.validateByModule(cOCTMT510000UV06PolicyOrProgram.getReplacementOf(), _location + "/replacementOf", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3 limitation1: cOCTMT510000UV06PolicyOrProgram.getLimitation1()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation3.validateByModule(limitation1, _location + "/limitation1[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation limitation2: cOCTMT510000UV06PolicyOrProgram.getLimitation2()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Limitation.validateByModule(limitation2, _location + "/limitation2[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2 coverageOf: cOCTMT510000UV06PolicyOrProgram.getCoverageOf()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Coverage2.validateByModule(coverageOf, _location + "/coverageOf[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
    	}
    }

}