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

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

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "COCT_MT030007UV.Person", propOrder = {
	"realmCode",
	"typeId",
	"templateId",
	"id",
	"name",
	"desc",
	"statusCode",
	"administrativeGenderCode",
	"birthTime",
	"deceasedInd",
	"deceasedTime",
	"multipleBirthInd",
	"multipleBirthOrderNumber",
	"organDonorInd",
	"maritalStatusCode",
	"educationLevelCode",
	"disabilityCode",
	"livingArrangementCode",
	"religiousAffiliationCode",
	"raceCode",
	"ethnicGroupCode",
	"asEmployment",
	"asCitizen",
	"asStudent",
	"asMember",
	"asOtherIDs",
	"contactParty",
	"guardian",
	"guarantor",
	"birthPlace",
	"languageCommunication",
	"classCode",
	"determinerCode",
	"nullFlavor"
})
@XmlRootElement(name = "COCT_MT030007UV.Person")
public class COCTMT030007UVPerson 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 = "name", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.EN> name;
	@XmlElement(name = "desc", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.ED desc;
	@XmlElement(name = "statusCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CS statusCode;
	@XmlElement(name = "administrativeGenderCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE administrativeGenderCode;
	@XmlElement(name = "birthTime", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.TS birthTime;
	@XmlElement(name = "deceasedInd", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.BL deceasedInd;
	@XmlElement(name = "deceasedTime", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.TS deceasedTime;
	@XmlElement(name = "multipleBirthInd", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.BL multipleBirthInd;
	@XmlElement(name = "multipleBirthOrderNumber", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.INT multipleBirthOrderNumber;
	@XmlElement(name = "organDonorInd", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.BL organDonorInd;
	@XmlElement(name = "maritalStatusCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE maritalStatusCode;
	@XmlElement(name = "educationLevelCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE educationLevelCode;
	@XmlElement(name = "disabilityCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> disabilityCode;
	@XmlElement(name = "livingArrangementCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE livingArrangementCode;
	@XmlElement(name = "religiousAffiliationCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE religiousAffiliationCode;
	@XmlElement(name = "raceCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> raceCode;
	@XmlElement(name = "ethnicGroupCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> ethnicGroupCode;
	@XmlElement(name = "asEmployment", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVEmployment> asEmployment;
	@XmlElement(name = "asCitizen", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVCitizen> asCitizen;
	@XmlElement(name = "asStudent", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVStudent> asStudent;
	@XmlElement(name = "asMember", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVMember> asMember;
	@XmlElement(name = "asOtherIDs", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVOtherIDs> asOtherIDs;
	@XmlElement(name = "contactParty", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVContactParty> contactParty;
	@XmlElement(name = "guardian", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuardian> guardian;
	@XmlElement(name = "guarantor", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuarantor> guarantor;
	@XmlElement(name = "birthPlace", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVBirthPlace birthPlace;
	@XmlElement(name = "languageCommunication", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVLanguageCommunication> languageCommunication;
	@XmlAttribute(name = "classCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.EntityClass classCode;
	@XmlAttribute(name = "determinerCode", required = true)
	public net.ihe.gazelle.hl7v3.voc.XDeterminerInstanceKind determinerCode;
	@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 name.
	 * @return name
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.EN> getName() {
		if (name == null) {
	        name = new ArrayList<>();
	    }
	    return name;
	}
	
	/**
	 * Set a value to attribute name.
     */
	public void setName(List<net.ihe.gazelle.hl7v3.datatypes.EN> name) {
	    this.name = name;
	}
	
	
	
	/**
	 * Add a name to the name collection.
	 * @param name_elt Element to add.
	 */
	public void addName(net.ihe.gazelle.hl7v3.datatypes.EN name_elt) {
	    this.getName().add(name_elt);
	}
	
	/**
	 * Remove a name to the name collection.
	 * @param name_elt Element to remove
	 */
	public void removeName(net.ihe.gazelle.hl7v3.datatypes.EN name_elt) {
	    this.getName().remove(name_elt);
	}
	
	/**
	 * Return desc.
	 * @return desc
	 */
	public net.ihe.gazelle.hl7v3.datatypes.ED getDesc() {
	    return desc;
	}
	
	/**
	 * Set a value to attribute desc.
     */
	public void setDesc(net.ihe.gazelle.hl7v3.datatypes.ED desc) {
	    this.desc = desc;
	}
	
	
	
	
	/**
	 * 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 administrativeGenderCode.
	 * @return administrativeGenderCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getAdministrativeGenderCode() {
	    return administrativeGenderCode;
	}
	
	/**
	 * Set a value to attribute administrativeGenderCode.
     */
	public void setAdministrativeGenderCode(net.ihe.gazelle.hl7v3.datatypes.CE administrativeGenderCode) {
	    this.administrativeGenderCode = administrativeGenderCode;
	}
	
	
	
	
	/**
	 * Return birthTime.
	 * @return birthTime
	 */
	public net.ihe.gazelle.hl7v3.datatypes.TS getBirthTime() {
	    return birthTime;
	}
	
	/**
	 * Set a value to attribute birthTime.
     */
	public void setBirthTime(net.ihe.gazelle.hl7v3.datatypes.TS birthTime) {
	    this.birthTime = birthTime;
	}
	
	
	
	
	/**
	 * Return deceasedInd.
	 * @return deceasedInd
	 */
	public net.ihe.gazelle.hl7v3.datatypes.BL getDeceasedInd() {
	    return deceasedInd;
	}
	
	/**
	 * Set a value to attribute deceasedInd.
     */
	public void setDeceasedInd(net.ihe.gazelle.hl7v3.datatypes.BL deceasedInd) {
	    this.deceasedInd = deceasedInd;
	}
	
	
	
	
	/**
	 * Return deceasedTime.
	 * @return deceasedTime
	 */
	public net.ihe.gazelle.hl7v3.datatypes.TS getDeceasedTime() {
	    return deceasedTime;
	}
	
	/**
	 * Set a value to attribute deceasedTime.
     */
	public void setDeceasedTime(net.ihe.gazelle.hl7v3.datatypes.TS deceasedTime) {
	    this.deceasedTime = deceasedTime;
	}
	
	
	
	
	/**
	 * Return multipleBirthInd.
	 * @return multipleBirthInd
	 */
	public net.ihe.gazelle.hl7v3.datatypes.BL getMultipleBirthInd() {
	    return multipleBirthInd;
	}
	
	/**
	 * Set a value to attribute multipleBirthInd.
     */
	public void setMultipleBirthInd(net.ihe.gazelle.hl7v3.datatypes.BL multipleBirthInd) {
	    this.multipleBirthInd = multipleBirthInd;
	}
	
	
	
	
	/**
	 * Return multipleBirthOrderNumber.
	 * @return multipleBirthOrderNumber
	 */
	public net.ihe.gazelle.hl7v3.datatypes.INT getMultipleBirthOrderNumber() {
	    return multipleBirthOrderNumber;
	}
	
	/**
	 * Set a value to attribute multipleBirthOrderNumber.
     */
	public void setMultipleBirthOrderNumber(net.ihe.gazelle.hl7v3.datatypes.INT multipleBirthOrderNumber) {
	    this.multipleBirthOrderNumber = multipleBirthOrderNumber;
	}
	
	
	
	
	/**
	 * Return organDonorInd.
	 * @return organDonorInd
	 */
	public net.ihe.gazelle.hl7v3.datatypes.BL getOrganDonorInd() {
	    return organDonorInd;
	}
	
	/**
	 * Set a value to attribute organDonorInd.
     */
	public void setOrganDonorInd(net.ihe.gazelle.hl7v3.datatypes.BL organDonorInd) {
	    this.organDonorInd = organDonorInd;
	}
	
	
	
	
	/**
	 * Return maritalStatusCode.
	 * @return maritalStatusCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getMaritalStatusCode() {
	    return maritalStatusCode;
	}
	
	/**
	 * Set a value to attribute maritalStatusCode.
     */
	public void setMaritalStatusCode(net.ihe.gazelle.hl7v3.datatypes.CE maritalStatusCode) {
	    this.maritalStatusCode = maritalStatusCode;
	}
	
	
	
	
	/**
	 * Return educationLevelCode.
	 * @return educationLevelCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getEducationLevelCode() {
	    return educationLevelCode;
	}
	
	/**
	 * Set a value to attribute educationLevelCode.
     */
	public void setEducationLevelCode(net.ihe.gazelle.hl7v3.datatypes.CE educationLevelCode) {
	    this.educationLevelCode = educationLevelCode;
	}
	
	
	
	
	/**
	 * Return disabilityCode.
	 * @return disabilityCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> getDisabilityCode() {
		if (disabilityCode == null) {
	        disabilityCode = new ArrayList<>();
	    }
	    return disabilityCode;
	}
	
	/**
	 * Set a value to attribute disabilityCode.
     */
	public void setDisabilityCode(List<net.ihe.gazelle.hl7v3.datatypes.CE> disabilityCode) {
	    this.disabilityCode = disabilityCode;
	}
	
	
	
	/**
	 * Add a disabilityCode to the disabilityCode collection.
	 * @param disabilityCode_elt Element to add.
	 */
	public void addDisabilityCode(net.ihe.gazelle.hl7v3.datatypes.CE disabilityCode_elt) {
	    this.disabilityCode.add(disabilityCode_elt);
	}
	
	/**
	 * Remove a disabilityCode to the disabilityCode collection.
	 * @param disabilityCode_elt Element to remove
	 */
	public void removeDisabilityCode(net.ihe.gazelle.hl7v3.datatypes.CE disabilityCode_elt) {
	    this.disabilityCode.remove(disabilityCode_elt);
	}
	
	/**
	 * Return livingArrangementCode.
	 * @return livingArrangementCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getLivingArrangementCode() {
	    return livingArrangementCode;
	}
	
	/**
	 * Set a value to attribute livingArrangementCode.
     */
	public void setLivingArrangementCode(net.ihe.gazelle.hl7v3.datatypes.CE livingArrangementCode) {
	    this.livingArrangementCode = livingArrangementCode;
	}
	
	
	
	
	/**
	 * Return religiousAffiliationCode.
	 * @return religiousAffiliationCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getReligiousAffiliationCode() {
	    return religiousAffiliationCode;
	}
	
	/**
	 * Set a value to attribute religiousAffiliationCode.
     */
	public void setReligiousAffiliationCode(net.ihe.gazelle.hl7v3.datatypes.CE religiousAffiliationCode) {
	    this.religiousAffiliationCode = religiousAffiliationCode;
	}
	
	
	
	
	/**
	 * Return raceCode.
	 * @return raceCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> getRaceCode() {
		if (raceCode == null) {
	        raceCode = new ArrayList<>();
	    }
	    return raceCode;
	}
	
	/**
	 * Set a value to attribute raceCode.
     */
	public void setRaceCode(List<net.ihe.gazelle.hl7v3.datatypes.CE> raceCode) {
	    this.raceCode = raceCode;
	}
	
	
	
	/**
	 * Add a raceCode to the raceCode collection.
	 * @param raceCode_elt Element to add.
	 */
	public void addRaceCode(net.ihe.gazelle.hl7v3.datatypes.CE raceCode_elt) {
	    this.raceCode.add(raceCode_elt);
	}
	
	/**
	 * Remove a raceCode to the raceCode collection.
	 * @param raceCode_elt Element to remove
	 */
	public void removeRaceCode(net.ihe.gazelle.hl7v3.datatypes.CE raceCode_elt) {
	    this.raceCode.remove(raceCode_elt);
	}
	
	/**
	 * Return ethnicGroupCode.
	 * @return ethnicGroupCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> getEthnicGroupCode() {
		if (ethnicGroupCode == null) {
	        ethnicGroupCode = new ArrayList<>();
	    }
	    return ethnicGroupCode;
	}
	
	/**
	 * Set a value to attribute ethnicGroupCode.
     */
	public void setEthnicGroupCode(List<net.ihe.gazelle.hl7v3.datatypes.CE> ethnicGroupCode) {
	    this.ethnicGroupCode = ethnicGroupCode;
	}
	
	
	
	/**
	 * Add a ethnicGroupCode to the ethnicGroupCode collection.
	 * @param ethnicGroupCode_elt Element to add.
	 */
	public void addEthnicGroupCode(net.ihe.gazelle.hl7v3.datatypes.CE ethnicGroupCode_elt) {
	    this.ethnicGroupCode.add(ethnicGroupCode_elt);
	}
	
	/**
	 * Remove a ethnicGroupCode to the ethnicGroupCode collection.
	 * @param ethnicGroupCode_elt Element to remove
	 */
	public void removeEthnicGroupCode(net.ihe.gazelle.hl7v3.datatypes.CE ethnicGroupCode_elt) {
	    this.ethnicGroupCode.remove(ethnicGroupCode_elt);
	}
	
	/**
	 * Return asEmployment.
	 * @return asEmployment
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVEmployment> getAsEmployment() {
		if (asEmployment == null) {
	        asEmployment = new ArrayList<>();
	    }
	    return asEmployment;
	}
	
	/**
	 * Set a value to attribute asEmployment.
     */
	public void setAsEmployment(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVEmployment> asEmployment) {
	    this.asEmployment = asEmployment;
	}
	
	
	
	/**
	 * Add a asEmployment to the asEmployment collection.
	 * @param asEmployment_elt Element to add.
	 */
	public void addAsEmployment(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVEmployment asEmployment_elt) {
	    this.asEmployment.add(asEmployment_elt);
	}
	
	/**
	 * Remove a asEmployment to the asEmployment collection.
	 * @param asEmployment_elt Element to remove
	 */
	public void removeAsEmployment(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVEmployment asEmployment_elt) {
	    this.asEmployment.remove(asEmployment_elt);
	}
	
	/**
	 * Return asCitizen.
	 * @return asCitizen
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVCitizen> getAsCitizen() {
		if (asCitizen == null) {
	        asCitizen = new ArrayList<>();
	    }
	    return asCitizen;
	}
	
	/**
	 * Set a value to attribute asCitizen.
     */
	public void setAsCitizen(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVCitizen> asCitizen) {
	    this.asCitizen = asCitizen;
	}
	
	
	
	/**
	 * Add a asCitizen to the asCitizen collection.
	 * @param asCitizen_elt Element to add.
	 */
	public void addAsCitizen(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVCitizen asCitizen_elt) {
	    this.asCitizen.add(asCitizen_elt);
	}
	
	/**
	 * Remove a asCitizen to the asCitizen collection.
	 * @param asCitizen_elt Element to remove
	 */
	public void removeAsCitizen(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVCitizen asCitizen_elt) {
	    this.asCitizen.remove(asCitizen_elt);
	}
	
	/**
	 * Return asStudent.
	 * @return asStudent
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVStudent> getAsStudent() {
		if (asStudent == null) {
	        asStudent = new ArrayList<>();
	    }
	    return asStudent;
	}
	
	/**
	 * Set a value to attribute asStudent.
     */
	public void setAsStudent(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVStudent> asStudent) {
	    this.asStudent = asStudent;
	}
	
	
	
	/**
	 * Add a asStudent to the asStudent collection.
	 * @param asStudent_elt Element to add.
	 */
	public void addAsStudent(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVStudent asStudent_elt) {
	    this.asStudent.add(asStudent_elt);
	}
	
	/**
	 * Remove a asStudent to the asStudent collection.
	 * @param asStudent_elt Element to remove
	 */
	public void removeAsStudent(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVStudent asStudent_elt) {
	    this.asStudent.remove(asStudent_elt);
	}
	
	/**
	 * Return asMember.
	 * @return asMember
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVMember> getAsMember() {
		if (asMember == null) {
	        asMember = new ArrayList<>();
	    }
	    return asMember;
	}
	
	/**
	 * Set a value to attribute asMember.
     */
	public void setAsMember(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVMember> asMember) {
	    this.asMember = asMember;
	}
	
	
	
	/**
	 * Add a asMember to the asMember collection.
	 * @param asMember_elt Element to add.
	 */
	public void addAsMember(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVMember asMember_elt) {
	    this.asMember.add(asMember_elt);
	}
	
	/**
	 * Remove a asMember to the asMember collection.
	 * @param asMember_elt Element to remove
	 */
	public void removeAsMember(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVMember asMember_elt) {
	    this.asMember.remove(asMember_elt);
	}
	
	/**
	 * Return asOtherIDs.
	 * @return asOtherIDs
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVOtherIDs> getAsOtherIDs() {
		if (asOtherIDs == null) {
	        asOtherIDs = new ArrayList<>();
	    }
	    return asOtherIDs;
	}
	
	/**
	 * Set a value to attribute asOtherIDs.
     */
	public void setAsOtherIDs(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVOtherIDs> asOtherIDs) {
	    this.asOtherIDs = asOtherIDs;
	}
	
	
	
	/**
	 * Add a asOtherIDs to the asOtherIDs collection.
	 * @param asOtherIDs_elt Element to add.
	 */
	public void addAsOtherIDs(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVOtherIDs asOtherIDs_elt) {
	    this.asOtherIDs.add(asOtherIDs_elt);
	}
	
	/**
	 * Remove a asOtherIDs to the asOtherIDs collection.
	 * @param asOtherIDs_elt Element to remove
	 */
	public void removeAsOtherIDs(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVOtherIDs asOtherIDs_elt) {
	    this.asOtherIDs.remove(asOtherIDs_elt);
	}
	
	/**
	 * Return contactParty.
	 * @return contactParty
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVContactParty> getContactParty() {
		if (contactParty == null) {
	        contactParty = new ArrayList<>();
	    }
	    return contactParty;
	}
	
	/**
	 * Set a value to attribute contactParty.
     */
	public void setContactParty(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVContactParty> contactParty) {
	    this.contactParty = contactParty;
	}
	
	
	
	/**
	 * Add a contactParty to the contactParty collection.
	 * @param contactParty_elt Element to add.
	 */
	public void addContactParty(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVContactParty contactParty_elt) {
	    this.contactParty.add(contactParty_elt);
	}
	
	/**
	 * Remove a contactParty to the contactParty collection.
	 * @param contactParty_elt Element to remove
	 */
	public void removeContactParty(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVContactParty contactParty_elt) {
	    this.contactParty.remove(contactParty_elt);
	}
	
	/**
	 * Return guardian.
	 * @return guardian
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuardian> getGuardian() {
		if (guardian == null) {
	        guardian = new ArrayList<>();
	    }
	    return guardian;
	}
	
	/**
	 * Set a value to attribute guardian.
     */
	public void setGuardian(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuardian> guardian) {
	    this.guardian = guardian;
	}
	
	
	
	/**
	 * Add a guardian to the guardian collection.
	 * @param guardian_elt Element to add.
	 */
	public void addGuardian(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuardian guardian_elt) {
	    this.guardian.add(guardian_elt);
	}
	
	/**
	 * Remove a guardian to the guardian collection.
	 * @param guardian_elt Element to remove
	 */
	public void removeGuardian(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuardian guardian_elt) {
	    this.guardian.remove(guardian_elt);
	}
	
	/**
	 * Return guarantor.
	 * @return guarantor
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuarantor> getGuarantor() {
		if (guarantor == null) {
	        guarantor = new ArrayList<>();
	    }
	    return guarantor;
	}
	
	/**
	 * Set a value to attribute guarantor.
     */
	public void setGuarantor(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuarantor> guarantor) {
	    this.guarantor = guarantor;
	}
	
	
	
	/**
	 * Add a guarantor to the guarantor collection.
	 * @param guarantor_elt Element to add.
	 */
	public void addGuarantor(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuarantor guarantor_elt) {
	    this.guarantor.add(guarantor_elt);
	}
	
	/**
	 * Remove a guarantor to the guarantor collection.
	 * @param guarantor_elt Element to remove
	 */
	public void removeGuarantor(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVGuarantor guarantor_elt) {
	    this.guarantor.remove(guarantor_elt);
	}
	
	/**
	 * Return birthPlace.
	 * @return birthPlace
	 */
	public net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVBirthPlace getBirthPlace() {
	    return birthPlace;
	}
	
	/**
	 * Set a value to attribute birthPlace.
     */
	public void setBirthPlace(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVBirthPlace birthPlace) {
	    this.birthPlace = birthPlace;
	}
	
	
	
	
	/**
	 * Return languageCommunication.
	 * @return languageCommunication
	 */
	public List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVLanguageCommunication> getLanguageCommunication() {
		if (languageCommunication == null) {
	        languageCommunication = new ArrayList<>();
	    }
	    return languageCommunication;
	}
	
	/**
	 * Set a value to attribute languageCommunication.
     */
	public void setLanguageCommunication(List<net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVLanguageCommunication> languageCommunication) {
	    this.languageCommunication = languageCommunication;
	}
	
	
	
	/**
	 * Add a languageCommunication to the languageCommunication collection.
	 * @param languageCommunication_elt Element to add.
	 */
	public void addLanguageCommunication(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVLanguageCommunication languageCommunication_elt) {
	    this.languageCommunication.add(languageCommunication_elt);
	}
	
	/**
	 * Remove a languageCommunication to the languageCommunication collection.
	 * @param languageCommunication_elt Element to remove
	 */
	public void removeLanguageCommunication(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVLanguageCommunication languageCommunication_elt) {
	    this.languageCommunication.remove(languageCommunication_elt);
	}
	
	/**
	 * Return classCode.
	 * @return classCode
	 */
	public net.ihe.gazelle.hl7v3.voc.EntityClass getClassCode() {
	    return classCode;
	}
	
	/**
	 * Set a value to attribute classCode.
     */
	public void setClassCode(net.ihe.gazelle.hl7v3.voc.EntityClass classCode) {
	    this.classCode = classCode;
	}
	
	
	
	
	/**
	 * Return determinerCode.
	 * @return determinerCode
	 */
	public net.ihe.gazelle.hl7v3.voc.XDeterminerInstanceKind getDeterminerCode() {
	    return determinerCode;
	}
	
	/**
	 * Set a value to attribute determinerCode.
     */
	public void setDeterminerCode(net.ihe.gazelle.hl7v3.voc.XDeterminerInstanceKind determinerCode) {
	    this.determinerCode = determinerCode;
	}
	
	
	
	
	/**
	 * 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.coctmt030007UV");
					Marshaller m = jc.createMarshaller();
					m.marshal(this, doc);
					_xmlNodePresentation = doc.getElementsByTagNameNS("urn:hl7-org:v3", "COCT_MT030007UV.Person").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(COCTMT030007UVPerson cOCTMT030007UVPerson, String _location, ConstraintValidatorModule cvm, List<net.ihe.gazelle.validation.Notification> diagnostic){
   		if (cOCTMT030007UVPerson != null){
   			cvm.validate(cOCTMT030007UVPerson, _location, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CS realmCode: cOCTMT030007UVPerson.getRealmCode()){
					net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(realmCode, _location + "/realmCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(cOCTMT030007UVPerson.getTypeId(), _location + "/typeId", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II templateId: cOCTMT030007UVPerson.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: cOCTMT030007UVPerson.getId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(id, _location + "/id[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.EN name: cOCTMT030007UVPerson.getName()){
					net.ihe.gazelle.hl7v3.datatypes.EN.validateByModule(name, _location + "/name[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.ED.validateByModule(cOCTMT030007UVPerson.getDesc(), _location + "/desc", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(cOCTMT030007UVPerson.getStatusCode(), _location + "/statusCode", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(cOCTMT030007UVPerson.getAdministrativeGenderCode(), _location + "/administrativeGenderCode", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.TS.validateByModule(cOCTMT030007UVPerson.getBirthTime(), _location + "/birthTime", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.BL.validateByModule(cOCTMT030007UVPerson.getDeceasedInd(), _location + "/deceasedInd", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.TS.validateByModule(cOCTMT030007UVPerson.getDeceasedTime(), _location + "/deceasedTime", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.BL.validateByModule(cOCTMT030007UVPerson.getMultipleBirthInd(), _location + "/multipleBirthInd", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.INT.validateByModule(cOCTMT030007UVPerson.getMultipleBirthOrderNumber(), _location + "/multipleBirthOrderNumber", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.BL.validateByModule(cOCTMT030007UVPerson.getOrganDonorInd(), _location + "/organDonorInd", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(cOCTMT030007UVPerson.getMaritalStatusCode(), _location + "/maritalStatusCode", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(cOCTMT030007UVPerson.getEducationLevelCode(), _location + "/educationLevelCode", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CE disabilityCode: cOCTMT030007UVPerson.getDisabilityCode()){
					net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(disabilityCode, _location + "/disabilityCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(cOCTMT030007UVPerson.getLivingArrangementCode(), _location + "/livingArrangementCode", cvm, diagnostic);
