
<!ENTITY % CodeOrString "CodedElement|String">
<!ENTITY % Period "(StartDate, EndDate?)| EndDate">
<!ENTITY % Coded "Code, CodeMeaning?">
 
<!-- EHCR message (#I01479) -->

<!--An abstract class which represents a generalisation on which all
  the messages specified by this Prestandard are based. It contains
  general information applicable to all messages.
 -->
 

<!-- EHCR destination (#I01302) -->
<!ELEMENT EhcrDestination (AgentCtxId)>


<!--A communicating party that receives EHCR information or sends a
  request for EHCR information.
 -->


<!-- EHCR source (#I01300) -->
<!ELEMENT EhcrSource (AgentCtxId)>


<!--A communicating party that sends EHCR information or receives a
  request for EHCR information.
 -->


<!-- EHCR message related agent (#I01304) -->
<!ELEMENT MsgRelAgent (AgentCtxId)>
<!ATTLIST MsgRelAgent MsgRelRoleScope (ThisMessage|Reply|Both|Referenced) #REQUIRED
		 MsgRelRole (CopyDestination|ForwardingAgent|Authoriser|Originator|Recipient) #REQUIRED>


<!--A communicating party, other than the EHCR source or EHCR
  destination, referred to in a message to indicate their involvement
  in the process of communication.
Attributes of MsgRelAgent
 MsgRelRoleScope: EHCR message related agent role
  scope (#I01575)
  An indication of whether the role of the EHCR message related
  agent applies to this message, to a related EHCR message or to this
  message and any related messages.
 MsgRelRole: EHCR message related agent role (#I01291)
  An indication of the role of the EHCR message related agent in
  relation to the current message or a related EHCR message.
 -->


<!-- originator of referenced message (#I01283) -->
<!ELEMENT RefMsgOrig (AgentCtxId)>


<!--The communicating party that originated a message referred to by
  the current message. 
 -->


<!-- message reference (#I01281) -->
<!ELEMENT MsgRef (OrigMsgId,
		MsgIssueDate?,
		RefMsgOrig?)>


<!--A reference from an EHCR message to a related message.
 -->


<!-- patient matching information (#I01436) -->
<!ELEMENT PatientMatchingInfo (((PatientId,
		PersonName?,
		BirthDate?)|
		(PersonName,
		BirthDate?)|
		BirthDate),
		AlternativePersonName*,
		Sex?,
		Address*)>


<!--Information provided for the purpose of matching an EHCR message
  to a uniquely identified individual patient.
 -->


<!-- healthcare agent in context (#I01533) -->
<!ELEMENT AgentInContext (AgentCtxId,
		(AgentId+|
		(Software|
		Device|
		Person|
		Organisation)),
		AgentFunction?,
		AgentRel*)>


<!--Information about a healthcare agent in the context of a
  specified set of relationships to other healthcare agents. The
  healthcare agent in context enables a distinction to be made between
  references to the same healthcare agent operating in different
  practical or organisational contexts.
 -->


<!-- healthcare agent relationship (#I01539) -->
<!ELEMENT AgentRel (AgentRelType,
		(AgentId+|
		(Software|
		Device|
		Person|
		Organisation)))>


<!--A relationship between two healthcare agents.
 -->


<!-- healthcare agents directory (#I01535) -->
<!ELEMENT AgentsDirectory (AgentInContext*,
		(Software|
		Device|
		Person|
		Organisation)*)>


<!--A collection of information about any number of healthcare agents
  and/or healthcare agent in contexts.
 -->


<!-- healthcare device (#I01534) -->
<!ELEMENT Device (AgentId+,
		DeviceType,
		DeviceManufacturer?,
		ManufacturerModelName?,
		DeviceVersion?,
		DeviceSerialNum?,
		Location?)>


<!--Device or equipment involved in the direct or indirect provision
  of healthcare services to an individual or to a population.
 -->


<!-- healthcare organisation (#I00571) -->
<!ELEMENT Organisation (AgentId,
		Address*,
		Telecom*,
		Language*,
		PartyMedicalSpecialty*,
		OrgName?,
		OrganisationType?)>


<!--Information about an organisation involved in the direct or
  indirect provision of healthcare services to an individual or to a
  population.
 -->


<!-- healthcare person (#I00584) -->
<!ELEMENT Person (AgentId+,
		Address*,
		Telecom*,
		Language*,
		PartyMedicalSpecialty*,
		PersonType?,
		PersonName?,
		PersonPosition?,
		PersonQualification*,
		PersonMilitaryRank?)>


<!--Person involved in the direct or indirect provision of healthcare
  services to an individual or to a population.
 -->


<!-- healthcare software (#I01537) -->
<!ELEMENT Software (AgentId+,
		SoftwareProductName,
		SoftwareManufacturer,
		SoftwareInternalName?,
		SoftwareFilename?,
		SoftwareVersion,
		SoftwareDate?)>


<!--Software component involved in the direct or indirect provision
  of healthcare services to an individual or to a population.
 -->


<!-- healthcare agent in context identifier (#I01541) -->
<!ELEMENT AgentCtxId (IdType?,
		IdScheme?,
		IdValue)>


<!--A unique identifier of a healthcare agent in context.
 -->


<!-- healthcare agent function (#I01635) -->
<!ELEMENT AgentFunction (%CodeOrString;)>


<!--Information about the function being carried out by the
  Healthcare Agent.
 -->


<!-- healthcare agent relationship type (#I01554) -->
<!ELEMENT AgentRelType (#PCDATA)>
<!ATTLIST AgentRelType  ICSI CDATA #IMPLIED>


<!--The nature of the relationship between the source and target
  healthcare agents.
Attributes of AgentRelType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- alternative person name (#I00602) -->
<!ELEMENT AlternativePersonName (PersonNameType?,
		ValidPeriod?,
		(StructPersonName|
		String))>


<!--An alternative name by which the person is, or has been, known.
 -->


<!-- apartment number (#I00730) -->
<!ELEMENT ApartmentNum (#PCDATA)>



<!-- date of birth (#I00611) -->
<!ELEMENT BirthDate (#PCDATA)>



<!-- city or town (#I00734) -->
<!ELEMENT CityOrTown (#PCDATA)>


<!--The name of the city, town or rural area used as part of the
  postal address.
 -->


<!-- code value (#I00011) -->
<!ELEMENT Code (#PCDATA)>


<!--A string that contains a coded value taken from a specified
  coding scheme.
 -->


<!-- coded element (#I01296) -->
<!ELEMENT CodedElement (%Coded;)>
<!ATTLIST CodedElement ICSI CDATA #IMPLIED>


<!--
Attributes of CodedElement
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- code meaning (#I00012) -->
<!ELEMENT CodeMeaning (#PCDATA)>


<!--A text string representing the meaning or term associated with
  the code value.
 -->


<!-- comment on message (#I01005) -->
<!ELEMENT CommentOnMsg (%CodeOrString;)>


<!--A comment from the sender of the message.
 -->


<!-- country (#I00736) -->
<!ELEMENT Country (%CodeOrString;)>



<!-- area of country / county (#I00735) -->
<!ELEMENT CountryOrCountyArea (%CodeOrString;)>



<!-- device manufacturer (#I01543) -->
<!ELEMENT DeviceManufacturer (%CodeOrString;)>


<!--The name or organisation code for of the manufacturer.
 -->


<!-- device serial number (#I00719) -->
<!ELEMENT DeviceSerialNum (#PCDATA)>


<!--Serial number allocated by the manufacturer.
 -->


<!-- device type (#I01552) -->
<!ELEMENT DeviceType (%Coded;)>
<!ATTLIST DeviceType ICSI CDATA #IMPLIED>


<!--The nature or function of a device.
Attributes of DeviceType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- device version (#I01553) -->
<!ELEMENT DeviceVersion (#PCDATA)>


<!--Version number assigned to a device or to its constituent firmware
 -->


<!-- district (#I00732) -->
<!ELEMENT District (#PCDATA)>


<!--Part of a city, town or rural area used as part of a postal
  address.
 -->


<!-- end date and time (#I00821) -->
<!ELEMENT EndDate (#PCDATA)>


<!--Date and time of the end of the specified period.
 -->


<!-- family name (#I00755) -->
<!ELEMENT FamilyName (#PCDATA)>



<!-- generation qualifier (#I00759) -->
<!ELEMENT GenerationQualifier (#PCDATA)>



<!-- first given name (#I00756) -->
<!ELEMENT GivenName (#PCDATA)>



<!-- number or name of house (#I00729) -->
<!ELEMENT HouseNumOrName (#PCDATA)>



<!-- identification scheme (#I01343) -->
<!ELEMENT IdScheme (#PCDATA)>
<!ATTLIST IdScheme  ICSI CDATA #IMPLIED>


<!--The identification scheme from which an associated identifier is
  derived.
Attributes of IdScheme
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- identifier type (#I01642) -->
<!ELEMENT IdType (#PCDATA)>
<!ATTLIST IdType  ICSI CDATA #IMPLIED>


<!--An indication of the type of entity that is identified by the
  identifier.
Attributes of IdType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- identifier value (#I01342) -->
<!ELEMENT IdValue (#PCDATA)>


<!--A number or string specified in an identification scheme to
  uniquely identify a unique instance of an entity.
 -->


<!-- location description (#I00744) -->
<!ELEMENT LocationDesc (#PCDATA)>


<!--A textual description of the location.
 -->


<!-- location identification (#I00743) -->
<!ELEMENT LocationId (#PCDATA)>


<!--A partner agreed identification of the location.
 -->


<!-- location organisation (#I01461) -->
<!ELEMENT LocationOrg (AgentId)>


<!--A reference to a healthcare organisation used to qualify a
  location identification or description.
 -->


<!-- location type (#I00742) -->
<!ELEMENT LocationType (%Coded;)>
<!ATTLIST LocationType ICSI CDATA #IMPLIED>


<!--A code indicating the nature of the location.
Attributes of LocationType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- manufacturer's model name (#I00718) -->
<!ELEMENT ManufacturerModelName (#PCDATA)>


<!--The model name assigned by the manufacturer.
 -->


<!-- middle name (#I00757) -->
<!ELEMENT MiddleName (#PCDATA)>



<!-- issue date and time of message (#I00533) -->
<!ELEMENT MsgIssueDate (#PCDATA)>


<!--Date and time at which a message is issued by the sending
  application.
 -->


<!-- type of organisation (#I00573) -->
<!ELEMENT OrganisationType (#PCDATA)>
<!ATTLIST OrganisationType  ICSI CDATA #IMPLIED>


<!--
Attributes of OrganisationType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- name of healthcare organisation (#I00572) -->
<!ELEMENT OrgName (#PCDATA)>



<!-- identification of message by originator (#I00531) -->
<!ELEMENT OrigMsgId (#PCDATA)>


<!--Identifier assigned by the originator of a message.
 -->


<!-- medical specialty of healthcare party (#I00582) -->
<!ELEMENT PartyMedicalSpecialty (%CodeOrString;)>


<!--A healthcare discipline or speciality in which a healthcare party
  provides a service.
 -->


<!-- patient identifiers (#I01157) -->
<!ELEMENT PatientId (Id+)>


<!--A set of one or more party identifiers used to identify the
  patient.
 -->


<!-- person administrative sex (#I00610) -->
<!ELEMENT Sex (#PCDATA)>


<!--The gender of the patient as recognised by the organisation
  responsible for administration of healthcare services.
 -->


<!-- military rank of healthcare person (#I00589) -->
<!ELEMENT PersonMilitaryRank (%CodeOrString;)>



<!-- person name type (#I00603) -->
<!ELEMENT PersonNameType (#PCDATA)>
<!ATTLIST PersonNameType  ICSI CDATA #IMPLIED>


<!--
Attributes of PersonNameType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- position of healthcare person (#I00587) -->
<!ELEMENT PersonPosition (%CodeOrString;)>



<!-- qualification of healthcare person (#I00588) -->
<!ELEMENT PersonQualification (%CodeOrString;)>



<!-- type of healthcare person (#I00586) -->
<!ELEMENT PersonType (#PCDATA)>
<!ATTLIST PersonType  ICSI CDATA #IMPLIED>


<!--
Attributes of PersonType
 ICSI: ICSI (#I00010)
  International Coding Scheme Identifier identifying the coding
  scheme from which the associated code value is derived.
 -->


<!-- PO box number (#I00731) -->
<!ELEMENT PoBox (#PCDATA)>



<!-- postal code (#I00733) -->
<!ELEMENT PostCode (#PCDATA)>



<!-- software date (#I01551) -->
<!ELEMENT SoftwareDate (#PCDATA)>


<!--The date of creation or last modification of the software.
 -->


<!-- software filename (#I01548) -->
<!ELEMENT SoftwareFilename (#PCDATA)>


<!--The filename of the file that contains the software (or the main
  or initial part of the software).
 -->


<!-- software internal name (#I01547) -->
<!ELEMENT SoftwareInternalName (#PCDATA)>


<!--The name or identifier by which the software is referred to by
  other software. This may also be a programming object name.
 -->


<!-- software manufacturer (#I01546) -->
<!ELEMENT SoftwareManufacturer (%CodeOrString;)>


<!--The name or organisation code for of the manufacturer or
  developer of the software.
 -->


<!-- software product name (#I01549) -->
<!ELEMENT SoftwareProductName (#PCDATA)>


<!--The name of the software product as assigned by the manufacturer.
 -->


<!-- software version (#I01550) -->
<!ELEMENT SoftwareVersion (#PCDATA)>


<!--The version number of the software as assigned by the manufacturer
 -->


<!-- start date and time (#I00820) -->
<!ELEMENT StartDate (#PCDATA)>


<!--Date and time of the start of the specified period.
 -->


<!-- street name (#I00728) -->
<!ELEMENT StreetName (#PCDATA)>



<!-- telecommunication area code (#I00765) -->
<!ELEMENT TelecomAreaCode (#PCDATA)>



<!-- telecommunication country code (#I00764) -->
<!ELEMENT TelecomCountryCode (#PCDATA)>



<!-- telecommunication extension number (#I00767) -->
<!ELEMENT TelecomExtNum (#PCDATA)>



<!-- telecommunication number (#I00766) -->
<!ELEMENT TelecomNum (#PCDATA)>



<!-- title (#I00758) -->
<!ELEMENT Title (#PCDATA)>



<!-- unstructured address line (#I00737) -->
<!ELEMENT UnstructAddressLine (#PCDATA)>



<!-- unstructured telecommunication number (#I00768) -->
<!ELEMENT UnstructTelecomNum (#PCDATA)>



<!-- period of name validity (#I01064) -->
<!-- period of telecommunication number validity (#I01067) -->
<!-- period of address validity (#I01061) -->
<!ELEMENT ValidPeriod (%Period;)>


<!--The period during which this information is or was valid. 
 -->

<!-- address (#I00726) -->
<!ELEMENT Address (ValidPeriod?,
		PostCode?,
		CountryOrCountyArea?,
		(StructAddress|
		UnstructAddress))>
<!ATTLIST Address AddrType (Home|Work|Vacation|Temporary|Former|Other|Unspecified) #REQUIRED>


<!--An address expressed in a structured or unstructured form.
Attributes of Address
 AddrType: address type (#I00727)
 -->

<!-- identifier (#I01341) -->
<!ELEMENT AgentId (IdType?,
		IdScheme?,
		IdValue)>


<!-- identifier (#I01341) -->
<!ELEMENT Id (IdType?,
		IdScheme?,
		IdValue)>


<!--A general-purpose identifier that can be qualified by the
  identification scheme from which the identifier is derived.
 -->


<!-- language details (#I00738) -->
<!ELEMENT Language (#PCDATA)>
<!ATTLIST Language LangAbility (FirstLanguage|Preferred|Fluent|Fair|Limited|None) #IMPLIED>


<!--language(s) in which a person is willing and able to converse for
  the purposes of providing or receiving healthcare services.
Attributes of Language
 LangAbility: ability in language (#I00740)
 : language (#I00739)
  Language represented by the abbreviations specified in ISO 639.
 -->


<!-- location details (#I00741) -->
<!ELEMENT Location (((LocationDesc,
		LocationId?,
		LocationType?)|
		(LocationId,
		LocationType?)|
		LocationType),
		LocationOrg?)>


<!--Information about a geographical location or type of location,
  expressed without a postal address.
 -->


<!-- person name details (#I00754) -->
<!ELEMENT PersonName (PersonNameType?,
		ValidPeriod?,
		(StructPersonName|
		String))>


<!--The structured or unstructured name of a person.
 -->


<!-- structured address (#I01315) -->
<!ELEMENT StructAddress (HouseNumOrName?,
		PoBox?,
		ApartmentNum?,
		StreetName?,
		District?,
		CityOrTown?,
		Country?)>



<!-- structured person name (#I01306) -->
<!ELEMENT StructPersonName (FamilyName,
		GivenName?,
		MiddleName?,
		Title?,
		GenerationQualifier?)>


<!--A person name composed of separately identifiable elements.
 -->


<!-- structured telecommunication number (#I01316) -->
<!ELEMENT StructTelecomNum (TelecomCountryCode?,
		TelecomAreaCode?,
		TelecomNum,
		TelecomExtNum?)>



<!-- telecommunication (#I00761) -->
<!ELEMENT Telecom (ValidPeriod?,
		(StructTelecomNum|
		UnstructTelecomNum))>
<!ATTLIST Telecom AddrType (Home|Work|Vacation|Temporary|Former|Other|Unspecified) #IMPLIED
		 TelecomType (Voice|Mobile|Pager|Facsimile|Email|Web|Other) #REQUIRED>


<!--Telephone, facsimile and other telecommunication numbers in a
  structured or unstructured form.
Attributes of Telecom
 AddrType: address type of telecommunication (#I00763)
  Relates a telecommunication number to a particular address or
  location specified using an associated instance of the address class.
   TelecomType: telecommunication type (#I00762)
 -->


<!-- unstructured address (#I01313) -->
<!ELEMENT UnstructAddress (UnstructAddressLine+)>



<!-- S [String] (#I00001) -->
<!ELEMENT String (#PCDATA)>


<!--String of characters.
 -->


