/**
 * COCTMT510000UV06CoveredParty.java
 * <p>
 * File generated from the coctmt510000UV06::COCTMT510000UV06CoveredParty 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 COCTMT510000UV06CoveredParty.
 *
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "COCT_MT510000UV06.CoveredParty", propOrder = {
	"realmCode",
	"typeId",
	"templateId",
	"id",
	"code",
	"addr",
	"telecom",
	"effectiveTime",
	"coveredOrganization1",
	"coveredPerson",
	"coveredNonPersonLivingSubject",
	"underwritingOrganization",
	"subjectOf1",
	"subjectOf2",
	"part",
	"indirectAuthority1",
	"indirectAuthority2",
	"classCode",
	"nullFlavor"
})
@XmlRootElement(name = "COCT_MT510000UV06.CoveredParty")
public class COCTMT510000UV06CoveredParty 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", required = true, 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.CE code;
	@XmlElement(name = "addr", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.AD> addr;
	@XmlElement(name = "telecom", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.TEL> telecom;
	@XmlElement(name = "effectiveTime", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.IVLTS effectiveTime;
	@XmlElement(name = "coveredOrganization1", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization coveredOrganization1;
	@XmlElement(name = "coveredPerson", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVPerson coveredPerson;
	@XmlElement(name = "coveredNonPersonLivingSubject", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVNonPersonLivingSubject coveredNonPersonLivingSubject;
	@XmlElement(name = "underwritingOrganization", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization underwritingOrganization;
	@XmlElement(name = "subjectOf1", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject> subjectOf1;
	@XmlElement(name = "subjectOf2", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3> subjectOf2;
	@XmlElement(name = "part", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part> part;
	@XmlElement(name = "indirectAuthority1", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver> indirectAuthority1;
	@XmlElement(name = "indirectAuthority2", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver2 indirectAuthority2;
	@XmlAttribute(name = "classCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.RoleClassCoveredParty classCode;
	@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.CE getCode() {
	    return code;
	}
	
	/**
	 * Set a value to attribute code.
     */
	public void setCode(net.ihe.gazelle.hl7v3.datatypes.CE code) {
	    this.code = code;
	}
	
	
	
	
	/**
	 * Return addr.
	 * @return addr
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AD> getAddr() {
		if (addr == null) {
	        addr = new ArrayList<>();
	    }
	    return addr;
	}
	
	/**
	 * Set a value to attribute addr.
     */
	public void setAddr(List<net.ihe.gazelle.hl7v3.datatypes.AD> addr) {
	    this.addr = addr;
	}
	
	
	
	/**
	 * Add a addr to the addr collection.
	 * @param addr_elt Element to add.
	 */
	public void addAddr(net.ihe.gazelle.hl7v3.datatypes.AD addr_elt) {
	    this.addr.add(addr_elt);
	}
	
	/**
	 * Remove a addr to the addr collection.
	 * @param addr_elt Element to remove
	 */
	public void removeAddr(net.ihe.gazelle.hl7v3.datatypes.AD addr_elt) {
	    this.addr.remove(addr_elt);
	}
	
	/**
	 * Return telecom.
	 * @return telecom
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.TEL> getTelecom() {
		if (telecom == null) {
	        telecom = new ArrayList<>();
	    }
	    return telecom;
	}
	
	/**
	 * Set a value to attribute telecom.
     */
	public void setTelecom(List<net.ihe.gazelle.hl7v3.datatypes.TEL> telecom) {
	    this.telecom = telecom;
	}
	
	
	
	/**
	 * Add a telecom to the telecom collection.
	 * @param telecom_elt Element to add.
	 */
	public void addTelecom(net.ihe.gazelle.hl7v3.datatypes.TEL telecom_elt) {
	    this.telecom.add(telecom_elt);
	}
	
	/**
	 * Remove a telecom to the telecom collection.
	 * @param telecom_elt Element to remove
	 */
	public void removeTelecom(net.ihe.gazelle.hl7v3.datatypes.TEL telecom_elt) {
	    this.telecom.remove(telecom_elt);
	}
	
	/**
	 * 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 coveredOrganization1.
	 * @return coveredOrganization1
	 */
	public net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization getCoveredOrganization1() {
	    return coveredOrganization1;
	}
	
	/**
	 * Set a value to attribute coveredOrganization1.
     */
	public void setCoveredOrganization1(net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization coveredOrganization1) {
	    this.coveredOrganization1 = coveredOrganization1;
	}
	
	
	
	
	/**
	 * Return coveredPerson.
	 * @return coveredPerson
	 */
	public net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVPerson getCoveredPerson() {
	    return coveredPerson;
	}
	
	/**
	 * Set a value to attribute coveredPerson.
     */
	public void setCoveredPerson(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVPerson coveredPerson) {
	    this.coveredPerson = coveredPerson;
	}
	
	
	
	
	/**
	 * Return coveredNonPersonLivingSubject.
	 * @return coveredNonPersonLivingSubject
	 */
	public net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVNonPersonLivingSubject getCoveredNonPersonLivingSubject() {
	    return coveredNonPersonLivingSubject;
	}
	
	/**
	 * Set a value to attribute coveredNonPersonLivingSubject.
     */
	public void setCoveredNonPersonLivingSubject(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVNonPersonLivingSubject coveredNonPersonLivingSubject) {
	    this.coveredNonPersonLivingSubject = coveredNonPersonLivingSubject;
	}
	
	
	
	
	/**
	 * Return underwritingOrganization.
	 * @return underwritingOrganization
	 */
	public net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization getUnderwritingOrganization() {
	    return underwritingOrganization;
	}
	
	/**
	 * Set a value to attribute underwritingOrganization.
     */
	public void setUnderwritingOrganization(net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization underwritingOrganization) {
	    this.underwritingOrganization = underwritingOrganization;
	}
	
	
	
	
	/**
	 * Return subjectOf1.
	 * @return subjectOf1
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject> getSubjectOf1() {
		if (subjectOf1 == null) {
	        subjectOf1 = new ArrayList<>();
	    }
	    return subjectOf1;
	}
	
	/**
	 * Set a value to attribute subjectOf1.
     */
	public void setSubjectOf1(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject> subjectOf1) {
	    this.subjectOf1 = subjectOf1;
	}
	
	
	
	/**
	 * Add a subjectOf1 to the subjectOf1 collection.
	 * @param subjectOf1_elt Element to add.
	 */
	public void addSubjectOf1(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject subjectOf1_elt) {
	    this.subjectOf1.add(subjectOf1_elt);
	}
	
	/**
	 * Remove a subjectOf1 to the subjectOf1 collection.
	 * @param subjectOf1_elt Element to remove
	 */
	public void removeSubjectOf1(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject subjectOf1_elt) {
	    this.subjectOf1.remove(subjectOf1_elt);
	}
	
	/**
	 * Return subjectOf2.
	 * @return subjectOf2
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3> getSubjectOf2() {
		if (subjectOf2 == null) {
	        subjectOf2 = new ArrayList<>();
	    }
	    return subjectOf2;
	}
	
	/**
	 * Set a value to attribute subjectOf2.
     */
	public void setSubjectOf2(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3> subjectOf2) {
	    this.subjectOf2 = subjectOf2;
	}
	
	
	
	/**
	 * Add a subjectOf2 to the subjectOf2 collection.
	 * @param subjectOf2_elt Element to add.
	 */
	public void addSubjectOf2(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3 subjectOf2_elt) {
	    this.subjectOf2.add(subjectOf2_elt);
	}
	
	/**
	 * Remove a subjectOf2 to the subjectOf2 collection.
	 * @param subjectOf2_elt Element to remove
	 */
	public void removeSubjectOf2(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3 subjectOf2_elt) {
	    this.subjectOf2.remove(subjectOf2_elt);
	}
	
	/**
	 * Return part.
	 * @return part
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part> getPart() {
		if (part == null) {
	        part = new ArrayList<>();
	    }
	    return part;
	}
	
	/**
	 * Set a value to attribute part.
     */
	public void setPart(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part> part) {
	    this.part = part;
	}
	
	
	
	/**
	 * Add a part to the part collection.
	 * @param part_elt Element to add.
	 */
	public void addPart(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part part_elt) {
	    this.part.add(part_elt);
	}
	
	/**
	 * Remove a part to the part collection.
	 * @param part_elt Element to remove
	 */
	public void removePart(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part part_elt) {
	    this.part.remove(part_elt);
	}
	
	/**
	 * Return indirectAuthority1.
	 * @return indirectAuthority1
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver> getIndirectAuthority1() {
		if (indirectAuthority1 == null) {
	        indirectAuthority1 = new ArrayList<>();
	    }
	    return indirectAuthority1;
	}
	
	/**
	 * Set a value to attribute indirectAuthority1.
     */
	public void setIndirectAuthority1(List<net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver> indirectAuthority1) {
	    this.indirectAuthority1 = indirectAuthority1;
	}
	
	
	
	/**
	 * Add a indirectAuthority1 to the indirectAuthority1 collection.
	 * @param indirectAuthority1_elt Element to add.
	 */
	public void addIndirectAuthority1(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver indirectAuthority1_elt) {
	    this.indirectAuthority1.add(indirectAuthority1_elt);
	}
	
	/**
	 * Remove a indirectAuthority1 to the indirectAuthority1 collection.
	 * @param indirectAuthority1_elt Element to remove
	 */
	public void removeIndirectAuthority1(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver indirectAuthority1_elt) {
	    this.indirectAuthority1.remove(indirectAuthority1_elt);
	}
	
	/**
	 * Return indirectAuthority2.
	 * @return indirectAuthority2
	 */
	public net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver2 getIndirectAuthority2() {
	    return indirectAuthority2;
	}
	
	/**
	 * Set a value to attribute indirectAuthority2.
     */
	public void setIndirectAuthority2(net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver2 indirectAuthority2) {
	    this.indirectAuthority2 = indirectAuthority2;
	}
	
	
	
	
	/**
	 * Return classCode.
	 * @return classCode
	 */
	public net.ihe.gazelle.hl7v3.voc.RoleClassCoveredParty getClassCode() {
	    return classCode;
	}
	
	/**
	 * Set a value to attribute classCode.
     */
	public void setClassCode(net.ihe.gazelle.hl7v3.voc.RoleClassCoveredParty classCode) {
	    this.classCode = classCode;
	}
	
	
	
	
	/**
	 * 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.CoveredParty").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(COCTMT510000UV06CoveredParty cOCTMT510000UV06CoveredParty, String _location, ConstraintValidatorModule cvm, List<net.ihe.gazelle.validation.Notification> diagnostic){
   		if (cOCTMT510000UV06CoveredParty != null){
   			cvm.validate(cOCTMT510000UV06CoveredParty, _location, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CS realmCode: cOCTMT510000UV06CoveredParty.getRealmCode()){
					net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(realmCode, _location + "/realmCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(cOCTMT510000UV06CoveredParty.getTypeId(), _location + "/typeId", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II templateId: cOCTMT510000UV06CoveredParty.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: cOCTMT510000UV06CoveredParty.getId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(id, _location + "/id[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(cOCTMT510000UV06CoveredParty.getCode(), _location + "/code", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.AD addr: cOCTMT510000UV06CoveredParty.getAddr()){
					net.ihe.gazelle.hl7v3.datatypes.AD.validateByModule(addr, _location + "/addr[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.TEL telecom: cOCTMT510000UV06CoveredParty.getTelecom()){
					net.ihe.gazelle.hl7v3.datatypes.TEL.validateByModule(telecom, _location + "/telecom[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.IVLTS.validateByModule(cOCTMT510000UV06CoveredParty.getEffectiveTime(), _location + "/effectiveTime", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization.validateByModule(cOCTMT510000UV06CoveredParty.getCoveredOrganization1(), _location + "/coveredOrganization1", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVPerson.validateByModule(cOCTMT510000UV06CoveredParty.getCoveredPerson(), _location + "/coveredPerson", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVNonPersonLivingSubject.validateByModule(cOCTMT510000UV06CoveredParty.getCoveredNonPersonLivingSubject(), _location + "/coveredNonPersonLivingSubject", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt150000UV02.COCTMT150000UV02Organization.validateByModule(cOCTMT510000UV06CoveredParty.getUnderwritingOrganization(), _location + "/underwritingOrganization", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject subjectOf1: cOCTMT510000UV06CoveredParty.getSubjectOf1()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject.validateByModule(subjectOf1, _location + "/subjectOf1[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3 subjectOf2: cOCTMT510000UV06CoveredParty.getSubjectOf2()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Subject3.validateByModule(subjectOf2, _location + "/subjectOf2[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part part: cOCTMT510000UV06CoveredParty.getPart()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06Part.validateByModule(part, _location + "/part[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver indirectAuthority1: cOCTMT510000UV06CoveredParty.getIndirectAuthority1()){
					net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver.validateByModule(indirectAuthority1, _location + "/indirectAuthority1[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.coctmt510000UV06.COCTMT510000UV06IndirectAuthorithyOver2.validateByModule(cOCTMT510000UV06CoveredParty.getIndirectAuthority2(), _location + "/indirectAuthority2", cvm, diagnostic);
    	}
    }

}