<?xml version="1.0" encoding="utf-8" standalone="no"?>
<book xmlns="http://docbook.org/ns/docbook" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xl="http://www.w3.org/1999/xlink" label="PS3.19" version="5.0" xml:id="PS3.19">
  <title>PS3.19</title>
  <subtitle>DICOM PS3.19 2023e - Application Hosting</subtitle>
  <info>
    <author>
      <orgname>DICOM Standards Committee</orgname>
    </author>
    <copyright>
      <year>2023</year>
      <holder>NEMA</holder>
    </copyright>
      <legalnotice>
          <para xml:id="para_1e94b71f-2d4f-4ce6-9dfb-0754bbf4ad01">A DICOM® publication</para>
      </legalnotice>
  </info>
  <chapter label="" status="1" xml:id="chapter_Notice">
    <title>Notice and Disclaimer</title>
    <para xml:id="para_3135934a-50a9-472d-9ee5-272124968ed4">The information in this publication was considered technically sound by the consensus of
      persons engaged in the development and approval of the document at the time it was developed.
      Consensus does not necessarily mean that there is unanimous agreement among every person
      participating in the development of this document.</para>
    <para xml:id="para_9805b589-58be-4ac2-8bc9-032a62463d4d">NEMA standards and guideline publications, of which the document contained herein is one,
      are developed through a voluntary consensus standards development process. This process brings
      together volunteers and/or seeks out the views of persons who have an interest in the topic
      covered by this publication. While NEMA administers the process and establishes rules to
      promote fairness in the development of consensus, it does not write the document and it does
      not independently test, evaluate, or verify the accuracy or completeness of any information or
      the soundness of any judgments contained in its standards and guideline publications.</para>
    <para xml:id="para_d018bcca-e3e6-4da5-9afc-68206a7ea00b">NEMA disclaims liability for any personal injury, property, or other damages of any nature
      whatsoever, whether special, indirect, consequential, or compensatory, directly or indirectly
      resulting from the publication, use of, application, or reliance on this document. NEMA
      disclaims and makes no guaranty or warranty, expressed or implied, as to the accuracy or
      completeness of any information published herein, and disclaims and makes no warranty that the
      information in this document will fulfill any of your particular purposes or needs. NEMA does
      not undertake to guarantee the performance of any individual manufacturer or seller's products
      or services by virtue of this standard or guide.</para>
    <para xml:id="para_88f18f41-cf0c-4381-93c6-899d970e1b9f">In publishing and making this document available, NEMA is not undertaking to render
      professional or other services for or on behalf of any person or entity, nor is NEMA
      undertaking to perform any duty owed by any person or entity to someone else. Anyone using
      this document should rely on his or her own independent judgment or, as appropriate, seek the
      advice of a competent professional in determining the exercise of reasonable care in any given
      circumstances. Information and other standards on the topic covered by this publication may be
      available from other sources, which the user may wish to consult for additional views or
      information not covered by this publication.</para>
    <para xml:id="para_3c8360ae-3956-43d5-abf8-37455b176f59">NEMA has no power, nor does it undertake to police or enforce compliance with the contents
      of this document. NEMA does not certify, test, or inspect products, designs, or installations
      for safety or health purposes. Any certification or other statement of compliance with any
      health or safety-related information in this document shall not be attributable to NEMA and is
      solely the responsibility of the certifier or maker of the statement.</para>
  </chapter>
  <chapter label="" status="1" xml:id="chapter_Foreword">
    <title>Foreword</title>
    <para xml:id="para_ffc33ef0-a692-48af-a7a1-440d4ac0bf1c">This DICOM Standard was developed according to the procedures of the DICOM Standards Committee.</para>
    <para xml:id="para_a27cd82f-e697-431d-8f23-653c1ddfe096">The DICOM Standard is structured as a multi-part document using the guidelines established in <xref linkend="biblio_ISODirectives2"/>.</para>
    <para xml:id="para_66ba86fe-01fc-4de6-8805-5c2994ed9e6a">DICOM® is the registered trademark of the National Electrical Manufacturers Association for its standards publications relating to digital communications of medical information, all rights reserved.</para>
    <para xml:id="para_9893c058-21fc-4735-8bc8-a6dacf79d9a3">HL7® and CDA® are the registered trademarks of Health Level Seven International, all rights reserved.</para>
    <para xml:id="para_d8572681-cee7-40e3-a9b3-4b287765c4e5">SNOMED®, SNOMED Clinical Terms®, SNOMED CT® are the registered trademarks of the International Health Terminology Standards Development <foreignphrase xml:lang="en-GB">Organisation</foreignphrase> (IHTSDO), all rights reserved.</para>
    <para xml:id="para_5e756cfb-caa8-419f-a482-bf5dfb778093">LOINC® is the registered trademark of Regenstrief Institute, Inc, all rights reserved.</para>
  </chapter>
  <chapter label="1" status="1" xml:id="chapter_1">
    <title>Scope and Field of Application</title>
    <para xml:id="para_94e83255-4c99-4738-ac08-ccb44c088264">This Part of the DICOM Standard defines an interface between two software applications. One application, the Hosting System, provides the second application with data, such as a set of images and related data. The second application, the Hosted Application, analyzes that data, potentially returning the results of that analysis, for example in the form of another set of images and/or structured reports, to the first application. Such an Application Program Interface (API) differs in scope from other portions of the DICOM Standard in that it standardizes the data interchange between software components on the same system, instead of data interchange between different systems. Hosted Application programs written to that standardized interface can 'plug-into' (see <xref linkend="figure_1-1" xrefstyle="select: label"/>) Hosting Systems. The notion of software add-ons or 'plug-ins' is quite common in the computing world, and has been successfully employed to extend the capabilities of web browsers, media players, graphical
  editors, publishing programs, etc. A Hosting System implementer needs only to create the standardized API once in order to support a wide variety of add-on Hosted Applications.</para>
    <figure label="1-1" pgwide="1" xml:id="figure_1-1">
      <title>Interface between Hosted Application and Hosting System.</title>
      <mediaobject>
        <imageobject>
          <imagedata fileref="figures/PS3.19_1-1.svg"/>
          <!--<imagedata fileref="part19_fromword_files/figure_1-1.png"/>-->
        </imageobject>
      </mediaobject>
    </figure>
    <para xml:id="para_219268d5-f16e-45e8-90f7-2b17a6a5e6bf">In the traditional 'plug-in' model, the 'plug-in' is dedicated to a particular host system (e.g., a web browsing program), and might not run under other host systems (e.g., other web browsing programs). PS3.19 defines a standardized API that may be implemented by any Hosting System. A 'plug-in' Hosted Application written to the standardized API would be able to run on any Hosting System that implements that standardized API (see <xref linkend="figure_1-2" xrefstyle="select: label"/>).</para>
    <para xml:id="para_49f96962-bb1c-4577-8a2d-ef49c07cccba">
      <figure label="1-2" pgwide="1" xml:id="figure_1-2">
        <title>Illustration of Platform Independence via Hosted Application Architecture.</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="figures/PS3.19_1-2.svg"/>
            <!--<imagedata fileref="part19_fromword_files/image002.png"/>-->
          </imageobject>
        </mediaobject>
      </figure>
    </para>
    <para xml:id="para_c2957ff1-659a-4f20-8d9a-f492a71481fe">The design goals and assumptions for the API include:</para>
    <itemizedlist>
      <listitem>
        <para xml:id="para_7f8e9254-cff7-4e6f-b56a-078d581e0990">Language independence - the API is defined in such a way that programs written in any common programming language could utilize it.</para>
      </listitem>
      <listitem>
        <para xml:id="para_fe39b3ba-9665-4236-91f0-c770caf38a45">Platform independence - the API is defined in such a way that it is not dependent on any particular computing platform or operating system.</para>
      </listitem>
      <listitem>
        <para xml:id="para_46f67c48-a811-4396-900c-300a60f88941">Extensible - the API can be extended in a backward compatible fashion. Old applications still work even with new extensions in place, while new applications that are aware of the extensions can gain access to a richer set of functionality.</para>
      </listitem>
      <listitem>
        <para xml:id="para_244cd7e4-7c81-474f-9f43-88a881dece15">Protected - the API design is consistent with later additions of mechanisms to protect intellectual property rights, and mechanisms that assure appropriate permissions and licenses are in place. The API should not interfere with common licensing systems.</para>
      </listitem>
      <listitem>
        <para xml:id="para_14e01ec3-ebf1-4695-b369-f49edc0c2ec1">Secure - the Hosted Application's access to data on the Hosting System would be controlled via the API by the Hosting System. The Hosting System would be responsible for access controls and audit logging, since it is the one providing the data to the Hosted Application.</para>
      </listitem>
      <listitem>
        <para xml:id="para_bffd8fc0-210a-48c4-b0a2-3f63402e7206">Leverage Existing Technology - the API definition utilizes existing technology in common use, as far as practical, and does not define new methodologies.</para>
      </listitem>
      <listitem>
        <para xml:id="para_bcd7fd7b-d722-4454-80de-f7a2f5d1b445">Simultaneous Launching - the Hosting System will be able to launch several instances of the same or of different Hosted Applications at the same time.</para>
      </listitem>
      <listitem>
        <para xml:id="para_93946e5f-1495-45e0-80ea-ff7ab9c1e171">Distributed Execution - although the API is designed for local execution, it does not prevent remote execution, where the Application is running on a different system from the Host.</para>
      </listitem>
    </itemizedlist>
    <para xml:id="para_2c68270d-d159-4b3c-a981-4031fd21b1b8">PS3.19 specifies both the interactions and the Application Programming Interfaces (API) between Hosting Systems and Hosted Applications. PS3.19 also includes Normative and Informative Annexes that define the data models that are used by the API defined in this Part.</para>
    <para xml:id="para_3c3c848e-a74a-4310-bf04-0308b9966d2c">The API does not directly address workflow management, which is addressed by other DICOM Services.</para>
  </chapter>
  <chapter label="2" status="1" xml:id="chapter_2">
    <title>Normative References</title>
    <para xml:id="para_2db5c4d2-148e-4c67-a4dd-357075a32f3a">The following standards contain provisions that, through reference in this text, constitute provisions of this Standard. At the time of publication, the editions indicated were valid. All standards are subject to revision, and parties to agreements based on this Standard are encouraged to investigate the possibilities of applying the most recent editions of the standards indicated below.</para>
    <bibliography>
      <biblioentry xml:id="biblio_ISODirectives2">
        <abbrev>ISO/IEC Directives, Part 2</abbrev>
        <author>
          <orgname>ISO/IEC</orgname>
        </author>
        <date>2016/05</date>
        <edition>7.0</edition>
        <title>Rules for the structure and drafting of International Standards</title>
        <bibliosource>
          <link xl:href="http://www.iec.ch/members_experts/refdocs/iec/isoiecdir-2%7Bed7.0%7Den.pdf"/>
        </bibliosource>
      </biblioentry>
        <biblioentry xml:id="biblio_ISO8822">
            <abbrev>ISO 8822</abbrev>
            <author>
                <orgname>ISO</orgname>
            </author>
            <date>1988</date>
            <title>Information processing systems - Open Systems Interconnection - Connection oriented presentation service definition</title>
        </biblioentry>
        <biblioentry xml:id="biblio_ISOIEC19757-2">
            <abbrev>ISO/IEC 19757-2</abbrev>
            <author>
                <orgname>ISO</orgname>
            </author>
            <date>2008</date>
            <title>Information technology — Document Schema Definition Language (DSDL) — Part 2: Regular-grammar-based validation — RELAX NG</title>
            <bibliosource>
                <link xl:href="http://www.iso.org/standard/52348.html"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_ISOIEC19757-3">
            <abbrev>ISO/IEC 19757-3</abbrev>
            <author>
                <orgname>ISO</orgname>
            </author>
            <date>2016</date>
            <title>Information technology — Document Schema Definition Languages (DSDL) — Part 3: Rule-based validation — Schematron</title>
            <bibliosource>
                <link xl:href="http://www.iso.org/standard/55982.html"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_ITU-T_X.667">
            <abbrev>ITU-T X.667</abbrev>
            <author>
                <orgname>ITU</orgname>
            </author>
            <date>2012</date>
            <title>Information technology - Procedures for the operation of object identifier registration authorities: Generation of universally unique identifiers and their use in object identifiers</title>
            <bibliosource>
                <link xl:href="http://www.itu.int/rec/T-REC-X.667/en"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_W3C_WSDL1_1">
            <abbrev>WSDL 1.1</abbrev>
            <author>
                <orgname>W3C</orgname>
            </author>
            <date>26 June 2007</date>
            <title>W3C Recommendation Web Services Description Language (WSDL) 1.1</title>
            <bibliosource>
                <link xl:href="http://www.w3.org/TR/wsdl"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_XSD1">
            <abbrev>XSD1</abbrev>
            <author>
                <orgname>W3C</orgname>
            </author>
            <date>28 October 2004</date>
            <title>XML Schema Part 1: Structures Second Edition. W3C Recommendation</title>
            <bibliosource>
                <link xl:href="http://www.w3.org/TR/xmlschema-1/"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_W3C_XPath2">
            <abbrev>XPath 2.0</abbrev>
            <author>
                <orgname>W3C</orgname>
            </author>
            <date>October 2016</date>
            <title>W3C Recommendation XML Path Language (XPath) 2.0</title>
            <bibliosource>
                <link xl:href="http://www.w3.org/TR/xpath20/"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_W3C_InfoSet">
            <abbrev>InfoSet</abbrev>
            <author>
                <orgname>W3C</orgname>
            </author>
            <date>4 February 2004</date>
            <title>W3C Recommendation XML Information Set</title>
            <bibliosource>
                <link xl:href="http://www.w3.org/TR/xml-infoset/"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_RFC_2045">
            <abbrev>RFC2045</abbrev>
            <author>
                <orgname>IETF</orgname>
            </author>
            <date>November 1996</date>
            <title>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
            <bibliosource>
                <link xl:href="http://tools.ietf.org/html/rfc2045"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_RFC_2046">
            <abbrev>RFC2046</abbrev>
            <author>
                <orgname>IETF</orgname>
            </author>
            <date>November 1996</date>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <bibliosource>
                <link xl:href="http://tools.ietf.org/html/rfc2046"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_RFC_2048">
            <abbrev>RFC2048</abbrev>
            <author>
                <orgname>IETF</orgname>
            </author>
            <date>November 1996</date>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures</title>
            <bibliosource>
                <link xl:href="http://tools.ietf.org/html/rfc2048"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_RFC_3240">
            <abbrev>RFC3240</abbrev>
            <author>
                <orgname>IETF</orgname>
            </author>
            <date>February 2002</date>
            <title>Digital Imaging and Communications in Medicine (DICOM) - Application/dicom MIME Sub-type Registration</title>
            <bibliosource>
                <link xl:href="http://tools.ietf.org/html/rfc3240"/>
            </bibliosource>
        </biblioentry>
        <biblioentry xml:id="biblio_RFC_3986">
            <abbrev>RFC3986</abbrev>
            <author>
                <orgname>IETF</orgname>
            </author>
            <title>Uniform Resource Identifiers (URI): Generic Syntax</title>
            <bibliosource>
                <link xl:href="http://tools.ietf.org/html/rfc3986"/>
            </bibliosource>
        </biblioentry>
    </bibliography>
  </chapter>
    <chapter label="3" status="1" xml:id="chapter_3">
        <title>Definitions</title>
        <para xml:id="para_f679fcfc-1844-45a6-9bb3-3a80dbed112a">For the purposes of this Standard the following definitions apply.</para>
        <glossary>
             <glossdiv label="3.1" status="2" xml:id="sect_3.1">
                <title>Presentation Service Definitions</title>
                <para xml:id="para_d798ecb1-7adb-4ac1-b475-3bfd8006415e">This Part of the Standard makes use of the following terms defined in <xref linkend="biblio_ISO8822"/>:</para>
                <glossentry xml:id="glossentry_TransferSyntax" xreflabel="Transfer Syntax">
                    <glossterm>Transfer Syntax</glossterm>
                    <glossdef>
                        <para xml:id="para_73312af3-17ea-41b2-93cc-2e97b27a6732">See <xref linkend="biblio_ISO8822"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_TransferSyntaxName" xreflabel="Transfer Syntax Name">
                    <glossterm>Transfer Syntax Name</glossterm>
                    <glossdef>
                        <para xml:id="para_8e6ec3c1-74ff-47a2-9ce3-9256a784f8df">See <xref linkend="biblio_ISO8822"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.2" status="2" xml:id="sect_3.2">
                <title>XML Infoset Definitions</title>
                <para xml:id="para_3b65c6d0-0a23-4ba7-9155-61e9d129420e">This Part of the Standard makes use of the following terms defined in <xref linkend="biblio_W3C_InfoSet"/>:</para>
                <note>
                    <orderedlist>
                        <listitem>
                            <para xml:id="para_c012bded-0106-4e95-95f6-b011fbe1e89d">The concept of an XML Attribute is quite distinct from that of a DICOM Attribute.</para>
                        </listitem>
                        <listitem>
                            <para xml:id="para_6c85cf17-d58b-414e-bbe5-3752d22886c1">To avoid confusion with the DICOM terms with similar names, the text of the DICOM Standard will use XML Element and XML Attribute when referring to these XML Infoset concepts. The appearance of Element or Attribute without the term XML in front of them generally refers to the DICOM concepts instead of the XML Infoset concepts.</para>
                        </listitem>
                    </orderedlist>
                </note>
                <glossentry xml:id="glossentry_XMLInfoset" xreflabel="XML Infoset">
                    <glossterm>XML Infoset</glossterm>
                    <glossdef>
                        <para xml:id="para_04dbbba8-8347-4237-8149-0690db371ded">See <xref linkend="biblio_W3C_InfoSet"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_XMLElement" xreflabel="XML Element">
                    <glossterm>XML Element</glossterm>
                    <glossdef>
                        <para xml:id="para_97f06223-8cdf-4f2a-8fba-25336a6e473e">See <xref linkend="biblio_W3C_InfoSet"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_XMLAttribute" xreflabel="XML Attribute">
                    <glossterm>XML Attribute</glossterm>
                    <glossdef>
                        <para xml:id="para_6cf6dcdd-ff88-4b24-a2f1-8f03cee228f3">See <xref linkend="biblio_W3C_InfoSet"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.3" status="2" xml:id="sect_3.3">
                <title>DICOM Introduction and Overview Definitions</title>
                <para xml:id="para_46528746-87c4-4dba-9f29-3738dd182f18">This Part of the Standard makes use of the following terms defined in <olink targetdoc="PS3.1" targetptr="PS3.1" xrefstyle="select: labelnumber"/>:</para>
                <glossentry xml:id="glossentry_Attribute" xreflabel="Attribute">
                    <glossterm>Attribute</glossterm>
                    <glossdef>
                        <para xml:id="para_41751b13-1b96-4500-bf5e-bd69fe8c06da">
<olink targetdoc="PS3.1" targetptr="glossentry_Attribute" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ServiceObjectPairClass" xreflabel="Service-Object Pair Class (SOP Class)">
                    <glossterm>Service-Object Pair Class</glossterm>
                    <acronym>SOP Class</acronym>
                    <glossdef>
                        <para xml:id="para_91548724-4dae-4506-acc6-a18067fdff13">
<olink targetdoc="PS3.1" targetptr="glossentry_ServiceObjectPairClass" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.4" status="2" xml:id="sect_3.4">
                <title>DICOM Information Object Definition</title>
                <para xml:id="para_9604a410-372e-4f23-967e-f33c439574f4">This Part of the Standard makes use of the following term defined in <olink targetdoc="PS3.3" targetptr="PS3.3" xrefstyle="select: labelnumber"/>:</para>

                <glossentry xml:id="glossentry_AttributeTag" xreflabel="Attribute Tag">
                    <glossterm>Attribute Tag</glossterm>
                    <glossdef>
                        <para xml:id="para_98da7e56-848b-4863-a0c1-d9cf28a35a34">
<olink targetdoc="PS3.3" targetptr="glossentry_AttributeTag" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.5" status="2" xml:id="sect_3.5">
                <title>DICOM Data Structures and Encoding</title>
                <para xml:id="para_8359c19b-9ab5-4d5b-bccc-fd527100881e">This Part of the Standard makes use of the following terms defined in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>:</para>

                <glossentry xml:id="glossentry_DataElement" xreflabel="Data Element">
                    <glossterm>Data Element</glossterm>
                    <glossdef>
                        <para xml:id="para_537d29ce-6e25-45ce-90c5-98c81d54ef0d">
<olink targetdoc="PS3.5" targetptr="glossentry_DataElement" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_DataElementTag" xreflabel="Data Element Tag">
                    <glossterm>Data Element Tag</glossterm>
                    <glossdef>
                        <para xml:id="para_58e8d2c6-a85a-47e3-b3c4-1b4577ab32f8">
<olink targetdoc="PS3.5" targetptr="glossentry_DataElementTag" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_DataElementType" xreflabel="Data Element Type">
                    <glossterm>Data Element Type</glossterm>
                    <glossdef>
                        <para xml:id="para_e91380ba-17a4-4ef3-b428-403ff9ad6544">
<olink targetdoc="PS3.5" targetptr="glossentry_DataElementType" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_DataSet" xreflabel="Data Set">
                    <glossterm>Data Set</glossterm>
                    <glossdef>
                        <para xml:id="para_efeb4402-23bb-493a-a0a2-353bfe8b2352">
<olink targetdoc="PS3.5" targetptr="glossentry_DataSet" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_DefinedTerm" xreflabel="Defined Term">
                    <glossterm>Defined Term</glossterm>
                    <glossdef>
                        <para xml:id="para_515f2715-ff3b-46f6-bd28-f07cdd104b23">
<olink targetdoc="PS3.5" targetptr="glossentry_DefinedTerm" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_EnumeratedValue" xreflabel="Enumerated Value">
                    <glossterm>Enumerated Value</glossterm>
                    <glossdef>
                        <para xml:id="para_0fdab397-bbf2-42e5-8175-77b4d3d0c66c">
<olink targetdoc="PS3.5" targetptr="glossentry_EnumeratedValue" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_SequenceOfItems" xreflabel="Sequence of Items">
                    <glossterm>Sequence of Items</glossterm>
                    <glossdef>
                        <para xml:id="para_4b1e6579-135a-4e7b-968c-3e193e89b1f6">
<olink targetdoc="PS3.5" targetptr="glossentry_SequenceOfItems" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_UniqueIdentifier" xreflabel="Unique Identifier (UID)">
                    <glossterm>Unique Identifier</glossterm>
                    <acronym>UID</acronym>
                    <glossdef>
                        <para xml:id="para_20bb2160-c6e6-46a8-829f-b546aba3475a">
<olink targetdoc="PS3.5" targetptr="glossentry_UniqueIdentifier" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ValueMultiplicity" xreflabel="Value Multiplicity (VM)">
                    <glossterm>Value Multiplicity</glossterm>
                    <acronym>VM</acronym>
                    <glossdef>
                        <para xml:id="para_2727e56b-58f8-48e1-8105-0fa0c32f5da3">
<olink targetdoc="PS3.5" targetptr="glossentry_ValueMultiplicity" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ValueRepresentation" xreflabel="Value Representation (VR)">
                    <glossterm>Value Representation</glossterm>
                    <acronym>VR</acronym>
                    <glossdef>
                        <para xml:id="para_9547a133-fda3-4624-8905-9e440b8716b6">
<olink targetdoc="PS3.5" targetptr="glossentry_ValueRepresentation" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.6" status="2" xml:id="sect_3.6">
                <title>Codes and Controlled Terminology Definitions:</title>
                <para xml:id="para_43d543e9-fa3a-4074-8454-e4f8a888b092">This Part of the Standard makes use of the following terms defined in <olink targetdoc="PS3.16" targetptr="PS3.16" xrefstyle="select: labelnumber"/>:</para>
                <glossentry xml:id="glossentry_BaselineContextGroupIdentifier" xreflabel="Baseline Context Group Identifier (BCID)">
                    <glossterm>Baseline Context Group Identifier</glossterm>
                    <acronym>BCID</acronym>
                    <glossdef>
                        <para xml:id="para_76bda4a2-ea10-44ac-92e4-fa9cfd390987">
<olink targetdoc="PS3.16" targetptr="glossentry_BaselineContextGroupIdentifier" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_DefinedContextGroupIdentifier" xreflabel="Defined Context Group Identifier (DCID)">
                    <glossterm>Defined Context Group Identifier</glossterm>
                    <acronym>DCID</acronym>
                    <glossdef>
                        <para xml:id="para_35ab1930-6947-4bfd-a683-a5c0d59499c7">
<olink targetdoc="PS3.16" targetptr="glossentry_DefinedContextGroupIdentifier" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ContextGroup" xreflabel="Context Group">
                    <glossterm>Context Group</glossterm>
                    <glossdef>
                        <para xml:id="para_5fc8e697-bfac-4d70-92bf-f1831ccd73e3">
<olink targetdoc="PS3.16" targetptr="glossentry_ContextGroup" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ContextGroupVersion" xreflabel="Context Group Version">
                    <glossterm>Context Group Version</glossterm>
                    <glossdef>
                        <para xml:id="para_19d94d44-5c9a-4e22-b0ec-346aea0fd32f">
<olink targetdoc="PS3.16" targetptr="glossentry_ContextGroupVersion" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ContextID" xreflabel="Context ID (CID)">
                    <glossterm>Context ID</glossterm>
                    <acronym>CID</acronym>
                    <glossdef>
                        <para xml:id="para_e75fba2d-27c0-41a7-9341-763c0e795339">
<olink targetdoc="PS3.16" targetptr="glossentry_ContextID" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_MappingResource" xreflabel="Mapping Resource">
                    <glossterm>Mapping Resource</glossterm>
                    <glossdef>
                        <para xml:id="para_6493b5d7-eb92-4d3a-9526-f91bb1b51a56">
<olink targetdoc="PS3.16" targetptr="glossentry_MappingResource" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_DICOMContentMappingResource" xreflabel="DICOM Content Mapping Resource (DCMR)">
                    <glossterm>DICOM Content Mapping Resource</glossterm>
                    <acronym>DCMR</acronym>
                    <glossdef>
                        <para xml:id="para_802eacdf-6121-4089-a64a-1861ba13c867">
<olink targetdoc="PS3.16" targetptr="glossentry_DICOMContentMappingResource" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_ValueSet" xreflabel="Value Set">
                    <glossterm>Value Set</glossterm>
                    <glossdef>
                        <para xml:id="para_6291dce9-bf20-4711-807a-6001504f17e7">
<olink targetdoc="PS3.16" targetptr="glossentry_ValueSet" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
                <glossentry xml:id="glossentry_CodingScheme" xreflabel="Coding Scheme">
                    <glossterm>Coding Scheme</glossterm>
                    <glossdef>
                        <para xml:id="para_13e93aeb-6341-4ed0-8edf-9016e90286f6">
<olink targetdoc="PS3.16" targetptr="glossentry_CodingScheme" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.7" status="2" xml:id="sect_3.7">
                <title>Application Hosting Definitions</title>
                <para xml:id="para_8729996b-c727-4a16-9738-505f8b637092">The following definitions are commonly used in this Part of the Standard:</para>
                <glossentry>
                    <glossterm>Application Programming Interface</glossterm>
                    <acronym>API</acronym>
                    <glossdef>
                        <para xml:id="para_7f70cb75-3171-4fc2-a7da-87804849003c">A set of interface methods that Hosted Applications and Hosting Systems use to communicate with each other.</para>
                    </glossdef>
                </glossentry>
                <glossentry>
                    <glossterm>Hosted Application</glossterm>
                    <glossdef>
                        <para xml:id="para_b561b44e-2bd0-4500-b58d-c6a840500129">An application launched and controlled by a Hosting System. The Hosted Application may utilize services offered by the Hosting System.</para>
                    </glossdef>
                </glossentry>
                <glossentry>
                    <glossterm>Hosting System</glossterm>
                    <glossdef>
                        <para xml:id="para_772c3550-fb1f-405b-8ec0-461ed7f1e04c">The application used to launch and control Hosted Applications. The Hosting System provides a variety of services such as DICOM object retrieval and storage for the Hosted Application. The Hosting System provides the infrastructure in which the Hosted Application runs and interacts with the external environment. This includes network access, database and security.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
            <glossdiv label="3.8" status="2" xml:id="sect_3.8">
                <title>DICOM Service Class Definitions</title>
                <para xml:id="para_c48e4012-8c00-4be6-9b33-0d7ead7502dc">This Part of the Standard makes use of the following terms defined in <olink targetdoc="PS3.4" targetptr="PS3.4" xrefstyle="select: labelnumber"/>:</para>
                <glossentry xml:id="glossentry_ServiceObjectPairInstance" xreflabel="Service-Object Pair Instance (SOP Instance)">
                    <glossterm>Service-Object Pair Instance</glossterm>
                    <acronym>SOP Instance</acronym>
                    <glossdef>
                        <para xml:id="para_9497216c-bad1-4380-ad82-fcaa040f5513">
<olink targetdoc="PS3.4" targetptr="glossentry_ServiceObjectPairInstance" xrefstyle="template:See %t in %o"/>.</para>
                    </glossdef>
                </glossentry>
            </glossdiv>
        </glossary>
    </chapter>
  <chapter label="4" status="1" xml:id="chapter_4">
    <title>Symbols and Abbreviations</title>
    <para xml:id="para_3be739e6-3a8d-4bbb-a1de-3b761e85b292">The following symbols and abbreviations are used in this Part of the Standard.</para>
    <variablelist>
      <varlistentry>
        <term>ACR</term>
        <listitem>
          <para xml:id="para_8056a4fe-805f-4c22-adff-92e209cf0140">American College of Radiology</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>ASCII</term>
        <listitem>
          <para xml:id="para_0d0f63a8-4921-489c-b3f4-3f202c02dfaa">American Standard Code for Information Interchange</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>ANSI</term>
        <listitem>
          <para xml:id="para_9e739e9f-9a6d-4a4a-8317-efa7734df223">American National Standards Institute</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>API</term>
        <listitem>
          <para xml:id="para_022cd07b-6ddf-4dbf-bd29-77468815c12d">Application Programming Interface</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>BCID</term>
        <listitem>
          <para xml:id="para_dee8e9bb-7312-4956-870d-e4c4a51a5f36">Baseline Context Group Identifier</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>CID</term>
        <listitem>
          <para xml:id="para_a3fb94c4-8561-4c02-ab54-78597c0d72ec">Context ID</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>DCID</term>
        <listitem>
          <para xml:id="para_275d6a2e-c25e-4793-933a-34f989a67480">Defined Context Group Identifier</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>DCMR</term>
        <listitem>
          <para xml:id="para_49823aaa-82ca-465e-a878-f7a472cd215a">DICOM Content Mapping Resource</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>DICOM</term>
        <listitem>
          <para xml:id="para_a1754069-4100-4caf-9f85-d772d7aa6f09">Digital Imaging and Communications in Medicine</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>DSDL</term>
        <listitem>
          <para xml:id="para_a227f03d-45b4-4988-b8d8-e7e6c61cfeba">Document Schema Definition Languages</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>IEC</term>
        <listitem>
          <para xml:id="para_0002b1d3-62b9-4338-bb65-351301ab4daf">International Electrotechnical Commission</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>IOD</term>
        <listitem>
          <para xml:id="para_a44fb04e-05f0-435c-9f52-3b3e71e1ead4">Information Object Definition</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>IANA</term>
        <listitem>
          <para xml:id="para_20fb99e7-af46-4f0b-a556-f3ea99408a3c">Internet Assigned Numbers Authority</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>ISO</term>
        <listitem>
          <para xml:id="para_35b37758-1d33-412e-a0ce-a25523fa99c5">International Standards Organization</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>LUT</term>
        <listitem>
          <para xml:id="para_ffdee276-9155-4237-afdb-beedae1cfebc">Lookup Table</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>MIME</term>
        <listitem>
          <para xml:id="para_5b4f3da3-6a63-44eb-a969-7ccb8da0c0a8">Multipurpose Internet Mail Extensions</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>NEMA</term>
        <listitem>
          <para xml:id="para_264ee59a-8d11-4751-a550-8f5ec0771ea3">National Electrical Manufacturers Association</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>OID</term>
        <listitem>
          <para xml:id="para_93d4a0a4-fc9c-45e2-bd97-fbc9451cab8d">Object Identifier (ISO 8824)</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>ROI</term>
        <listitem>
          <para xml:id="para_76744246-4132-4530-84ba-b68be2291081">Region of interest</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>SOP</term>
        <listitem>
          <para xml:id="para_bde7ca31-cf32-4db3-a934-0b6f440b96ef">Service-Object Pair</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>SR</term>
        <listitem>
          <para xml:id="para_96708319-793e-450c-ad68-6e9aee875ed1">Structured Reporting</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>UID</term>
        <listitem>
          <para xml:id="para_3f289758-dad5-46da-8982-153f22f08999">Unique Identifier</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>UUID</term>
        <listitem>
          <para xml:id="para_db66591f-4db9-4348-9669-3e089cecafae">Universal Unique Identifier (ISO/IEC 11578)</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>URL/URI</term>
        <listitem>
          <para xml:id="para_9dddb1fe-7454-454f-8b49-45d72474583b">Uniform Resource Locator / Identifier</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>VM</term>
        <listitem>
          <para xml:id="para_ff5c0a83-c90c-4869-98db-dc8566becaf9">Value Multiplicity</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>VR</term>
        <listitem>
          <para xml:id="para_a2884e95-ea90-49d5-9100-3f3ffe4cdf7e">Value Representation</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>WSDL</term>
        <listitem>
          <para xml:id="para_dd727b22-dc81-4698-9e37-a7f884da1ef0">Web Services Description Language</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>XSD</term>
        <listitem>
          <para xml:id="para_a2950159-ab42-428e-9095-5cfadbc9475c">XML Schema Definition</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>XML</term>
        <listitem>
          <para xml:id="para_4a752dfe-2290-46ce-a031-68485046ed15">eXtensible Markup Language</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>XPath</term>
        <listitem>
          <para xml:id="para_5882161a-47e1-470f-bc43-d3dca2e1a2ad">XML Path Language</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </chapter>
  <chapter label="5" status="1" xml:id="chapter_5">
    <title>Conventions</title>
    <para xml:id="para_d4e54303-5814-4a07-96a8-029a114fcef4">Terms listed in <xref linkend="chapter_3" xrefstyle="template:Section %n"/> Definitions are capitalized throughout the document.</para>
  </chapter>
  <chapter label="6" status="1" xml:id="chapter_6">
    <title>Application Hosting Overview</title>
    <para xml:id="para_8bdc932b-786f-4e97-b754-046b837acf41">This section describes the capabilities of the API, gives an example of the sequence of operations, and summarizes the remaining sections of this Part.</para>
    <para xml:id="para_723e0ccb-138e-4123-a7fb-fbf58f4bf155">The APIs are shared by a Hosting System and one or more Hosted Applications.</para>
    <para xml:id="para_35c1628f-548a-41ee-bbdf-2790967564aa">The API is agnostic to the hardware platform, the operating system, and the GUI. The API supports requesting space in the GUI, if available. The API supports headless operation (i.e., no GUI).</para>
    <para xml:id="para_c65d2ae0-d75c-436c-a61d-9ec4afceda85">The APIs are defined using Web Services Definition Language (WSDL) to be programming language, platform, and technology neutral. The APIs are designed to maximize language independence while minimizing the impact on efficiency of utilizing web services technology. The interfaces support both a networked file-based and a shared-memory interaction model. The API supports manual configuration, but not discovery.</para>
    <para xml:id="para_bc907fed-fda6-4a1a-8c15-38b15adaf05e">The API can provide DICOM Data Sets and other data to the Hosted Application and can accept DICOM Data Sets and other data created by the Hosted Application, incrementally or upon completion. The Hosted Application has granular access to data provided by the Hosting System (e.g., single attributes, a subset of the pixel data, etc.) and only that data. The API utilizes DICOM semantics, but not necessarily DICOM network transfer syntax. The Hosting System provides a mechanism to the Hosted Application for generating UIDs.</para>
    <para xml:id="para_44b90631-8a57-4265-8258-dfe02d05edea">The API allows the Hosting System to suspend and/or cancel the operation of the Hosted Application and regain user interface control. The API supports returning status information from the Hosted Application to the Hosting System and tracking the state of the Hosted Application.</para>
    <para xml:id="para_ddc7c9ea-cdff-427a-b37f-c03ccda89465">The Hosting System has a mechanism to launch or connect to one or more Hosted Applications, verify that the Hosted Application has started successfully, and then pass the initial data objects. All interactions start in the Hosting System. A typical sequence of events is as follows:</para>
    <orderedlist>
      <listitem>
        <para xml:id="para_7f2db07a-4b49-4d07-beab-979f5dc2a085">The Hosting System identifies and locates the Hosted Application appropriate to the task and data using host-specific methods. Often the desired application is selected by the user of the system or is identified in a work list entry.</para>
      </listitem>
      <listitem>
        <para xml:id="para_190d7aef-436c-4d9f-9210-772f5b26a978">The Hosting System launches the application, essentially issuing a 'run' or 'exec' command, passing parameters that the Hosted Application uses to establish bilateral communications between the two.</para>
      </listitem>
      <listitem>
        <para xml:id="para_6e960ceb-5325-4cad-81d6-81b772dab79c">The Hosting System uses the API to initiate a processing task in the Hosted Application and notifies it of its input data.</para>
      </listitem>
      <listitem>
        <para xml:id="para_a6e09834-5c26-4f3f-afff-83f971a99771">The Hosted Application uses the API to pull information from the Hosting System about the input data, including the location of the bulk pixel data.</para>
      </listitem>
      <listitem>
        <para xml:id="para_52b25bd4-929f-4ca5-9758-640eafca9698">The Hosted Application may use file I/O, memory mapping, or any other appropriate method to gain access to the bulk pixel data.</para>
      </listitem>
      <listitem>
        <para xml:id="para_3c777b5d-57d8-4891-8174-55495c030b95">The Hosted Application may also use the API to inform the Hosting System of the status of the processing, for example progress, any warnings or errors encountered.</para>
      </listitem>
      <listitem>
        <para xml:id="para_44f65e39-ab48-4484-a87e-ee88f9f298aa">The Hosting System might use the API to suspend or cancel processing in the Hosted Application.</para>
      </listitem>
      <listitem>
        <para xml:id="para_69113e88-4f74-4ae7-a404-2622e3dee20f">If the Hosting System suspended processing in the Hosted Application, it may use the API to instruct the Hosted Application to resume processing.</para>
      </listitem>
      <listitem>
        <para xml:id="para_c7fbd9f9-723c-4508-b92d-d47370129e53">The Hosted Application, as it processes the input data, might create output objects, and use the API to inform the Hosting System of their existence.</para>
      </listitem>
      <listitem>
        <para xml:id="para_4badf58b-bb9c-4b1e-9c36-510cbd9c0fe1">The Hosting System uses the API to pull information about the output objects from the Hosted Application, including the location of the bulk data.</para>
      </listitem>
      <listitem>
        <para xml:id="para_3f814fd8-fcf7-45b1-b665-98236a1d63c1">The Hosting system might use file I/O, memory mapping, or any other appropriate method to gain access to the output bulk data, if needed.</para>
      </listitem>
      <listitem>
        <para xml:id="para_e2160eda-49eb-46f3-9c59-2d224b7182a1">Once the Hosting System has pulled the output data from the Hosted Application, it uses the API to instruct the Hosted Application to wait for the next processing task (i.e., tells the Hosted Application to idle).</para>
      </listitem>
      <listitem>
        <para xml:id="para_5cc66d7d-432e-4700-8de6-799b64d26497">If the Hosting System has another task for the Hosted Application to perform, it may use the API to start that task, following this sequence of events beginning at Step 3.</para>
      </listitem>
      <listitem>
        <para xml:id="para_8d50bb91-d895-4354-806c-d7325b25044a">When the Hosting System no longer needs the Hosted Application, it may use the API to request that the Hosted Application exit.</para>
      </listitem>
    </orderedlist>
    <para xml:id="para_c992eab3-7d4c-43b3-94be-469a2244e05f">
<xref linkend="chapter_7" xrefstyle="template:Section %n"/> describes in greater detail the Hosted Application Life Cycle.</para>
    <para xml:id="para_fbee96c2-9648-4be5-9027-c00398502f57">
<xref linkend="chapter_8" xrefstyle="template:Section %n"/> describes the base interfaces between the Hosting System and the Hosted Application.</para>
    <para xml:id="para_992bb6af-ab8f-4fe5-a079-8e6be7fc2c82">
<xref linkend="chapter_9" xrefstyle="template:Section %n"/> describes the custom data types and data structures used by the interfaces.</para>
    <para xml:id="para_a24ede22-3bc0-4319-9606-01728c0d0127">
<xref linkend="chapter_10" xrefstyle="template:Section %n"/> describes the general form of models used by the model-based interfaces, and the conventions used in defining those models. The models defined by this Standard are described in the Annexes.</para>
  </chapter>
  <chapter label="7" status="1" xml:id="chapter_7">
    <title>Hosted Application Life Cycle</title>
    <section label="7.1" status="2" xml:id="sect_7.1">
      <title>Initialization</title>
      <para xml:id="para_bc45b6f6-e95e-4148-82e4-07c0c596ec62">The Hosting System initializes a Hosted Application by issuing a run command or its equivalent (e.g exec function in the C language) with command line parameters to specify the end point references (URLs) to be used for the interfaces. One end point reference is used by the Hosted Application to access the Host interface provided by the Hosting System. The second end point reference is where the Hosting System will look for the Application interface provided by the Hosted Application. The Host and Application interfaces are described in <xref linkend="chapter_8" xrefstyle="template:Section %n"/>. If issued from a command prompt or shell, the run command may appear as:</para>
      <para xml:id="para_f06f29b6-a033-40f8-9327-4eda0741e14d">
<emphasis role="italic">app</emphasis>--hostURL
  <emphasis role="italic">url1</emphasis>--applicationURL
  <emphasis role="italic">url2</emphasis>
</para>
      <note>
        <orderedlist>
          <listitem>
            <para xml:id="para_1d21c244-35bc-47f7-a0cd-bfddcb36c416">In this startup methodology, it is the Hosting System, not the Hosted Application that specifies both URLs. The Hosted Application must respond at the URL assigned to it by the Hosting System.</para>
          </listitem>
          <listitem>
            <para xml:id="para_62dc2fcc-94cc-430f-bf81-a29574b46b43">A Hosted Application implementation where the Hosted Application runs remotely or on an application server might utilize a startup or proxy application to appropriately map between the URL provided by the Hosting System and the actual URL that the Hosted Application is using.</para>
          </listitem>
        </orderedlist>
      </note>
      <para xml:id="para_d4d90f42-54e6-40fe-9184-9df2342404a0">
<xref linkend="figure_7.1-1" xrefstyle="select: label"/> shows a sequence diagram of Hosted Application initialization. Once the Hosted Application has initialized and is ready to begin processing data, it changes its state to IDLE and notifies the Hosting System of the state change using a call to the notifyStateChanged() method, thus informing the Hosting System that the Hosted Application is ready to go.</para>
      <para xml:id="para_b060ed7a-a2be-466a-a149-6cdb3f73d312">
        <figure label="7.1-1" pgwide="1" xml:id="figure_7.1-1">
          <title>Hosted Application Initialization Sequence</title>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/PS3.19_7.1-1.svg"/>
              <!--<imagedata fileref="part19_fromword_files/image004.png"/>-->
            </imageobject>
          </mediaobject>
        </figure>
      </para>
    </section>
    <section label="7.2" status="2" xml:id="sect_7.2">
      <title>States</title>
      <para xml:id="para_cf7706cf-625b-4333-9868-10cef85eb325">
<xref linkend="figure_7.2-1" xrefstyle="select: label"/> shows the state diagram for a Hosted Application. The states are defined in <xref linkend="table_7.2-1" xrefstyle="select: label"/>.</para>
      <table frame="box" label="7.2-1" rules="all" xml:id="table_7.2-1">
        <caption>States</caption>
        <thead>
          <tr valign="top">
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_f9b1385c-36f4-4087-a7cf-a3be65d139ad">State</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_06bf0470-b200-4408-99ee-d1bc52c89690">Description</para>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_a1ef5706-ee33-4828-8678-8ed943439551">IDLE</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_57dbdafe-b5b7-458f-94e4-22a15025b0ce">In IDLE state the Hosted Application is waiting for a new task assignment from the Hosting System. This is the initial state when the Hosted Application starts.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_043c11bd-440f-483e-b0d6-8296743bcc67">INPROGRESS</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_3d15eeb8-6512-4eac-8bb7-ecc64204dccf">The Hosted Application is performing the assigned task.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_f2c8ee3f-05bc-4e58-b10a-a9f4d5701b1a">SUSPENDED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_44ee17de-ed9a-49eb-bf94-6c1f08fe13c3">The Hosted Application is stopping processing and is releasing as many resources as it can, while still preserving enough state to be able to resume processing.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_a414de0b-91c8-45ce-8849-cc4968a841ec">COMPLETED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_d193420d-af31-4877-bd5e-2a3f900179aa">The Hosted Application has completed processing, and is waiting for the Hosting System to access and release any output data from Hosted Application.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_3533e16c-ec8b-4b02-827f-c3d352765e80">CANCELED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_e8252a73-c9d3-4599-bc63-2b70f8121309">The Hosted Application is stopping processing, and is releasing all resources with no chance to resume processing.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_95962938-78fa-4fee-9e3c-acb9da136deb">EXIT</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_5b203c7c-10e9-483e-8644-c38a7c42fe65">The terminal state of the Hosted Application.</para>
            </td>
          </tr>
        </tbody>
      </table>
      <para xml:id="para_46a37bc6-c989-4f69-b40b-3e5056fd003a">The transitions between states are described in <xref linkend="table_7.2-2" xrefstyle="select: label"/>.</para>
      <table frame="box" label="7.2-2" rules="all" xml:id="table_7.2-2">
        <caption>Transitions Between States</caption>
        <thead>
          <tr valign="top">
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_79a2a252-58ea-4921-95e0-b60f78630b51">State</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_9593169e-1974-40cb-bc0f-286ba01b34b8">Trigger</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_592ca29d-8b60-447d-a5bb-dd582bac5de2">New State</para>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_235df627-dd20-4f6a-83ee-02dd58d8f16e">not started</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_5f387009-e398-4e35-bfb5-5c8f5a6baa97">Hosting System launches the Hosted Application (e.g., run, exec).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_29995d68-e646-4c3c-a12c-9b021060ede9">IDLE</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_6e9abdd9-27f7-409b-9fc7-65df0362427c">IDLE</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_43c3790d-6377-4289-8973-0225a92eb823">Hosting System calls Application.setState (EXIT).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_ce3db93e-c2ae-48fd-9aa6-de7748f7c3e4">EXIT</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_aad9fbed-c984-44c4-b089-5af643282001">IDLE</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_9db11932-8d60-4ffe-931c-1ad22a507f59">Hosting System calls Application.setState (INPROGRESS).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_f8a6fb5b-8531-45df-8da7-e314a631bb71">INPROGRESS</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_847b1798-048c-468d-8a09-a87f880c1ab3">INPROGRESS</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_d9495a1e-c098-410c-bf22-733143bb6903">Hosting System calls Application.setState (SUSPENDED).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_fec76d16-205a-4d54-857c-d4403223ed71">SUSPENDED</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_94bcfb29-bf61-4cd7-8deb-57af88b0bf1f">INPROGRESS</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_fbb096ca-6b07-4e21-83e3-4733dc1af589">Hosting System calls Application.setState (CANCELED).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_7e0c7d8d-7045-476b-a9c5-44cb5ad6608f">CANCELED</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_049ff52d-c06a-4035-80cd-3102bbff409c">INPROGRESS</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_22af1ea9-77fb-4a81-afb5-69963a5d7d85">Hosted Application encounters an error that prevents further processing, but is still healthy enough to perhaps start another task. The Hosted Application shall report this error through a call to notifyStatus() with a statusType of FATALERROR prior to transitioning to the CANCELED state.</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_83c57f7e-1280-486a-a0c9-f65a47069abf">CANCELED</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_a0a642f8-7993-4501-bda8-ec4a17c240c2">INPROGRESS</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_1bf92147-148c-494d-98db-fe34a32b1926">Hosted Application finishes its processing.</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_c3c090d8-529d-4a0e-8fce-1bd696d99dd8">COMPLETED</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_cebfc724-56e4-44df-b1e9-5206ec39a118">SUSPENDED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_fa494ecf-f6ff-41d2-aa89-f9ef9ebbac95">Hosting System calls Application.setState (INPROGRESS).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_3f978737-e5d5-4f25-8fb6-dff666177e4e">INPROGRESS</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_8742343d-c74f-44d1-8fdf-c8b3581d1f17">SUSPENDED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_27b05cb7-d3af-42d7-bed2-b3a4493ac70b">Hosted Application encounters an error (e.g., during suspension) that prevents further processing, but is still healthy enough to perhaps start another task. The Hosted Application shall report this error through a call to notifyStatus() with a statusType of FATALERROR prior to transitioning to the CANCELED state.</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_54438197-f0ce-4eae-875d-28b2a45ba8dd">CANCELED</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_861dce81-0f1d-47dd-b648-737ae5830e40">SUSPENDED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_069427b8-cee6-44c9-9c31-00ba9b293947">Hosting System calls Application.setState (CANCELED).</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_f5bae716-577b-4e62-bc9e-79a72f40c9a1">CANCELED</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_1f2fd4ec-f0d7-435c-9e87-041107fb68cd">COMPLETED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_f9d70d15-58d5-44e6-aafe-cb7fbf85de84">Hosting System calls Application.setState (IDLE), after capturing all pertinent output data from the Hosted Application.</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_a381b5b5-b334-4b08-b54a-6070c5f79d7f">IDLE</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_b4ae7389-3efb-4ba3-8253-3ef1d9cc51e6">CANCELED</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_2de220ed-5ba0-4d5b-a897-2195caca5466">Hosted Application releases all resources and is ready for the next task.</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_472c283a-de99-4341-a50b-fc072d7a3dda">IDLE</para>
            </td>
          </tr>
        </tbody>
      </table>
      <para xml:id="para_ce473f9f-bcaa-430c-965f-234d6e885a0a">The Hosted Application notifies the Hosting System of all state transitions by calling the notifyStateChanged() method.</para>
      <note>
        <para xml:id="para_09dd7fb1-a735-49ff-aa19-efe582fa2c23">If a Hosted Application does not respond to state change requests made by the Hosting System, the Hosting System may 'hard abort' the Hosted Application in some implementation specific manner, such as by killing the process in which the Hosted Application is executing.</para>
      </note>
      <para xml:id="para_702bb76e-dc46-4687-8afb-ad0f5eb79649">
        <figure label="7.2-1" pgwide="1" xml:id="figure_7.2-1">
          <title>State Diagram of Hosted Applications.</title>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/PS3.19_7.2-1.svg"/>
              <!--<imagedata fileref="part19_fromword_files/image006.png"/>-->
            </imageobject>
          </mediaobject>
        </figure>
      </para>
    </section>
  </chapter>
  <chapter label="8" status="1" xml:id="chapter_8">
    <title>Interfaces</title>
    <para xml:id="para_a4f892aa-ae60-4a96-9bfd-a55ced7cd29c">There are three base interfaces defined in this Part, as shown in <xref linkend="figure_8-1" xrefstyle="select: label"/>. One, named "Application", represents the Hosted Application, and is utilized by the Hosting System to control the Hosted Application. The second, named "Host", represents the Hosting System, and is utilized by the Hosted Application to request services from and to notify the Hosting System of events during the execution of the Hosted Application. The third, named "DataExchange" is an interface used by both the Hosting System and the Hosted Application to communicate information about the data to be exchanged. Thus, the entire Hosted Application ("ApplicationService") implementation consists of the combination of the "Application" and "DataExchange" base interfaces, while the entire Hosting System ("HostService") implementation consists of the combination of the "Host" and "DataExchange" base interfaces.</para>
    <para xml:id="para_d8541448-2b7e-4d6b-ae33-00bac2ac25dd">The interfaces are defined as a set of methods using Web Services Description Language (WSDL). The implementers shall change the end point references (i.e., the "location" XML Attribute within the "address" XML Element within the "port" XML Elements of a "service" XML Element) in the WSDL specification as needed to deploy Hosted Applications and Hosting Systems that utilize these interfaces.</para>
    <note>
      <para xml:id="para_ba67698e-a766-45bd-a717-4dd0376fa3c4">The major (non-backward compatible) versions of the interfaces are reflected in the values of the "name" and "targetNamespace" XML Attributes of the "definitions" XML Element in the WSDL specification of the interfaces. Any changes to the interfaces that are not backward compatible will utilize new values for "name" and "targetNamespace" XML Attributes of the "definitions" XML Element.</para>
    </note>
    <para xml:id="para_af2c2f0d-9b1e-4567-aa95-524bf392c696">Minor (backward compatible) versions of the interfaces may be reflected in the values of the "targetNamespace" XML Attribute of any new "schema" XML Element where new input or output data types are defined in the WSDL specifications, and/or in the values of the "name" XML Attributes of the "portType" and "service" XML Elements where new messages and operations are associated as new services in the WSDL specifications of the interfaces. To maintain backward compatibility, the names of existing elements, messages, and operations in the WSDL specification of the interfaces remain the same.</para>
    <para xml:id="para_ae8116af-9df7-4cca-943b-4b2e40bb8748">These methods utilize a set of basic data types and more complex data structures to communicate parameters, which are defined using XML Schemas. Later sections of this document provide more detailed descriptions of the interfaces and data structures, along with sequence diagrams illustrating how the interfaces are used.</para>
    <para xml:id="para_11691288-c00c-4db8-9d56-a5c73984f818">The actual WSDL code and XML Schemas that specify this interface are defined in <xref linkend="chapter_B" xrefstyle="template:Annex %n"/>.</para>
    <note>
      <orderedlist>
        <listitem>
          <para xml:id="para_a8ff233d-1327-46bd-99f0-f018d6afdfdb">WSDL is a platform and programming language independent means of specifying an interface between two cooperating applications. The applications need not be written in the same programming language.</para>
        </listitem>
        <listitem>
          <para xml:id="para_2bca762a-5eb6-45f6-bd17-59528367fd19">The interfaces do not directly address reporting of SOAP communications problems. If a problem occurs in the communications between the Hosting System and a Hosting Application during the execution of a WSDL interface call, this should be reported by the SOAP libraries utilized by an implementation, e.g., thrown as an exception.</para>
        </listitem>
      </orderedlist>
    </note>
    <para xml:id="para_e5e30f86-f6a2-467e-9751-64bae1366d08">
      <figure label="8-1" pgwide="1" xml:id="figure_8-1">
        <title>Diagram of the Interface Between the Hosting System and the Hosted Application</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="figures/PS3.19_8-1.svg"/>
            <!--<imagedata fileref="part19_fromword_files/image008.png"/>-->
          </imageobject>
        </mediaobject>
      </figure>
    </para>
    <section label="8.1" status="2" xml:id="sect_8.1">
      <title>Application Interface</title>
      <para xml:id="para_b6acf307-2550-4224-abde-f84db87ae64b">The following sections describe the methods of the Application interface.</para>
      <section label="8.1.1" status="3" xml:id="sect_8.1.1">
        <title>getState() : State</title>
        <para xml:id="para_566c5f46-4c1e-472d-a1f5-9b7c696a366e">The Hosted Application returns its current state to the caller.</para>
        <para xml:id="para_af001314-917b-41e8-9e40-d60eeb72ad2a">This method may be called at any time.</para>
        <note>
          <orderedlist>
            <listitem>
              <para xml:id="para_490bccc1-f54b-4072-a955-2383c4848596">A Hosting System may use this method as an alternative to tracking Hosted Application state changes reported by the notifyStateChanged() method call.</para>
            </listitem>
            <listitem>
              <para xml:id="para_58e786ea-9852-4dac-bb24-61e8eec7a3d9">A Hosting System may use this method to determine if a Hosted Application is still in operation (i.e., did not die without calling the notifyStateChanged() method with an EXIT state).</para>
            </listitem>
          </orderedlist>
        </note>
      </section>
      <section label="8.1.2" status="3" xml:id="sect_8.1.2">
        <title>setState(newState : State) : boolean</title>
        <para xml:id="para_22d122ed-62f9-4cbc-88c2-371c2b79cc5b">The Hosting System requests that the Hosted Application switch to the newState.</para>
        <para xml:id="para_bf2c1819-ca55-4c7e-a4f4-22686cbb6fb9">The Hosted Application returns TRUE from the method if the Hosted Application received the request, and the requested state change is allowed in the state diagram. Otherwise, the method returns FALSE. A return value of TRUE does not indicate that the state of the Hosted Application has changed to the newState; it merely indicates that the requested state change is valid, and will be made at the soonest opportunity. Once the Hosted Application switches to the requested state, it shall inform the Hosting System through the notifyStateChanged() method of the Host interface.</para>
        <note>
          <para xml:id="para_33d8c28a-a856-4b12-9b71-76514ce07dac">The asynchronous response to a state change is intended to minimize blocking the Hosting System while waiting for a potentially time-consuming state change in the application.</para>
        </note>
        <para xml:id="para_001e3800-95b8-42bc-823a-d445ba23be5e">The Hosted Application shall ignore any setState() and return TRUE when the Hosted Application is already in requested state (i.e., this is a repeated call with the same state).</para>
        <para xml:id="para_866a62d5-6d98-40e0-a6c1-9cb7cdd7f28c">If the Hosted Application receives a second setState() request for a different state prior to completing a previous request, then the Hosted Application shall abort or ignore the previous request, and begin processing the latest request.</para>
        <para xml:id="para_c9cc0814-8a61-479f-8184-0c0a1f990fcc">This method may be called at any time, however may not have any effect (other than a return of FALSE) if the requested new state is not an allowed transition from the current state.</para>
      </section>
      <section label="8.1.3" status="3" xml:id="sect_8.1.3">
        <title>bringToFront(requestedScreenArea : Rectangle) : boolean</title>
        <para xml:id="para_96f4a4c7-0378-4aca-9b6f-16482ecdaa00">By calling this method, the Hosting System is asking the Hosted Application to take whatever steps are needed to make its GUI visible as the topmost window, and to gain focus.</para>
        <para xml:id="para_58adbc60-708c-4a34-9cf6-7fa530bd10f1">If possible, the Hosted Application shall resize and reposition itself to the requestedScreenArea. If requestedScreenArea is missing or null, the Hosted Application may retain its current size and location on the screen.</para>
        <para xml:id="para_3a1409e8-8887-42bc-846a-8daa7db2f539">The method returns TRUE if the Hosted Application received the request and will act on it. Otherwise it returns FALSE.</para>
        <para xml:id="para_ed35d6df-74d0-4197-9630-9d221247921e">A Hosted Application shall act on this method if the Hosted Application is in the IDLE or INPROGRESS state. A Hosted Application is not required to act on this method if the Hosted Application is not in the IDLE or INPROGRESS state.</para>
        <para xml:id="para_630c3b04-13b1-4d31-9246-c44a29ed7352">A Hosted Application that has no GUI (e.g., a headless analysis application), where becoming visible and gaining focus has no meaning, shall always return TRUE from this method.</para>
      </section>
    </section>
    <section label="8.2" status="2" xml:id="sect_8.2">
      <title>Host Interface</title>
      <para xml:id="para_ee000d66-c453-4a17-869a-e83d1e094845">The following sections describe the methods of the Host interface.</para>
      <section label="8.2.1" status="3" xml:id="sect_8.2.1">
        <title>generateUID() : UID</title>
        <para xml:id="para_5cfed7af-451f-4052-9f8f-739888a4164d">Returns a newly created DICOM UID that the Hosted Application might use, e.g., to create new data objects and structures.</para>
        <para xml:id="para_d5fb4b0e-b55a-46e9-ab14-a0d7147a6c58">This method may be called at any time.</para>
      </section>
      <section label="8.2.2" status="3" xml:id="sect_8.2.2">
        <title>getAvailableScreen(appPreferredScreen : Rectangle) : Rectangle</title>
        <para xml:id="para_6180f455-b8cc-4683-907e-1c7a04d1d259">The Hosted Application supplies its preferred screen size in the appPreferredScreen parameter. The Hosting System may utilize this information as a hint, but may return a window location and size that best suits the Hosting System's GUI.</para>
        <para xml:id="para_5d545c68-dadc-4713-9a3e-b6205792ee0f">The method returns the window location and size that the Hosting System would prefer that the Hosted Application utilize. However, there are no requirements that the Hosted Application act on that information.</para>
        <para xml:id="para_257ec091-4928-41c7-837f-75680cddd258">This method may be called at any time.</para>
      </section>
      <section label="8.2.3" status="3" xml:id="sect_8.2.3">
        <title>getOutputLocation(preferredProtocols: ArrayOfString) : String</title>
        <para xml:id="para_ad30a51c-b0d6-4d7e-85b4-d03edca038e3">The method returns a URI that a Hosted Application may use to store output that it may provide back to the Hosting System (e.g., in response to a getData() call).</para>
        <para xml:id="para_6859bc37-89e2-4f7b-b767-5bc23dcee5b6">The Hosted Application indicates, in order of preference, the protocols it can use to store data. The Hosted Application shall at least support both the http: and the file: protocols. The Hosting System selects the most appropriate protocol, potentially taking into account system or security considerations as well as the order of preference. The Hosting System uses the selected protocol in setting up the resources and generating the URI returned to the Hosted Application.</para>
        <note>
          <orderedlist>
            <listitem>
              <para xml:id="para_85b42d14-0943-4484-9bb9-41ee51d52c84">There may be limitations when using the http: protocol when compared to the file: protocol. Some functions that might work with a file: protocol such as seek, rewrite, and delete, may not work with the http: protocol. The Hosted Application should assume that it can only write once in sequential order when the returned output location uses the http: protocol.</para>
            </listitem>
            <listitem>
              <para xml:id="para_6754c6c2-170d-471e-990d-e34fe6a89841">If any authentication information is needed in order to access the data, this authentication information may be included in the URI.</para>
            </listitem>
          </orderedlist>
        </note>
        <para xml:id="para_245d4a00-e394-4f1b-abbc-3d91e1d8e781">The Hosting System shall keep the URI active while the Hosted Application is in any state other than IDLE or EXIT, or until such time that the Hosted Application returns the URI to the Hosting System (e.g., in an ObjectLocator returned to the Hosting System in response to a getData() call). The disposition of the data that the Hosted Application sends to this URI is the responsibility of the Hosting System after the Hosted Application transitions to the IDLE state or after the Hosted Application returns the URI to the Hosting System (e.g., in an ObjectLocator returned to the Hosting System in response to a getData() call). After the Hosted Application transitions to IDLE state, the Hosting System need not keep the URI active.</para>
        <para xml:id="para_2be5d790-fb40-47bb-abf8-50e5cb8fe1a5">The Hosted Application shall only call this method if the Hosted Application is at the INPROGRESS or COMPLETED states.</para>
      </section>
      <section label="8.2.4" status="3" xml:id="sect_8.2.4">
        <title>notifyStateChanged(state : State) : void</title>
        <para xml:id="para_1d4aa28e-5917-4f0e-a742-18296c192501">The Hosted Application shall invoke this method each time the Hosted Application successfully transitions to a new state. The new state is passed in the state parameter.</para>
        <note>
          <para xml:id="para_1d5e2485-a267-4e72-8fac-d785d6bcd66f">While all Hosting Systems need to accept this interface call method, they may track the current Application State in other ways, such as by polling for the state using the Application getState() method.</para>
        </note>
      </section>
      <section label="8.2.5" status="3" xml:id="sect_8.2.5">
        <title>notifyStatus(status : Status) : void</title>
        <para xml:id="para_e3c2cdd0-a5b3-4d61-9be0-2cc4dc06e9c4">The Hosted Application may inform the Hosting System of notable events that occur during execution by invoking this method, passing the information in the status parameter.</para>
        <note>
          <para xml:id="para_a3c42301-7a01-4f73-8640-6ea312491084">The Hosting System typically would log these events to facilitate debugging. It may, at its discretion, display the information to the user.</para>
        </note>
        <para xml:id="para_c1140093-80a0-4011-8aa5-cb6518880170">This method may be called at any time.</para>
      </section>
    </section>
    <section label="8.3" status="2" xml:id="sect_8.3">
      <title>DataExchange Interface</title>
      <para xml:id="para_4fbe0669-2d94-4c98-97ce-9446d8db2ea5">The interface used to exchange information about data being transferred between a source and a recipient is the same for both the Hosting System and the Hosted Application. Implementations of the Application interface shall also include the DataExchange interface. Implementations of the Host interface shall also include the DataExchange interface. In other words, the DataExchange interface is symmetric with respect to the Hosting System and Hosting Application.</para>
      <para xml:id="para_c39a09d8-58c0-460b-a806-916c59a95ee5">The data being exchanged between the Hosting System and the Hosted Application can either be passed as files, or may be described in models that might be queried by the recipient.</para>
      <para xml:id="para_732174e0-c383-4267-acb7-dff148ceb323">Recipients that can parse DICOM objects are able to request the file-based methods. The sequence diagram in <xref linkend="figure_8.3-1" xrefstyle="select: label"/> illustrates one potential exchange using the file-based methods.</para>
      <para xml:id="para_830caa13-856f-4b1f-bfc3-0db0d13ecbea">
        <figure label="8.3-1" pgwide="1" xml:id="figure_8.3-1">
          <title>Example File-based Data Exchange Sequence</title>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/PS3.19_8.3-1.svg"/>
              <!--<imagedata fileref="part19_fromword_files/image010.png"/>-->
            </imageobject>
          </mediaobject>
        </figure>
      </para>
      <para xml:id="para_68f71c15-928e-4eee-822b-0ce8b04aa5a7">The advantage of using the model-based methods is that the recipient need not know how to parse the data formats, but instead can use commonly available tools for manipulating XML Infosets to extract data from the models.</para>
      <para xml:id="para_5f65a46d-24c7-43d1-8e56-c9689948add0">The model-based interfaces can work with a variety of models. Particular models are identified by a UID. The models can either be an abstraction of the data, or can be a model of some native format. Models defined by the DICOM Standard are described in <xref linkend="chapter_A" xrefstyle="template:Annex %n"/>. Models are described as XML Infosets, even though the original data might never be actually represented in XML form. The source providing the data handles the mapping from the models back to the original data format.</para>
      <para xml:id="para_f971fe7b-4a34-4da6-b1ad-9f4e23dee73c">Abstract models allow a recipient to work with data without regard to what its native form is. For example, data from a variety of image formats, such as DICOM, TIFF, JPEG, NIfTI, or Analyze, could be included in an abstract image model. The recipient can then work with the data even though the recipient has no knowledge of how the data was natively represented. Abstract models may have been derived from data referenced in multiple ObjectDescriptors (e.g., multiple CT slices combined into a single volume).</para>
      <para xml:id="para_1c2bb654-189d-4bfa-b19f-c8e22c537202">Abstract models generally do not include the full richness of data that is available in native representations. For example, an abstract image model derived from DICOM data normally would include references to 'cooked' pixel data and its spatial organization, but might not include many of the modality-specific Attributes. To allow recipients to access such details the supplier of an abstract model can provide references to the ObjectDescriptors, in the form of UUIDs, from which that abstract model was derived. The recipient may gain access to any attribute of the original data formats through the source ObjectDescriptors.</para>
      <para xml:id="para_4b2d8c3c-dc8c-42c1-a796-7fb3ee21ca99">The sequence diagram in <xref linkend="figure_8.3-2" xrefstyle="select: label"/> illustrates one potential exchange using the model-based methods. It also illustrates the Hosted Application returning partial outputs, one potential way a Hosted Application might use the getOutputLocation() method, and potential uses of the releaseModel() and releaseData() methods.</para>
      <para xml:id="para_861ece5c-5ee3-4cbc-bd36-3b6e95d60eda">
        <figure label="8.3-2" pgwide="1" xml:id="figure_8.3-2">
          <title>Example Model-based Data Exchange Sequence (continued on next page)</title>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/PS3.19_8.3-2.svg"/>
              <!--<imagedata fileref="part19_fromword_files/image012.png"/>-->
            </imageobject>
          </mediaobject>
        </figure>
      </para>
      <para xml:id="para_11427150-c512-4c87-b3bf-977c9208aaa1">
        <figure label="8.3-2b" pgwide="1" xml:id="figure_8.3-2b">
          <title>Example Model-based Data Exchange Sequence (continued from previous page)</title>
          <mediaobject>
            <imageobject>
              <imagedata fileref="figures/PS3.19_8.3-2b.svg"/>
              <!--<imagedata fileref="part19_fromword_files/image014.png"/>-->
            </imageobject>
          </mediaobject>
        </figure>
      </para>
      <para xml:id="para_1424be15-7ead-4c57-9bc0-d55fa015c861">Hosting Systems shall support both the file-based and model-based interfaces, both as a data source as well as a data recipient.</para>
      <para xml:id="para_d3d5987c-9433-4304-9088-fcba70ed4c0c">Hosted Applications shall support at least one of the file-based or model-based interfaces, as either a data source or as a data recipient, as needed by the Hosted Application. If a Hosted Application supports the model-based interfaces, it shall support at least one of the models defined in <xref linkend="chapter_A" xrefstyle="template:Annex %n"/>. Hosted Applications may choose to implement only those portions of those interfaces that the Hosted Application actually uses; however, all interface methods that a Hosting System may call must be available for the Hosting System to call, even if the Hosted Application does not do anything but return appropriately.</para>
      <para xml:id="para_19510a82-df27-4513-8158-1f7b622140c8">The following sections describe the methods of the DataExchange interface.</para>
      <section label="8.3.1" status="3" xml:id="sect_8.3.1">
        <title>notifyDataAvailable(data : AvailableData, lastData : boolean) : boolean</title>
        <para xml:id="para_1cf64329-e554-4dce-a04c-57a12672719e">The source of the data calls this method with descriptions of the available data that it can provide to the recipient. If the source of the data expects that additional data will become available, it shall pass FALSE in the lastData parameter. Otherwise, it shall pass TRUE in the lastData parameter, and shall not make any further calls to notifyDataAvailable until after it has transitioned through the IDLE state once more.</para>
        <para xml:id="para_7a8dee06-83b3-4c56-b628-cb4b280bd5a9">The source of the data shall be able to provide the data in the form identified in the AvailableData structure.</para>
        <para xml:id="para_62a5c960-d797-4566-a25a-b2dcfa16c422">A Hosting System uses this method to inform a Hosted Application of input data that the Hosted Application should work with. A Hosted Application uses this method to inform the Hosting System of outputs produced by the Hosted Application.</para>
        <para xml:id="para_46ea4396-3865-4162-bfe8-3c2e1cf1f587">This method returns TRUE if the recipient of the data successfully received the AvailableData list. Otherwise this method returns FALSE.</para>
        <note>
          <para xml:id="para_9a03a622-6ded-4530-81b7-4d7e35f7786a">A Hosted Application that is recipient of this call, but that was unsuccessful in receiving the AvailableData list might report a reason for the failure in a notifyStatus method call.</para>
        </note>
        <para xml:id="para_dfe3dd26-6c2f-428a-9df5-6c2a30255484">The source of the data shall not include in AvailableData any references to data that were sent in a previous successful notifyDataAvailable call (i.e., one where the method call returned TRUE).</para>
        <para xml:id="para_9040a6a8-baa4-4b4f-8555-7aa1976743c8">A Hosted Application shall not transition into the COMPLETED state if it has received or sent a notifyDataAvailable() call with a lastData indicator of FALSE.</para>
        <para xml:id="para_f74f7f01-b2ba-44ae-b76b-7bce892dc7b2">The source of the data may call notifyDataAvailable() with an empty data list.</para>
        <note>
          <para xml:id="para_bf6d6050-c306-4be9-9c04-039aa24e44f5">Calling notifyDataAvailable() with an empty list is useful for setting the lastData indicator to TRUE.</para>
        </note>
        <para xml:id="para_b7870d53-86fd-4069-9054-d71ea5590947">This method shall only be called if the Hosted Application is at the INPROGRESS state.</para>
      </section>
      <section label="8.3.2" status="3" xml:id="sect_8.3.2">
        <title>getData(objectUUIDs : ArrayOfUUID, acceptableTransferSyntaxUIDs : ArrayOfUID, includeBulkData : boolean) : ArrayOfObjectLocator</title>
        <para xml:id="para_da2a9e4c-77f9-421e-81c1-b8932aba6997">The recipient of data invokes this method to gain access to binary data provided by the source of the data. The source of the data provides a URI that the recipient may open as a byte stream to retrieve the data.</para>
        <note>
          <para xml:id="para_cff6d16c-ed22-4688-a822-0254d54daa3c">The provider of the data may delay the actual preparation of binary data until the recipient actually requests it.</para>
        </note>
        <para xml:id="para_7abf0452-5dc7-4596-813a-f744f833ae26">The objectUUIDs array provides the UUIDs of the binary data that the source wishes to retrieve. Each of the UUIDs in that array are drawn either from the ObjectDescriptors provided in the AvailableData structure received by the recipient in one or more notifyDataAvailable() method calls, or from bulk data pointers in models accessed by the recipient.</para>
        <para xml:id="para_1410ba78-17d5-4d39-a699-ce196974e62b">If the UUID came from an ObjectDescriptor, the source returns ObjectLocators of the binary objects using the MIME content type and class UID listed in the ObjectDescriptor within the AvailableData structure associated with each UUID. If the UUID came from a Data Exchange Model, then the source returns the binary bulk data described within the model.</para>
        <para xml:id="para_d8a91b1b-9c34-462a-915c-1877da8a950f">The recipient lists the desired Transfer Syntax for the bulk data via the acceptableTransferSyntaxUIDs parameter. The recipient shall list in order of preference in the acceptableTransferSyntaxUIDs parameter the UIDs of the Transfer Syntaxes that it will accept for the data represented by objectUUIDs. The provider of the data shall select and use the first transfer syntax in the list that it supports. For DICOM data, the provider of data shall as a minimum support the Explicit VR Little Endian transfer syntax. The acceptableTransferSyntaxUIDs may be empty for those MIME content types where Transfer Syntax has no meaning.</para>
        <para xml:id="para_c7ff5b38-4630-4dc8-a942-26dd12f701c4">When retrieving binary data identified by a UUID from an ObjectDescriptor, if the recipient sets the includeBulkData flag to TRUE, then the source shall supply the bulk data within the data stream. Otherwise, the source may, but is not required to, omit bulk data such as pixel data.</para>
        <note>
          <para xml:id="para_2941049f-ef29-42f3-ba6d-c1dd9dc73fe6">The includeBulkData flag is useful, for example, when the recipient wishes to work with the description of the pixel data in binary DICOM form, in order to decide whether or not to retrieve the pixel data itself.</para>
        </note>
        <para xml:id="para_23d958f5-7ff1-4139-9e13-c83c6c664fcb">The method returns one ObjectLocator for each UUID passed into the method within the objectUUIDs array. The ObjectLocator describes a file where the recipient can read in the data referred to by that particular object's UUID.</para>
        <para xml:id="para_11eb6f98-1278-4a45-a652-80709f2e503a">When the recipient is finished with data referred to by an ObjectLocator URI, it may call the releaseData() method to free up the resources being consumed to provide those URIs. Any data references not explicitly released by the recipient of the data are released implicitly when the Hosted Application enters the IDLE state.</para>
        <para xml:id="para_e311aecb-1952-409b-a547-2825c77f6ccf">The recipient may call getData() multiple times for data referenced by a given ObjectDescriptor or bulk data UUID. Each call to getData() shall be matched by either an explicit or implicit call to releaseData().</para>
        <para xml:id="para_5861f21d-4910-4404-881d-3ffa5367d138">This method shall only be called if the Hosted Application is at the INPROGRESS or COMPLETED states. A Hosting System may also call this method when the Hosted Application is in the SUSPENDED state.</para>
      </section>
      <section label="8.3.3" status="3" xml:id="sect_8.3.3">
        <title>getAsModels(objectUUIDs : ArrayOfUUID, classUID : UID, supportedInfosetTypes : ArrayOfMimeType) : ModelSetDescriptor</title>
        <para xml:id="para_06495d56-0ef3-44f3-a708-9ea5f331e5b9">The recipient of data invokes this method to ask that the source of the data provide the data referenced by objectUUIDs array as models of the type referenced by classUID. The objectUUIDs are drawn from the ObjectDescriptors passed to the recipient of the data in one or more notifyDataAvailable() calls.</para>
        <para xml:id="para_d40734f9-5f9a-49e5-ac93-cb31a2595534">The recipient of the data shall list in supportedInfosetTypes in order of preference the MIME types that the recipient can process as Infosets. Recipients of data shall support the "text/xml" MIME type, which shall always be included in the supportedInfosetTypes array. The provider of data shall select the first entry in that array that it supports.</para>
        <para xml:id="para_f1fde9eb-ff55-448c-b45d-de996d0ca585">The ModelSetDescriptor returned by this method contains the UUIDs of the models provided by the source, as well as the UUIDs of data objects referred to by the objectUUIDs array that could not be represented in the requested model.</para>
        <para xml:id="para_2e8662ba-4ef3-48cc-a048-c119149db887">The recipient may call getAsModels() multiple times for data referenced by a given UUID. Each successful call returns a different model UUID.</para>
        <para xml:id="para_a667412f-7b58-445f-8c16-032b9994b1e6">When the recipient is finished with a set of models, it may call the releaseModels() method to free up the resources being consumed to provide those models. Any models not explicitly released by the recipient of the data are released implicitly when the Hosted Application enters the IDLE state.</para>
        <para xml:id="para_44b2a6dc-556d-4408-a5c5-efd387dfcbc5">This method shall only be called if the Hosted Application is at the INPROGRESS or COMPLETED states. A Hosting System may also call this method when the Hosted Application is in the SUSPENDED state.</para>
      </section>
      <section label="8.3.4" status="3" xml:id="sect_8.3.4">
        <title>queryModel(models : ArrayOfUUID, xpaths : ArrayOfString) : ArrayOfQueryResult</title>
        <para xml:id="para_9b92524f-dc73-47d5-9b4f-f9d60c57f4e0">The recipient of data invokes this method to request that the source of the data return the subset of data referred to in each of the XPath query strings passed in the xpath parameter from each of the models identified by the UUIDs passed in the model array. Each of the XPath query strings is applied to each of the models referred to in the model array.</para>
        <para xml:id="para_aef6bc30-b35a-44bc-89ec-71781b713203">The UUIDs passed in the model array shall be chosen from those returned by one or more getAsModels() method calls.</para>
        <para xml:id="para_9ed95488-8c09-4756-8588-95082ef0f6b4">The results of the query are returned by the method as XML Infosets, encoded in XML returned as a string. Each result from a particular model UUID is returned as a QueryResult element in the returned array for each xpath string. In other words, the number of QueryResults returned is the number of UUIDs in the model array times the number of XPath queries strings in the xpath array.</para>
        <note>
          <para xml:id="para_d0b58c17-b758-4f01-89ff-3cd3d269aff6">This method is principally used when the infoset type is "text/xml".</para>
        </note>
        <para xml:id="para_ec7218cd-0e45-4deb-af28-3e7a3f295e39">This method shall only be called if the Hosted Application is at the INPROGRESS or COMPLETED states. A Hosting System may also call this method when the Hosted Application is in the SUSPENDED state.</para>
      </section>
      <section label="8.3.5" status="3" xml:id="sect_8.3.5">
        <title>queryInfoset(models : ArrayOfUUID, xpaths : ArrayOfString) : ArrayOfQueryResultInfoset</title>
        <para xml:id="para_8a5040ac-6d2c-4129-b242-09c75c5b6374">The recipient of data invokes this method to request that the source of the data return the subset of data referred to in each of the XPath query strings passed in the xpath parameter from each of the models identified by the UUIDs passed in the model array. Each of the XPath query strings is applied to each of the models referred to in the model array.</para>
        <para xml:id="para_11e4714a-f4ee-4207-91b5-3de93a0a78c6">The UUIDs passed in the model array shall be chosen from those returned by one or more getAsModels() method calls.</para>
        <para xml:id="para_9ba3f503-def5-4b5d-81f9-50060f6ee26a">The results of the query are returned by the method as XML Infosets, encoded in XML, returned as a byte array encoded in the form negotiated during the getAsModel() call. Each result from a particular model UUID is returned as a QueryResultInfoset element in the returned array for each xpath string. In other words, the number of QueryResultInfoset structures returned is the number of UUIDs in the model array times the number of XPath queries strings in the xpath array.</para>
        <note>
          <para xml:id="para_9661c9a4-4ae5-4aa8-8164-25f9c50ccf00">This method is principally used when the infoset type is not string based, for example a "application/fastinfoset". If called on a model using the "text/xml" infoset type, a conversion from a byte array to a string would be needed.</para>
        </note>
        <para xml:id="para_b3fe27da-fb58-4c45-b867-d0599695cb6a">This method shall only be called if the Hosted Application is at the INPROGRESS or COMPLETED states. A Hosting System may also call this method when the Hosted Application is in the SUSPENDED state.</para>
      </section>
      <section label="8.3.6" status="3" xml:id="sect_8.3.6">
        <title>releaseData(objectUUIDs : ArrayOfUUID) : void</title>
        <para xml:id="para_7483314f-9d48-44c8-932a-c060fb495403">The recipient of data invokes this method to release access to binary data provided by the source of the data through a getData() call. The ArrayOfUUID identifies the data streams that the recipient is releasing. The UUIDs in this array shall be drawn from the locator fields in ObjectLocators returned by calls to getData().</para>
      </section>
      <section label="8.3.7" status="3" xml:id="sect_8.3.7">
        <title>releaseModels(objectUUIDs : ArrayOfUUID) : void</title>
        <para xml:id="para_feca284a-69cd-4ba0-81cc-f4f8ea828c54">The recipient of data invokes this method to release access to models provided by the source of the data. The ArrayOfUUID identifies the models that the recipient is releasing. The UUIDs in this array shall be drawn from the models fields in ModelSetDescriptors returned by calls to getAsModels().</para>
      </section>
    </section>
  </chapter>
  <chapter label="9" status="1" xml:id="chapter_9">
    <title>Data Types and Structures</title>
    <section label="9.1" status="2" xml:id="sect_9.1">
      <title>Arrayof[type]</title>
      <para xml:id="para_67d9eabd-542a-4623-8df7-b338485df826">A wrapper object representing the encapsulation of an array of a specific type. Used in parameters to and return values from API functions to enable cross-platform compatibility. The wrapper contains a single field, which is an array of the type being stored. The field name is the Type name with the first letter in lowercase instead of uppercase.</para>
      <note>
        <para xml:id="para_7bca757d-0cf1-4fca-8e07-487fa1ab1e27">This construct was needed to support Microsoft® .NET language bindings even though it looks ugly in Java.</para>
      </note>
    </section>
    <section label="9.2" status="2" xml:id="sect_9.2">
      <title>AvailableData</title>
      <para xml:id="para_e3ae86b2-04d2-4464-8bc6-d03369a79b69">A data structure that communicates what data is available to the recipient. The data is organized in a hierarchical fashion, communicating patients, studies, series, and finally ObjectDescriptors that identify available data objects. The fields in the data structure are:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_ed5e0b30-2f54-4429-b95e-b46161cde671">ObjectDescriptors : ObjectDescriptor[] - An array of ObjectDescriptor data structures listing data that either applies to multiple patients, or does not fit into the patient / study / series hierarchy.</para>
        </listitem>
        <listitem>
          <para xml:id="para_453be9cf-03b3-4bf1-a583-1465374585f0">Patients : Patient[] - An array of Patient data structures.</para>
        </listitem>
      </itemizedlist>
      <section label="9.2.1" status="3" xml:id="sect_9.2.1">
        <title>ObjectDescriptor</title>
        <para xml:id="para_6f12c764-1f82-45de-b0e4-b31755a45c36">A data structure with the following fields:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_3be93090-5660-4bb1-911f-f4355d35d592">DescriptorUUID : UUID - the UUID that the interface utilizes to track this particular data object.</para>
          </listitem>
          <listitem>
            <para xml:id="para_be83e678-d5bc-4279-ac27-361e346ae83a">MimeType : MimeType - the MIME content type of this particular data object, in its most natural form available from the source. The most natural form is typically the form in which the source maintains the data in its database, for example a DICOM file.</para>
          </listitem>
          <listitem>
            <para xml:id="para_9331c4b7-eae4-4444-9c90-b6a2f0ca30f1">ClassUID : UID - the UID that represents the class of this data object in the form described by mimeType. For objects whose mimeType refers to a data exchange model such as those defined in <xref linkend="chapter_A" xrefstyle="template:Annex %n"/>, this is the UID of that model. For objects whose mimeType is application/dicom, this is the SOP Class UID of the DICOM object. This may be empty for those objects whose MIME content types have no additional classes.</para>
          </listitem>
          <listitem>
            <para xml:id="para_543f6b1d-47ca-40ab-a8f2-22f8a447e37c">TransferSyntaxUID : UID - the UID that represents the Transfer Syntax of this data object in the form described by mimeType. This may be empty for those objects of a MIME content type where Transfer Syntax has no meaning.</para>
          </listitem>
          <listitem>
            <para xml:id="para_5c098e01-aae4-4300-8799-daea63e9b0fe">Modality : String - the modality that best represents where this data originated from. Standard values are drawn from the Defined Terms listed for the Modality (0008,0060) Attribute in the <olink targetdoc="PS3.3" targetptr="sect_C.7.3.1.1.1" xrefstyle="select: docname label quotedtitle"/>.</para>
          </listitem>
        </itemizedlist>
      </section>
      <section label="9.2.2" status="3" xml:id="sect_9.2.2">
        <title>Patient</title>
        <para xml:id="para_3189c1d6-357d-4a09-bda3-b576b875342d">A data structure that communicates data for a particular patient. The fields in the data structure are:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_192b2783-f8f1-4cde-afd1-c59ecb283e18">Name : String - The name of the patient, formatted as described for the PN VR in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>. For DICOM SOP Instances this is the value of the Patient's Name (0010,0010) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_bbd9f4b3-b031-441c-b826-58d235511a15">ID : String - A string used as the identifier for a particular patient, formatted as described for the LO VR in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>. For DICOM SOP Instances this is the value of the Patient ID (0010,0020) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_440c91b8-0330-4e5f-8450-928b0b451736">AssigningAuthority : String - The organization who assigned the id to the patient, formatted as described for the LO VR in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>. For DICOM SOP Instances this is the value of the Issuer of Patient ID (0010,0021) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_6cbf80d5-b529-4509-a5d4-1c73353d9ea7">Sex : String - The sex of the patient. For DICOM SOP Instances this is the value of the Patient's Sex (0010,0040) Attribute. In all other cases it shall take on the values permissible for the DICOM Sex (0010,0040) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_6899ce73-8d68-4ab3-ad13-33d87439daec">BirthDate: String The birth date of the patient, formatted as described for the DA VR in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>. For DICOM SOP Instances this is the value of the Patient's Birth Date (0010,0030) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_4349935e-c92e-41e7-8931-4f6d9841353c">ObjectDescriptors : ObjectDescriptor[] - An array of ObjectDescriptor data structures listing data that applies to this patient, but that do not apply to any particular study of this patient.</para>
          </listitem>
          <listitem>
            <para xml:id="para_636a44db-1bca-4433-8181-3d6b08c73f0d">Studies : Study[] - An array of Study data structures.</para>
          </listitem>
        </itemizedlist>
        <para xml:id="para_118474fb-b980-4cdf-9e44-848eeab262f1">At least one of objectDescriptors or studies shall be present.</para>
      </section>
      <section label="9.2.3" status="3" xml:id="sect_9.2.3">
        <title>Study</title>
        <para xml:id="para_41c2060f-8b01-4765-b4c0-8b4186a16dba">A data structure that communicates data for a particular study. The fields in the data structure are:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_125faed1-cbec-4927-a9a5-053b843b64f3">StudyUID : UID - The UID of the study. For DICOM SOP Instances this is the value of the Study Instance UID (0020,000D) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_5985dc54-6c1a-460c-a28f-083b2fb062fc">ObjectDescriptors : ObjectDescriptor[] - An array of ObjectDescriptor data structures listing data that applies to this study (within the enclosing patient), but that do not apply to any particular series within this study.</para>
          </listitem>
          <listitem>
            <para xml:id="para_c56fa335-677f-4825-90e2-0192e9c8e201">Series : Series[] - An array of Series data structures.</para>
          </listitem>
        </itemizedlist>
      </section>
      <section label="9.2.4" status="3" xml:id="sect_9.2.4">
        <title>Series</title>
        <para xml:id="para_b3be8a3f-22bd-4614-92d8-2ef85a65dcdb">A data structure that communicates data for a particular series. The fields in the data structure are:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_2d50dc82-e6ff-4bfd-bbff-0e413fd7814f">SeriesUID : UID - The UID of the series. For DICOM SOP Instances this is the value of the Series Instance UID (0020,000E) Attribute.</para>
          </listitem>
          <listitem>
            <para xml:id="para_adf1d8ef-b6b1-4b73-860e-75d4147ce3bc">ObjectDescriptors : ObjectDescriptor - An array of ObjectDescriptor data structures listing data existing in this series (within the enclosing Study, within the enclosing Patient).</para>
          </listitem>
        </itemizedlist>
        <note>
          <para xml:id="para_b1696ec2-9ba2-4dea-8ec9-3d8f5138b92b">Most DICOM Composite SOP Instances would be identified by objectDescriptors at the Series level.</para>
        </note>
      </section>
    </section>
    <section label="9.3" status="2" xml:id="sect_9.3">
      <title>MimeType</title>
      <para xml:id="para_6f25802f-7779-40e5-82de-1757183e812c">A data type whose values are Defined Terms that identify particular MIME content types. The syntax of the string defining a MIME content type is defined in <xref linkend="biblio_RFC_2045"/>. Top level MIME content types are defined in <xref linkend="biblio_RFC_2046"/>. MIME content types are drawn from the list managed by the Internet Assigned Numbers Authority (IANA) whose web site is at <link xl:href="http://www.iana.org/assignments/media-types/"/>, as described in <xref linkend="biblio_RFC_2048"/>.</para>
    </section>
    <section label="9.4" status="2" xml:id="sect_9.4">
      <title>ModelSetDescriptor</title>
      <para xml:id="para_0abe174b-0a76-48b9-bc6e-fad0ff3d721d">A data structure returned from the getAsModels() method with the following fields:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_8745e505-e3eb-4fe2-8053-5c7c8ca9f550">InfosetType : MimeType - the MIME type of the infoset, selected by the source of the data from the list passed to it by the recipient in a getAsModels() call.</para>
        </listitem>
        <listitem>
          <para xml:id="para_e1822e65-d008-403a-a1ae-ad9f0ef4b79e">Models : UUID[] - an array of UUIDs referring to models that have been created from the set of data objects referred to by the array of UUIDs passed into the getAsModels() call.</para>
        </listitem>
        <listitem>
          <para xml:id="para_3f9d8e38-fa27-4133-a3b3-60a3ee9e7df7">FailedSourceObjects : UUID[] - an array of UUIDs designating data objects referred to the array of UUIDs passed into the getAsModels() call that could not be represented in the requested model class.</para>
        </listitem>
      </itemizedlist>
      <note>
        <para xml:id="para_8dedd82b-3a87-4931-9716-f5bdac0e9bca">For example, if the array of UUIDs passed into the getAsModels() call includes 100 CT slices from the same frame of reference (i.e., a volume stack), plus 1 GSPS object, and if the caller requested an Abstract Multi-Dimensional Image model, then the ModelSetDescriptor returned by GetAsModels() would include one UUID in the models array, identifying the CT volume image data created from the 100 CT slices, and one UUID in the failedSourceObjects array, specifying the UUID for the GSPS object.</para>
      </note>
    </section>
    <section label="9.5" status="2" xml:id="sect_9.5">
      <title>ObjectLocator</title>
      <para xml:id="para_3af47307-ae9a-49b5-8460-f1e89188459c">A data structure that represents the location from which the recipient of a data object can retrieve that object. It consists of the following fields:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_e34d5319-c5a4-4d4d-b3f4-d85cda73fb60">Locator : UUID - the UUID that the interface utilizes to track this particular ObjectLocator.</para>
        </listitem>
        <listitem>
          <para xml:id="para_1c356e0b-9003-4bdb-ae15-c53606a372f2">Source : UUID - the UUID of the source that is supplying data for this ObjectLocator. This UUID matches the UUID in the ObjectDescriptor if trying to retrieve the data in its natural form (e.g., as a file or byte stream). This UUID matches the UUID in a bulk data pointer when retrieving bulk data from a model.</para>
        </listitem>
        <listitem>
          <para xml:id="para_e0cdcd8f-104b-4f36-85af-72af383157b6">TransferSyntax : UID - the transfer syntax in which this data is encoded, selected by source of the data from the list passed in by the recipient of the data in the acceptableTransferSyntaxUIDs parameter of the getData() call. This may be empty for those objects of a MIME content type where Transfer Syntax has no meaning.</para>
        </listitem>
        <listitem>
          <para xml:id="para_576588ce-dd24-453a-a2d4-de8d8d8c8e88">Length: long - the length of the data object referred to by the UUID.</para>
        </listitem>
        <listitem>
          <para xml:id="para_a7c1dd4a-2d32-4c45-b617-654ec959318b">Offset: long - the offset within the file or byte stream where the data object begins.</para>
        </listitem>
        <listitem>
          <para xml:id="para_4d62c791-04b6-4ccb-a575-9d380d67240d">URI: URI - the URI that identifies the resource from which the recipient might retrieve the data object, typically but not limited to a file on the local file system. The recipient shall be able to access the data within the object using file IO or memory mapping.</para>
        </listitem>
      </itemizedlist>
    </section>
    <section label="9.6" status="2" xml:id="sect_9.6">
      <title>QueryResult</title>
      <para xml:id="para_267f2ad8-36e1-49bd-a9d3-d962082cd850">A data structure that holds the results from an XPath query of a model. It consists of the following fields:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_46699683-9785-4687-9706-a9173c64cb04">Model : UUID - the UUID of the model from which this result came.</para>
        </listitem>
        <listitem>
          <para xml:id="para_93c715af-b7ac-4ad2-8976-8650ddeef1e0">XPath : String - the XPath query string that led to this result.</para>
        </listitem>
        <listitem>
          <para xml:id="para_11bd0e8c-a6d2-4da7-a666-5723dfbd323c">Results : XPathNode[] - an array of XPathNodes holding the query results.</para>
        </listitem>
      </itemizedlist>
    </section>
    <section label="9.7" status="2" xml:id="sect_9.7">
      <title>QueryResultInfoset</title>
      <para xml:id="para_9f26e91a-cf6d-43ec-9bcc-7a15ca52535c">A data structure that holds the results from an XPath query of a model. It consists of the following fields:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_19f656b3-4077-4907-b4f0-e0ed7d2f91b2">Model : UUID - the UUID of the model from which this result came.</para>
        </listitem>
        <listitem>
          <para xml:id="para_032523fe-eb13-4f86-8444-78ee985e090d">XPath : String - the XPath query string that led to this result.</para>
        </listitem>
        <listitem>
          <para xml:id="para_b865489c-bd40-48f4-8c77-584b724a03af">Results : XPathNodeInfoset[] - an array of XPathNodeInfoset structures holding the query results.</para>
        </listitem>
      </itemizedlist>
    </section>
    <section label="9.8" status="2" xml:id="sect_9.8">
      <title>Rectangle</title>
      <para xml:id="para_f6570dec-037e-4eb3-a52c-c7c3918ecfff">A data structure that defines a rectangular region on a display screen. The fields in the data structure are:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_ab02bb80-527e-455c-8ba7-abb76e6af08b">RefPointX : int</para>
        </listitem>
        <listitem>
          <para xml:id="para_f5b38eb8-3fcd-44a5-876f-40dca90230a9">RefPointY : int</para>
        </listitem>
      </itemizedlist>
      <para xml:id="para_695e4ed9-23db-4fbc-ba6c-38d916e2facc">that define the location of the top left corner of the region in screen coordinates, and</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_517dc005-2c74-432e-825d-2c1677656e02">Width : int</para>
        </listitem>
        <listitem>
          <para xml:id="para_790283d4-46a1-4577-915c-21ac44e4d19f">Height : int</para>
        </listitem>
      </itemizedlist>
      <para xml:id="para_d892c5f3-bde1-4fe0-80a7-9488ccdb8ae8">that specify the extents of the region. Screen coordinates are defined starting from an origin of 0,0 in the upper left corner of the screen, and extend in the positive direction down and to the right.</para>
    </section>
    <section label="9.9" status="2" xml:id="sect_9.9">
      <title>State</title>
      <para xml:id="para_4f9aa2e2-5aae-4d91-91ae-f7217ddf7aba">State is an enumerated data type with the following values:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_df7dd1dc-dcc2-4645-a1ff-7262410a0d4b">IDLE</para>
        </listitem>
        <listitem>
          <para xml:id="para_0b945036-e225-4d47-ab53-65c5a4844f7b">INPROGRESS</para>
        </listitem>
        <listitem>
          <para xml:id="para_680d11b9-4436-4477-84b5-66d9b08c8814">COMPLETED</para>
        </listitem>
        <listitem>
          <para xml:id="para_b69d03d2-4eec-46da-90dd-a38fe71722d9">SUSPENDED</para>
        </listitem>
        <listitem>
          <para xml:id="para_5437c625-32b8-4a75-928e-601316e5f304">CANCELED</para>
        </listitem>
        <listitem>
          <para xml:id="para_3deaf943-d542-4989-9a22-9169d01602a3">EXIT</para>
        </listitem>
      </itemizedlist>
      <para xml:id="para_3b935812-3204-4d8c-9b62-9c123bb50825">The interpretation of these enumerated values is defined in section7.2 States.</para>
    </section>
    <section label="9.10" status="2" xml:id="sect_9.10">
      <title>Status</title>
      <para xml:id="para_3cf1dd9d-ba6b-4e5d-bac9-287948543fec">A data structure with the following fields:</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_a65fa473-8b0b-479f-8288-8001f84b8aeb">StatusType : StatusType - the severity level of this status message.</para>
        </listitem>
        <listitem>
          <para xml:id="para_c1c5d39a-02cb-443d-a658-74e19ca131eb">CodingSchemeDesignator : String - the coding scheme in which the codeValues are defined. The use of codeValue shall be consistent with the use of the DICOM Code Value (0008,0100) Attribute as specified in <olink targetdoc="PS3.3" targetptr="PS3.3" xrefstyle="select: labelnumber"/>.</para>
        </listitem>
        <listitem>
          <para xml:id="para_e2598583-403f-46e3-988d-a9b84b5a1ec0">CodeValue : String - the particular code value within the designated coding scheme that represents the nature of this status message. The use of message shall be consistent with the use of the DICOM Code Meaning (0008,0104) Attribute as specified in <olink targetdoc="PS3.3" targetptr="PS3.3" xrefstyle="select: labelnumber"/>.</para>
        </listitem>
        <listitem>
          <para xml:id="para_030a2b64-8cef-4f38-8746-461cdc65b59a">CodeMeaning : String - a displayable string for the code value. The use of message shall be consistent with the use of the DICOM Code Meaning (0008,0104) Attribute as specified in <olink targetdoc="PS3.3" targetptr="PS3.3" xrefstyle="select: labelnumber"/>.</para>
        </listitem>
        <listitem>
          <para xml:id="para_c9aec1b4-de66-4169-b666-a5bd715ce699">Any other field from the Coded Terminology macro defined in <xref linkend="sect_10.1" xrefstyle="select: label"/>.</para>
        </listitem>
      </itemizedlist>
      <section label="9.10.1" status="3" xml:id="sect_9.10.1">
        <title>StatusType</title>
        <para xml:id="para_946c3b98-1a11-49c2-a4fb-c847f915267b">An enumerated data type with the following values and definitions:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_331f56f1-ea7e-4ff3-9458-b7eae34c9bc9">INFORMATION - the status is for informational purposes only.</para>
          </listitem>
          <listitem>
            <para xml:id="para_d0c838f3-ecdc-4212-84bb-2e70cbc283ea">WARNING - indicates a condition that might impact the speed or quality of the work done by the Hosted Application, but that does not prevent the Hosted Application from completing its task.</para>
          </listitem>
          <listitem>
            <para xml:id="para_9acd2966-6e61-4efb-9db8-86a84af0ce2f">ERROR - indicates a condition that might prevent the Hosted Application from correctly completing its task. The Hosted Application will attempt to continue.</para>
          </listitem>
          <listitem>
            <para xml:id="para_732f8846-f70e-4914-8c7d-5b64a1c8dba1">FATALERROR - indicates a condition that prevents the Hosted Application from completing its task. The Hosted Application will not attempt to continue, and will transition automatically to the CANCELED state.</para>
          </listitem>
        </itemizedlist>
      </section>
    </section>
    <section label="9.11" status="2" xml:id="sect_9.11">
      <title>UID</title>
      <para xml:id="para_b225bf5a-98f3-4063-986e-cb4efa0480c7">A string of period-separated digits representing a Unique Identifier (see <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>), formatted as described for the UI VR in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
    </section>
    <section label="9.12" status="2" xml:id="sect_9.12">
      <title>UUID</title>
      <para xml:id="para_4227a96d-b674-4d3d-9873-3bd8ec6f8072">A string representing a Universally Unique Identifier as defined in <xref linkend="biblio_ITU-T_X.667"/>, using the hexadecimal representation form.</para>
    </section>
    <section label="9.13" status="2" xml:id="sect_9.13">
      <title>XPathNode</title>
      <para xml:id="para_44141972-b366-463b-b6d9-16f1c7bc2e7b">A data structure with the following fields, which represents the output from an XPath query of a model, returned in a string-based representation.</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_94a4dd66-c29d-42dc-a359-2b54a0964865">NodeType : XPathNodeType</para>
        </listitem>
        <listitem>
          <para xml:id="para_1f98d95b-3931-46ac-b505-b740fef17fd5">Value : String</para>
        </listitem>
      </itemizedlist>
    </section>
    <section label="9.14" status="2" xml:id="sect_9.14">
      <title>XPathNodeInfoset</title>
      <para xml:id="para_6655770e-dfdd-4a3c-9d6d-72614cda6846">A data structure with the following fields, which represents the output from an XPath query of a model returned in a byte array representation.</para>
      <itemizedlist>
        <listitem>
          <para xml:id="para_01da35be-a87a-40d1-baa0-822085ab1efc">NodeType : XPathNodeType</para>
        </listitem>
        <listitem>
          <para xml:id="para_fcab5b72-2cab-4741-a837-10f8526f7fc8">InfosetValue : byte[]</para>
        </listitem>
      </itemizedlist>
    </section>
    <section label="9.15" status="2" xml:id="sect_9.15">
      <title>XPathNodeType</title>
      <para xml:id="para_e30ab4ce-2866-4ed1-90ac-5bba5604495a">An enumeration of the types of results that may come back from an XPath query.</para>
      <note>
        <para xml:id="para_aa37a2cf-3c9c-4a8b-b220-1c635e3ba443">This enumeration is compatible with a similar enumeration utilized in the Microsoft .NET framework.</para>
      </note>
      <itemizedlist>
        <listitem>
          <para xml:id="para_0d8df8e4-22e7-467a-9a67-d357bb48268c">Root - the result is the top level node of the XML Infoset (i.e., the result is the entire XML Infoset).</para>
        </listitem>
        <listitem>
          <para xml:id="para_1784a0af-8fc1-4f1f-be76-529dcead2b47">Element - the result is an XML Element within the XML Infoset (i.e., the result is a subset of the XML Infoset).</para>
        </listitem>
        <listitem>
          <para xml:id="para_724e4a02-5ab9-4e1b-9448-9f610973c1ca">Attribute - the result is an XML Attribute of an XML Element within the XML Infoset.</para>
        </listitem>
        <listitem>
          <para xml:id="para_e801e5ba-024f-4456-8636-3726802f09ec">Text - the result is the textual content of an XML Element within the XML Infoset. Equivalent to the Document Object Model (DOM) Text and CDATA node types. Contains at least one character.</para>
        </listitem>
        <listitem>
          <para xml:id="para_4555f084-e831-4f67-a522-199bc7d88ede">SignificantWhitespace - the result is the content of an XML Element within the XML Infoset, where the content consists only of significant whitespace (e.g., xml:space was set to preserve). White space code points are SPACE (U0020), TAB (U0009), CARRIAGE RETURN (U000D), or LINE FEED (U000A) of ISO 10646 (Unicode).</para>
        </listitem>
        <listitem>
          <para xml:id="para_4438f592-440e-4893-aa7e-d2b39f3a76cb">Whitespace - the result is the content of an XML Element within the XML Infoset, where the content consists only of whitespace. White space code points are SPACE (U0020), TAB (U0009), CARRIAGE RETURN (U000D), or LINE FEED (U000A) of ISO 10646 (Unicode).</para>
        </listitem>
        <listitem>
          <para xml:id="para_e743e01e-c88f-428b-a568-20d570bf710e">Comment - the result is a comment within the XML Infoset.</para>
        </listitem>
        <listitem>
          <para xml:id="para_418f4684-ddf0-4f6d-b854-38b6fd69cc1e">Namespace - the result is a namespace directive within the XML Infoset.</para>
        </listitem>
        <listitem>
          <para xml:id="para_30ccb91a-10d5-4611-b949-e5885fe49cba">ProcessingInstruction - the result is a processing instruction within the XML Infoset.</para>
        </listitem>
        <listitem>
          <para xml:id="para_530b472e-dc5d-4a20-82fb-4cdbc452b5a2">All - the result may contain any of the types defined in XPathNodeType.</para>
        </listitem>
      </itemizedlist>
    </section>
  </chapter>
  <chapter label="10" status="1" xml:id="chapter_10">
    <title>Data Exchange Model Conventions</title>
      <para xml:id="para_8ad752ab-a6b7-4fbf-974b-a2742b4c53b2">Models that can be used by the model-based DataExchange interface methods are defined in <xref linkend="chapter_A" xrefstyle="template:Annex %n"/>. These models are defined in the form of XML Schemas written in Relax NG Compact form of DSDL as specified by <xref linkend="biblio_ISOIEC19757-2"/>.</para>
    <note>
      <para xml:id="para_c8ffb849-e867-4381-af7c-9f2db7abcfab">An implementer may translate the Relax NG Compact form to other forms for use within their implementation as long as the exchanged XML Infosets will validate against the schema specified by the Standard.
          For example, a particular implementation may internally utilize a schema with stronger validation rules (e.g., using Schematron rules as specified in <xref linkend="biblio_ISOIEC19757-3"/>, or using W3C XML Scheme Definition (XSDL) Language <xref linkend="biblio_XSD1"/> with assertion rules) as long as the XML produced for exchange over the interface can be parsed with the schema specified in the Standard,
          and that XML from well-formed DICOM objects produced by the schema specified in the Standard can still be utilized by the implementation's internal schema.</para>
    </note>
    <para xml:id="para_1382fb35-5962-46c9-9c5f-267e35d87ff1">Actual instances of the models are XML Infosets. <xref linkend="chapter_A" xrefstyle="template:Annex %n"/> follows the following conventions in describing models.</para>
    <note>
      <orderedlist>
        <listitem>
          <para xml:id="para_e6395e49-2d19-4f86-a427-009d213edfa7">The models are defined via XML schemas to allow the use of commonly available tools to manipulate and navigate the model. For example, an XPath statement can be used to identify portions of interest within the model such as a particular DICOM Attribute and extract it.</para>
        </listitem>
        <listitem>
          <para xml:id="para_64ac38be-ec73-424b-ae97-9c4605921149">Some implementations may parse directly from the incoming object, which may not be in XML form, into an internal representation, such as the domain object model (DOM) without ever having converted the object to XML.</para>
        </listitem>
      </orderedlist>
    </note>
    <para xml:id="para_b77edfbb-abe1-4e8e-a726-f36c0801fd87">Within each model description is a table of XML Elements and XML Attributes used to describe an XML Infoset of that model. These tables utilize the following conventions:</para>
    <orderedlist numeration="arabic">
      <listitem>
        <para xml:id="para_d7ac3663-aeb5-42e5-868a-6b9f1bde5906">XML Element names (listed in the first column) are in CamelCase, with the first letter capitalized.</para>
      </listitem>
      <listitem>
        <para xml:id="para_9487ed40-b145-4dbd-a755-6e92fc999209">XML Attribute names (listed in the first column) are in camelCase with the first letter in lower case.</para>
      </listitem>
      <listitem>
        <para xml:id="para_97a42e5d-0c53-42f3-a94e-f82002bb4957">XML Element and XML Attribute names with a set of "&gt;" characters in front of them are nested within the first preceding XML Element with one fewer "&gt;" characters in front of its name. A nested XML Attribute is associated with the immediately enclosing XML Element.</para>
      </listitem>
      <listitem>
        <para xml:id="para_5d307500-046b-47c5-89d3-7b9cd11740cf">The entries in the "Optionality" column have the following interpretations:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_50c6d285-1e90-4124-9242-c8fd80f48057">"R" indicates that the XML Element or XML Attribute is required in all models.</para>
          </listitem>
          <listitem>
            <para xml:id="para_84bffc26-1ddc-4f69-986d-38d72f6a2514">"C" indicates that the XML Element or XML Attribute is required in all models if the condition stated in the Description is met.</para>
          </listitem>
          <listitem>
            <para xml:id="para_433f09ba-0718-4ea5-a569-3225b985244d">"O" indicates that the XML Element or XML Attribute is optional.</para>
          </listitem>
          <listitem>
            <para xml:id="para_99c87ed0-bd2a-47cd-9b18-a0e7adcc2e86">If the XML Element or XML Attribute is nested inside another XML Element, and that enclosing XML Element is not present (i.e., it is defined with an Optionality of "O" and is not present in the XML Infoset, or it is defined with an Optionality of "RC" and is not included in the XML Infoset because the condition was not met), then the nested XML Element or XML Attribute shall not be present in the XML Infoset irrespective of its optionality.</para>
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <para xml:id="para_1420919d-44b3-4db3-a69d-dc8fa0ed2bcd">The entries in the "Cardinality" column have the following interpretations:</para>
        <itemizedlist>
          <listitem>
            <para xml:id="para_a7e32366-2cf8-4a40-a37a-9e308ccb594c">"A" indicates that this is represented as an XML Attribute instead of an XML Element, hence has a cardinality of 1 by definition.</para>
          </listitem>
          <listitem>
            <para xml:id="para_0933d179-01fa-4f80-920c-ef241ab57cd0">"1" indicates that only a single instance of this XML Element is included inside the immediately enclosing XML Element, or at the top level if this XML Element is not nested inside another XML Element.</para>
          </listitem>
          <listitem>
            <para xml:id="para_e8840f59-2a67-492c-8e25-0aebfa3b8d09">"0-n" indicates that zero to n instances of this XML Element are included inside the immediately enclosing XML Element, or at the top level if this XML Element is not nested inside another XML Element.</para>
          </listitem>
          <listitem>
            <para xml:id="para_9aed43a4-6900-4156-a344-bb1994a3cb88">"1-n" indicates that one to n instances of this XML Element are included inside the immediately enclosing XML Element, or at the top level if this XML Element is not nested inside another XML Element.</para>
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <para xml:id="para_d5f1485a-d7cc-4847-a4b4-71f2eb15e55b">Sets of XML Elements and XML Attributes that are often repeated within models may be defined as macros. Macros that may have general applicability are defined in this section. Macros that are unique to a particular model may be defined in the Annex specific that model. When a macro is included within a table, it is as if the contents of the Macro's table were inserted within the table referencing the macro. Any set of "&gt;" characters in front of the directive to include a Macro in the table are prepended to the XML Element and XML Attribute names listed in the Macro's table.</para>
      </listitem>
    </orderedlist>
    <section label="10.1" status="2" xml:id="sect_10.1">
      <title>Coded Terminology</title>
      <para xml:id="para_9785058b-0e31-400c-8b13-4ea2fba6ed49">Models may make use of coded terminology. The representation of coded terminology in DICOM is described in <olink targetdoc="PS3.3" targetptr="PS3.3" xrefstyle="select: labelnumber"/>. Specific terminology of interest, organized in Context Groups in <olink targetdoc="PS3.16" targetptr="PS3.16" xrefstyle="select: labelnumber"/>, can be referenced using the following macro.</para>
      <table frame="box" label="10.1-1a" rules="all" xml:id="table_10.1-1a">
        <caption>Basic Coded Terminology Macro</caption>
        <thead>
          <tr valign="top">
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_f1ef9dc9-d10a-4367-a285-6bb965d3bb52">Name</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_d81925a5-7754-42e0-baec-af409000b16e">Optionality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_577eb8ca-fcf6-4f81-a874-2d7ebed3d3b0">Cardinality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_868ffae2-3e62-4551-84b8-cf7dd599da5c">Description</para>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_074ea902-02df-4fa5-b6da-494b899f8023">CodeValue</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_aa711c1e-f8f9-4fcb-8426-6ecb1950c395">R</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_499ec1e8-2aa7-4eda-9de8-de68da32ec23">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_8c663cff-5279-46b5-ba62-d3fd6cf97df1">The particular code value identifying the referenced term or concept. See <olink targetdoc="PS3.3" targetptr="sect_8.1" xrefstyle="select: docname label"/>.</para>
              <para xml:id="para_73c570b0-96f4-4b50-b375-957e6551a8d7">The same XML Element CodeValue is used regardless of the length or encoding of the code value. I.e., separate XML elements are not used when the value is obtained from Long Code Value (0008,0119) or URN Code Value (0008,0120) rather than Code Value (0008,0100).</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_fdb4d799-cc81-4b3b-adea-3f1a8faf4cda">CodingSchemeDesignator</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_267c2dd8-ff3d-4978-94ef-d95ef3c7b739">R</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_07948428-41fb-4db6-beca-e4a42c15bccc">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_15e192cb-d3c9-4c5f-8d5b-c8d6da5a2513">Designates the coding scheme in which the CodeValue is defined. See <olink targetdoc="PS3.3" targetptr="sect_8.2" xrefstyle="select: docname label"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_7db32274-13ff-4e95-a9b7-fabab1560927">CodingSchemeVersion</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_6a4d8f13-e31a-4961-a032-e49e4f6a5cb9">C</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_f385d955-580f-48a1-87da-941583162f5d">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_cd99db1e-e6ea-4430-b5d2-dfecf41c8ea7">See <olink targetdoc="PS3.3" targetptr="sect_8.2" xrefstyle="select: docname label"/>. Required if the CodingSchemeDesignator is not sufficient to identify the CodeValue unambiguously. May be present otherwise.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_e91e0947-5e7f-4623-8eba-5231a950e913">CodeMeaning</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_eeea049c-8bb4-4254-ab21-d4eff39af424">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_0bf41d38-a003-4bcc-91f0-aac8d8646339">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_2c7a07d7-65f2-4bc3-b5d1-994fc5c25733">A brief human readable description of what the coded value means. See <olink targetdoc="PS3.3" targetptr="sect_8.3" xrefstyle="select: docname label"/>.</para>
            </td>
          </tr>
        </tbody>
      </table>
      <table frame="box" label="10.1-1b" rules="all" xml:id="table_10.1-1b">
        <caption>Enhanced Coded Terminology Macro</caption>
        <thead>
          <tr valign="top">
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_3649e480-f99f-4069-b0a9-14ba19645ac9">Name</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_85d47e72-e16b-4536-87cc-b8fc08853570">Optionality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_b2907bc6-a6d0-4f41-953c-6887c824ae1b">Cardinality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_7d53170e-a753-4fd0-a91c-369f2bc591e6">Description</para>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_ca06f0d5-c2a9-4f90-a9ad-a2899d54a47f">ContextIdentifier</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_3ff6fea8-5130-4ed0-8408-402131947151">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_ea4768d8-ba30-4ee2-ba0b-c12ba53b228f">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_484323f4-791a-4bae-a2e4-581eb5f1e6c4">Identifies a Context Group defined within a Mapping Resource from which the values of CodeValue and CodeMeaning were selected or have been added as a Private Context Group extension. See <olink targetdoc="PS3.3" targetptr="sect_8.6" xrefstyle="select: docname label"/> and <olink targetdoc="PS3.3" targetptr="sect_8.7" xrefstyle="select: docname label"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_af8a0873-b7eb-457f-ab1f-900714bbe3c9">ContextUID</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_7f6c9955-7b0b-4918-b09e-cba927a0932e">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_bbea5ba1-faeb-4143-98ab-6953d284f151">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_eb10228a-1cca-48b7-adb5-5c26939b9bef">Uniquely identifies the Context Group. See <olink targetdoc="PS3.3" targetptr="sect_8.6" xrefstyle="select: docname label"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_6a358d39-a749-4d92-a761-90af8dc13c19">MappingResource</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_6a363b19-dc18-4c37-a03c-6f1f71703b53">C</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_8ebe1785-9f36-4bbd-a186-b177337d82b7">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_1b2a2774-18d5-4112-aee8-c487b735e534">See <olink targetdoc="PS3.3" targetptr="sect_8.4" xrefstyle="select: docname label"/>. Required if ContextIdentifier is present.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_c573d71e-c334-49e5-8568-c6922e294a72">MappingResourceUID</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_8f6f4cd9-6157-4ead-8107-ba88787a69f4">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_df504b47-1e2c-407c-a6d1-6c19ce81fd79">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_01b330a6-1eff-4f03-86a1-7d577ab87240">Uniquely identifies the Mapping Resource that defines the Context Group.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_9df0fdb8-b299-458f-b56c-42bca2e220c2">MappingResourceName</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_b856239b-74a1-44e9-b393-6381cd049e8e">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_1ce544f3-04a5-496b-9a96-bf8ac135c057">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_be217ca6-b108-4263-ab29-25a6619d11c0">Name of Mapping Resource like name of an Institution or Organization.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_23743bf8-0692-4062-92db-7854644f0d0e">ContextGroupVersion</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_fdc89174-df9a-4954-b741-22114ce2e7e0">C</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_c77d2c8e-f34f-4570-85d0-ba85c01b1108">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_82f12656-7c0a-4718-95de-cd4a15300fe9">See <olink targetdoc="PS3.3" targetptr="sect_8.5" xrefstyle="select: docname label"/>. Required if ContextIdentifier is present.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_b74e0011-a3fa-4f4d-8e04-c41d199a0742">ContextGroupExtensionFlag</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_e029c45e-814e-42cb-be41-13e832591075">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_11a4c63b-237c-4e3b-aaff-048ad9604ef3">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_4a2ab442-aec1-4b8e-8d48-dd540f9e2ecd">Indicates whether the Coded Term is selected from a private extension of the Context Group identified in the ContextIdentifier. See <olink targetdoc="PS3.3" targetptr="sect_8.7" xrefstyle="select: docname label"/>.</para>
              <para xml:id="para_6e37185b-e03e-41ef-9fca-42ac3666ee59">Enumerated Values:</para>
              <para xml:id="para_4279c8a2-a6bc-4f9f-8661-d10d95cef8eb">"Y"</para>
              <para xml:id="para_1e9baf7c-de84-4ba6-ae24-968ccad1daf8">"N"</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_2fcd52f3-6431-48c3-aa6b-b01cfb1e953a">ContextGroupLocalVersion</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_21cdf24a-06a6-461e-93d9-7d99036a69fb">C</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_96905295-f223-4cd0-9eec-cccdae3de5c9">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_97282976-433a-4448-902b-18789dd9841c">See <olink targetdoc="PS3.3" targetptr="sect_8.7" xrefstyle="select: docname label"/>. Required if the value of ContextGroupExtensionFlag is "Y".</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_340e00e2-a846-4070-8bc2-73ab0ded51bb">ContextGroupExtensionCreatorUID</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_81937289-650d-4aab-b136-aa61a2122b7c">C</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_247c410e-ef70-4311-ab9e-238bb9ebb133">1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_13b7a0d6-bfac-49f0-b97e-625ca9d15505">Identifies the person or organization who created an extension to the Context Group. See <olink targetdoc="PS3.3" targetptr="sect_8.7" xrefstyle="select: docname label"/>.</para>
              <para xml:id="para_6ec925d7-0d84-429e-99cc-385285fc739b">Required if the value of contextGroupExtensionFlag is "Y".</para>
            </td>
          </tr>
        </tbody>
      </table>
      <table frame="box" label="10.1-1" rules="all" xml:id="table_10.1-1">
        <caption>Coded Terminology Macro</caption>
        <thead>
          <tr valign="top">
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_153779d4-ecba-4546-a739-e74f5859fd2e">Name</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_ae91176c-776e-42a7-832b-f4806270bc56">Optionality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_274b141a-0bf2-4601-a880-aaf184655744">Cardinality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_e4e6e2c3-89ef-4aa3-912f-5b76375930e3">Description</para>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr valign="top">
            <td align="left" colspan="4" rowspan="1">
              <para xml:id="para_032a2da8-b98a-4f1e-a446-abe370c17cdd">
                <emphasis role="italic">BASIC CODED ENTRY ATTRIBUTES</emphasis>
              </para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="4" rowspan="1">
              <emphasis role="italic">Include <xref linkend="table_10.1-1a" xrefstyle="select: label"/>
</emphasis>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_4bfed16e-6208-4732-93c6-fa936437aa73">DicomAttribute that encodes EquivalentCodeSequence</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_e8777da7-23d2-44b3-8ce4-852fdc433849">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_4d45e044-3f0b-43b8-96c9-71aba88ce3ae">0-1 with 1-n Item</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_6b590eae-0d19-46d2-b00c-34fa3053fe74">Codes that are considered equivalent by the creating system.</para>
              <para xml:id="para_52b10eba-9912-4415-a818-9c0fb2c723c2">See <olink targetdoc="PS3.3" targetptr="sect_8.9" xrefstyle="select: docname label"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="4" rowspan="1">
              <emphasis role="italic">&gt;Include <xref linkend="table_10.1-1a" xrefstyle="select: label"/>
</emphasis>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="4" rowspan="1">
              <emphasis role="italic">&gt;Include <xref linkend="table_10.1-1b" xrefstyle="select: label"/>
</emphasis>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="4" rowspan="1">
              <para xml:id="para_fe3b2ef5-7e56-4fe8-81f3-0a3450ff9cae">
                <emphasis role="italic">ENHANCED ENCODING MODE</emphasis>
              </para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="4" rowspan="1">
              <emphasis role="italic">Include <xref linkend="table_10.1-1b" xrefstyle="select: label"/>
</emphasis>
            </td>
          </tr>
        </tbody>
      </table>
    </section>
    <section label="10.2" status="2" xml:id="sect_10.2">
      <title>Person Name Components</title>
      <para xml:id="para_1538bdea-b674-4d91-b1a5-d22c224eb206">The Person Name Components follow the definitions given in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> of the DICOM Standard. The <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> description of the usage of Person Name Components also applies to this macro.</para>
      <table frame="box" label="10.2-1" rules="all" xml:id="table_10.2-1">
        <caption>Person Name Components Macro</caption>
        <thead>
          <tr valign="top">
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_b3d6862d-990b-4797-b717-1c652247ed2b">Name</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_f4f0175b-d138-4563-b089-73571a3e0258">Optionality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_6e5688e7-b92a-4a2b-834f-5a7c0e1a86df">Cardinality</para>
            </th>
            <th align="center" colspan="1" rowspan="1">
              <para xml:id="para_73c419da-e73b-4e00-b344-60d9bbe05b45">Description</para>
            </th>
          </tr>
        </thead>
        <tbody>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_eddb8472-dc6f-4bfb-b94c-bdf40d379785">FamilyName</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_c42bcd7b-68a8-469a-a729-f81acd67c93b">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_db16ccb0-87dd-4555-a4d5-715bdbea561b">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_c61fa1cc-6ba0-4819-ae30-6a4ca38246aa">The person's family or last name. See the description of the PN VR in DICOM <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_af528889-17cc-4a6a-aed9-f5481f1601d0">GivenName</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_281d6962-f094-4d6d-ac9c-1ffb1f7a1b70">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_cb187eff-aeb7-41ea-ac44-cc631bd8cc32">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_3e60c863-836f-4f14-a408-179dfd52bef6">The person's given or first names. See the description of the PN VR in DICOM <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_fc948efe-70d0-4cc0-9291-cc2f37aba91e">MiddleName</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_3e838d5f-95bd-4e32-a93b-74abcb23401e">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_1eb4203a-c576-4f34-bf8c-4e06d6111aba">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_020ac882-afb1-472b-bf30-6917d1d3f31b">The person's middle names. See the description of the PN VR in DICOM <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_d1191b94-1039-4f07-a3bd-98bb0df5f4ed">NamePrefix</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_3f42477b-e5a5-483d-a28b-769675cc7d1e">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_e0e34ce2-4ae2-4d17-a22d-36c398ee5519">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_49fb2161-d46b-4ec8-afd7-f328ec620f27">The person's name prefix. See the description of the PN VR in DICOM <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
            </td>
          </tr>
          <tr valign="top">
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_5419a6f3-d6f5-480c-929c-ca33b5765a74">NameSuffix</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_0d1b33fc-908f-45de-a388-dbbd0e1a4963">O</para>
            </td>
            <td align="center" colspan="1" rowspan="1">
              <para xml:id="para_afe5e483-7c9f-495a-b5c4-b09970187d8d">0-1</para>
            </td>
            <td align="left" colspan="1" rowspan="1">
              <para xml:id="para_2c38e1c5-fb77-4d86-9d9c-71c8997bdcef">The person's name suffix. See the description of the PN VR in DICOM <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
            </td>
          </tr>
        </tbody>
      </table>
    </section>
  </chapter>
  <chapter label="A" status="1" xml:id="chapter_A">
    <title>Data Exchange Models</title>
    <section label="A.1" status="2" xml:id="sect_A.1">
      <title>Native DICOM Model</title>
      <section label="A.1.1" status="3" xml:id="sect_A.1.1">
        <title>Usage</title>
        <para xml:id="para_70a6281c-dd00-4724-9b6c-4349e9a347b3">The Native DICOM Model defines a representation of binary-encoded DICOM SOP Instances as XML Infosets that allows a recipient of data to navigate through a binary DICOM data set using XML-based tools instead of relying on tool kits that understand the binary encoding of DICOM.</para>
        <note>
            <orderedlist>
                <listitem>
                    <para xml:id="para_94007198-f168-4973-b2f4-12b7a636e4f6">It is not the intention that this form be utilized as the basis for other uses. This form does not take advantage of the self-validation features that could be possible with a pure XML representation of the data.</para>
                </listitem>
                <listitem>
                    <para xml:id="para_f16d9e41-83f1-4ed4-81ea-84cd6dd679c9">As per the XML standard, XML tags are case sensitive.
                        The case convention for elements is an upper case initial letter, camel case.
                        The case convention for attributes is a lower initial letter, camel case.
                        Keywords referenced in the XML schema are the DICOM title case from the definitions in <olink targetdoc="PS3.6" targetptr="PS3.6" xrefstyle="select: labelnumber"/>.</para>
                </listitem>
            </orderedlist>
         </note>
          <para xml:id="para_a8115fff-75ff-415c-ab58-0ea9147bb66a">With the exception of padding to an even byte length,
              a data source that is creating a new instance of a Native DICOM Model
              (e.g., the result from some analysis application) shall follow the DICOM encoding rules
              (e.g., the handling of character sets) in creating Values for the DicomAttributes within the instance of the Native DICOM Model.
              Attribute Values encoded in a Native DICOM Model are not required to be padded to an even byte length.</para>
        <para xml:id="para_7dc8dcaf-f53d-49cd-8570-4d9993788825">Group Length (gggg,0000) attributes shall not be included in a Native DICOM Model instance.</para>
        <para xml:id="para_8d20e0b7-09d7-44b4-841a-7ad8690364e0">A data recipient that converts data from an instance of the Native DICOM Model
            back into a binary encoded DICOM object shall adjust the padding to an even byte length as necessary to meet the encoding rules specified in DICOM
            <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>.</para>
      </section>
      <section label="A.1.2" status="3" xml:id="sect_A.1.2">
        <title>Identification</title>
        <para xml:id="para_c32bc1e8-a10e-4aa6-b9d6-917e2bacaf24">The ObjectDescriptors MIME content type for the Native DICOM Model shall be "application/x-dicom.native".</para>
        <para xml:id="para_f49fab43-2f5d-4ab0-8643-ad7f26d30355">The ObjectDescriptors class UID for the Native DICOM Model shall be "1.2.840.10008.7.1.1".</para>
      </section>
      <section label="A.1.3" status="3" xml:id="sect_A.1.3">
        <title>Support</title>
        <para xml:id="para_4269045c-f019-4d8f-a9f1-63015a82368a">Support of the Native DICOM Model as both a data source and a data recipient shall be required of all Hosting Systems implementing the interface.</para>
        <para xml:id="para_18652955-2cec-4219-a7a2-a53ce3b4a673">Support of the Native DICOM Model as either a data source or a data recipient shall be optional for all Hosted Applications implementing the interface.</para>
      </section>
      <section label="A.1.4" status="3" xml:id="sect_A.1.4">
        <title>Information Model</title>
        <para xml:id="para_9b6153ac-5015-4fc4-a4cd-8568c0591ce5">A diagram of the Native DICOM Model appears in <xref linkend="figure_A.1.4-1" xrefstyle="select: label"/>.</para>
        <para xml:id="para_b68bd114-6859-45d7-a0ee-2394b7277e0b">
          <figure label="A.1.4-1" xml:id="figure_A.1.4-1">
            <title>Native DICOM Model</title>
            <mediaobject>
              <imageobject>
                <imagedata fileref="figures/PS3.19_A.1.4-1.svg"/>
                <!--<imagedata fileref="part19_fromword_files/figure_A.1.4-1.png"/>-->
              </imageobject>
            </mediaobject>
          </figure>
        </para>
      </section>
      <section label="A.1.5" status="3" xml:id="sect_A.1.5">
        <title>Description</title>
        <table frame="box" label="A.1.5-1" rules="all" xml:id="table_A.1.5-1">
          <caption>Native DICOM Model</caption>
          <thead>
            <tr valign="top">
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_8da58663-e6fd-41ef-a42f-cfa13356d1f3">Name</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_4e2f992b-9e74-42ec-ba33-ca8f6fdfc357">Optionality</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_829caf1a-25f1-485f-9b5d-d926602784f2">Cardinality</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_8a848bb1-407b-4f39-901d-3592ad1d07fa">Description</para>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_99992767-8ca8-4caf-8e2c-a8dcfc8d5708">NativeDicomModel</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_dc8e602f-e2cd-4181-a385-88f4c22f1041">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_14b9f55f-b161-4328-a021-a95621548a6d">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_a39f4ee5-2f43-4519-8b13-b9c88f6fbc67">An Infoset (as defined in W3C Recommendation XML Information Set "<link xl:href="http://www.w3.org/TR/xml-infoset/"/>") representing the content of a DICOM Data Set (as defined in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>).</para>
                <para xml:id="para_e89577b7-6741-40cc-9241-da3ac83a6f5b">The directivexml:space="preserve" shall be included.</para>
                <para xml:id="para_d4d92794-bff5-4b57-b3c3-597b3cb011ff">Examples include:</para>
                <itemizedlist>
                  <listitem>
                    <para xml:id="para_761a92ec-eb3f-44f1-a884-45af28f340f7">the contents of an entire DICOM Composite Instance (as defined in <olink targetdoc="PS3.3" targetptr="PS3.3" xrefstyle="select: labelnumber"/>) in response to a native model request, or</para>
                  </listitem>
                  <listitem>
                    <para xml:id="para_4732d3b0-05c0-4012-8af2-11cba3b2a0ab">the contents of part of a DICOM Composite Instance in response to a query on a native model, or</para>
                  </listitem>
                  <listitem>
                      <para xml:id="para_6b875924-267e-4a38-a988-75676a6d8834">the contents of a <olink targetdoc="PS3.18" targetptr="PS3.18" xrefstyle="select: labelnumber"/> Studies Service Store (STOW-RS) response</para>
                  </listitem>
                  <listitem>
                    <para xml:id="para_cef5d8f3-4943-404a-9281-438b73d60ff4">the contents of a Sequence Item (as defined in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>), recursively included within an Infoset Value element.</para>
                  </listitem>
                </itemizedlist>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="4" rowspan="1">
                <para xml:id="para_bed985ed-1922-4732-a79a-5d1acc6d0c0b">
                  <emphasis role="italic">Include <xref linkend="table_A.1.5-2" xrefstyle="select: label quotedtitle"/>
</emphasis>
                </para>
              </td>
            </tr>
          </tbody>
        </table>
        <table frame="box" label="A.1.5-2" rules="all" xml:id="table_A.1.5-2">
          <caption>DICOM Data Set Macro</caption>
          <thead>
            <tr valign="top">
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_c218b456-f838-4f94-aa50-e29ba82d18d3">Name</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_b2134810-216a-4ba9-9d02-423f3977a7cc">Optionality</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_f9451cd0-5b97-46f6-801a-d78eac224b8a">Cardinality</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_d5f5e379-5f85-4614-9021-6788d744409e">Description</para>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7f6203e4-be88-4948-bdc0-0824924d7b26">DicomAttribute</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_2a7c93a4-4643-4423-b76b-b02778e8e630">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_eea6cdfe-515a-49d2-b0cc-11017d05fd84">0-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_694c6e9f-b061-4df8-8453-5f5b73da11ca">An Infoset element corresponding to each DICOM Attribute.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_1d416383-158b-4bfd-ba92-7223df0fcf4c">&gt;keyword</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_f842b962-83cc-4ffa-8ccd-7c36bcf76f0f">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8c2b1639-5b4b-4e8e-82c3-6c7c5db9dda5">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_66f45ae8-1b6d-4c61-955e-7b86f748e6eb">The keyword as defined in <olink targetdoc="PS3.6" targetptr="PS3.6" xrefstyle="select: labelnumber"/>.</para>
                <para xml:id="para_fb131966-4369-449d-94f4-c8089c0ec9d7">Required unless the DICOM Data Element is unknown to the host.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4d0f6fa1-31f0-4404-8ec2-04fee9496a77">&gt;tag</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_6d560625-a5d5-4467-a24f-2d5732114b20">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_b217533a-d1d0-4d44-bd37-ffc8d15efde2">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_917cc0ce-8a47-4652-8dbe-21aeb08982e4">The four-digit zero-padded hexadecimal values of the Group and Element Numbers of the Data Element Tag, concatenated as a single string without a delimiter and with lowercase letters disallowed. E.g., Data Element (0010,0020) would have a tag of "00100020".</para>
                <para xml:id="para_ca2b90b1-e54e-48dd-bea2-f0bfa4e86576">For Private Data Elements, the two most significant hexadecimal characters of the Element Number shall be 00, since the Private Creator is explicitly conveyed and the block used in the DICOM encoding shall not be sent (i.e., a Private Data Element has the form gggg00ee).</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_a17e59c9-8124-4bc2-8038-8a46dcf37f86">&gt;vr</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5666ce45-1e8d-4d53-bfa0-31ad0a01e037">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_636a0a23-6f72-4168-970c-73d08f8eff9d">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_014336b0-0974-40fa-a418-b5baa8a53b78">The Value Representation of this element, represented as a two character uppercase string, as defined in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> and specified for this Data Element in <olink targetdoc="PS3.6" targetptr="PS3.6" xrefstyle="select: labelnumber"/>.</para>
                <note>
                  <para xml:id="para_f886b675-6060-4a18-910a-70a11d6168cf">Implementations may utilize the Value Representation to validate data values, if desired.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_fc3fea2d-bdaa-492f-bc88-0f692dcb06df">&gt;privateCreator</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_a11d9eb5-2776-4f39-bad5-0d23c42075b1">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0677fdd2-07f9-41ba-8e9d-fd2e559a369a">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_55e8739a-76d2-4648-8565-9630cd843483">The value of the Private Creator Data Element corresponding to the block in which this Private Data Element is used.</para>
                <para xml:id="para_9197f661-3766-4e6e-ab5e-f9875af66186">Required for Private Data Elements. Shall not be present otherwise (i.e., for Data Elements defined by the DICOM Standard).</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_31b6df8b-b513-47c7-98fd-7560712cf032">&gt;Value</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_66f6d78e-6622-4c90-b6cd-660b875c0561">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_1d501a66-bd93-47d8-9a27-0ea5030abf7c">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_8ee25519-f1f2-45e5-a5f9-6249b8c964b9">A Value from the Value Field of the DICOM Data Element. There is one Infoset Value element for each DICOM Value or Sequence Item.</para>
                <para xml:id="para_7b4cbdca-1cff-4e57-a7cf-599188cd008b">Required if the DICOM Data Element represented is not zero length and an Item, PersonName, InlineBinary or BulkData XML element is not present. Shall not be used if the VR of the enclosing Attribute is either SQ or PN.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_d0c47fec-5721-4111-b2ed-ca3034812620">&gt;&gt;number</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_53b65dc8-ea20-441b-b509-7123660701af">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0c5061a4-4588-492e-9a72-f9990a1833cb">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_5b04873d-7191-441b-addd-4c045ca74172">The order in which the Value occurs within the DICOM Value Field, as a number monotonically increasing starting from 1 by 1.</para>
                <note>
                  <para xml:id="para_1daed623-acf6-4392-acf7-4c423d8310a5">The Number XML Attribute is used to preserve the original order.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f152303f-05ed-4a56-8e2f-31c33ba0d684">&gt;&gt;
        <emphasis role="italic">plain character data</emphasis>
</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_2a971c47-c087-456b-8835-a8e1366b7771">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_9f1ab8f6-c247-443b-a832-c6b93fd65f95">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_70229b9e-09a7-440e-8a8f-c60ec9d7122b">A single DICOM value encoded as plain character data.</para>
                <para xml:id="para_84418073-c8ec-46d7-bc5e-6ba64764754b">E.g., a DICOM Decimal String Value Field that contained two delimiter-separated values, e.g., "0.5\0.4" would be encoded as two Infoset Value elements:&lt;Value number="1"&gt;0.5&lt;/Value&gt;&lt;Value number="2"&gt;0.4&lt;/Value&gt;A Code String Value Field that containing three delimiter-separated values, the second of which was zero length, "MPG\\XR3", would be encoded as:&lt;Value number="1"&gt;MPG&lt;/Value&gt;&lt;Value number="2"&gt;&lt;/Value&gt;&lt;Value number="3"&gt;XR3&lt;/Value&gt;Contrast the latter example with a zero length Value Field, in which case there would be no Infoset Value elements at all.</para>
                <para xml:id="para_e44ff8c0-0481-4c28-92e6-c7562b32b917">For DICOM Data Elements whose VR is AT, each value shall be encoded as the four-digit zero-padded hexadecimal values of the Group and Element Numbers of the Data Element Tag, concatenated as a single string without a delimiter and with lowercase letters disallowed.</para>
                <para xml:id="para_be4572fa-ffda-4da0-964d-548e8c4c7e24">The character encoding is that declared for the Infoset, regardless of any DICOM Specific Character Set, and any necessary translation from the DICOM Specific Character Set to the Infoset character encoding shall have been performed.</para>
                <note>
                  <para xml:id="para_ce3069d1-6ef0-4660-8308-8617ea1c8312">This translation might not be completely lossless, particularly with Asian character sets.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4c3a5f29-6745-40cf-910b-19df43a143ba">&gt;Item</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_73dc80dc-7254-48a1-b134-45458c859066">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_56237551-fa97-4388-95d8-b804682985df">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_90a765bf-9f94-4434-9be7-259a46fc7d49">A DICOM sequence item, in other words a nested DICOM Data Set.</para>
                <para xml:id="para_d9d7628d-ddb9-4dd7-9bab-a1161e3eb6ad">Required if the DICOM Data Element represented is a Sequence (has a VR of "SQ") and is not zero length. Not allowed otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_208ad5ab-98a1-4015-b51d-1a557d7a06f7">&gt;&gt;number</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_00f732a4-0c57-41b2-870b-1f38d5a41a9f">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_19771f8c-cd32-422b-9e11-4c7cf3829da0">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7ccd73b7-456f-4cab-8d72-7afff9ddd260">The order in which the Item occurs within a Sequence of Items, as a number monotonically increasing from 1 by 1.</para>
                <note>
                  <para xml:id="para_a962c5ad-21de-4b0a-86d2-706f3715a590">The Number XML Attribute is used to preserve the original order.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_ea089a22-8a7d-4f90-b732-ff518c772fd7">&gt;&gt;<emphasis role="italic">Include <xref linkend="table_A.1.5-2" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_bc88a569-56dd-45e4-b78a-630e9023f58e">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_fb0cddbb-8877-4daf-92f0-b5551ddbffb8">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_2c4fcbe1-c0da-41e2-8130-b499a2cd539e">Recursively includes the Data Set corresponding to a Sequence Item.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7c8c6335-99d7-4af0-b7ee-38979e69fae9">&gt;PersonName</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_10dfb2fc-5f0c-4088-bbdd-74e5b9a6e323">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_86edf921-dc67-4bd7-87ee-e9e5a09f1516">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_43d0a229-c2f1-4618-9142-d4abde5d565e">A parsed representation in XML of a DICOM Data Element containing a name (i.e., whose VR is PN).</para>
                <note>
                  <para xml:id="para_26e44780-fc8c-4fd7-9a88-ee12987c6f29">Parsing Attributes with a VR of PN into an XML representation of the name groups and components simplifies the creation of XPath statements to pull only portions of names out of the DICOM data.</para>
                </note>
                <para xml:id="para_dbdd4364-0e00-42a8-bb9e-1978b75265b7">Required if the DICOM Data Element represented has a VR of PN and is not zero length. Not allowed otherwise.</para>
                <para xml:id="para_ea3c14e8-8353-4bf3-a789-73a968953934">The rules defined in DICOM <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> on the usage of the Alphabetic, Ideographic, and Phonetic groups of name components within a DICOM Attribute with a Value Representation of PN apply.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_252ae967-c4c2-4774-9b81-3f0011808c6b">&gt;&gt;number</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d7581ba6-c796-4e15-bd9d-a3917e259914">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_851038b7-3140-4852-83c6-9bf983bef559">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_38bb23d2-f641-4493-b525-3bb44bb6ff95">The order in which the PersonName occurs within the DICOM Value Field, as a number monotonically increasing from 1 by 1.</para>
                <note>
                  <para xml:id="para_6faaf8f3-682b-4004-8c00-93a1d2f0e173">The Number XML Attribute is used to preserve the original order.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_52d4fc38-5744-4b30-8c70-95715dc04b70">&gt;&gt;Alphabetic</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_7b0a6348-5b4b-4cd5-97b1-01d6fe09eda3">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_9d3f93dd-501f-4825-bf87-91a08815a6ba">0-1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_28e5e3fb-c248-49a8-a9b0-00161f7be6d0">A group of name components that are represented in alphabetical characters (see the definition for the Value Representation of PN in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>).</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="4" rowspan="1">
                <para xml:id="para_fb115909-6f64-47d4-996c-9c7415c0eb01">&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.2-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_0291f831-ff68-4b7f-9e51-265efbfad099">&gt;&gt;Ideographic</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_4836150c-50ae-4571-ad0f-f70c3b20c811">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d293ac61-76dd-47ef-b990-66206fa3caed">0-1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_ba2b40c4-da4c-4e89-94b9-d39c798081ce">A group of name components that are represented in ideographic characters (see the definition for the Value Representation of PN in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>).</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="4" rowspan="1">
                <para xml:id="para_3a0ce899-5ad5-4195-9ec0-0c81f5f92036">&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.2-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_9d32b6c6-75a7-4b48-a57b-b09eec3f2960">&gt;&gt;Phonetic</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_9434c4f3-988c-4c55-80ef-9d634f25b66a">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_fa419d3a-7b90-43aa-af4f-95048c0af287">0-1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_27c40df2-b56e-480d-8be7-fa9daffb928a">A group of name components that are represented in phonetic characters (see the definition for the Value Representation of PN in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/>).</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="4" rowspan="1">
                <para xml:id="para_27d09c17-08da-4601-8c02-029d8a45872e">&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.2-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_2b996d78-0885-405e-a398-275654546c4b">&gt;BulkData</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d839bf89-c633-4c62-8159-6df6dcdfcd7e">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_916744f4-562d-45bf-bc50-b5d2aba9934b">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e28f29d3-876d-4219-823d-d63a61daa38e">A reference to a blob of data that the recipient may retrieve through use of the GetData() method,
                    a <olink targetdoc="PS3.18" targetptr="PS3.18" xrefstyle="select: labelnumber"/> Studies Service Retrieve (WADO-RS) transaction or
                    a <olink targetdoc="PS3.18" targetptr="PS3.18" xrefstyle="select: labelnumber"/> Studies Service Store (STOW-RS) transaction.</para>
                <para xml:id="para_56897839-8f7d-4cbe-9959-e50ec10937cd">Required if the DICOM Data Element represented is not zero length and an XML Infoset Value, Item, InlineBinary or PersonName element is not present.</para>
                <para xml:id="para_05efa8e6-e32a-4bc7-8c41-1e8eda28f39b">The provider of the data may use a BulkData reference at its discretion to avoid encoding a large DICOM Value Field as text by value in the Infoset. For example, pixel data or look up tables.</para>
                <para xml:id="para_ac5ff352-569c-43cb-864c-882bd9deb93f">There is a single BulkData Infoset element representing the entire Value Field, and not one per Value in the case where the Value Multiplicity is greater than one.</para>
                <note>
                  <para xml:id="para_214d1867-e438-4959-9d1c-1d5b8123d934">E.g., a LUT with 4096 16 bit entries that may be encoded in DICOM with a Value Representation of OW, with a VL of 8192 and a VM of 1, or a US VR with a VL of 8192 and a VM of 4096 would both be represented as a single BulkData element.</para>
                </note>
                <para xml:id="para_40e6cfd1-d1ab-428c-aa1d-759b3233246a">All rules (e.g., byte ordering and swapping) in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> apply.</para>
                <note>
                    <para xml:id="para_368ed09e-9d16-43d8-acad-d6712577863f">Implementers should pay particular attention to the <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> rules regarding the value representations of OD, OF, OL, OV and OW.</para>
                </note>
                <para xml:id="para_63ec0186-3bf5-40db-80b1-b9418adccb87">If the BulkData has a string or text Value Representation, the value(s) of the DICOM Specific Character Set Data Element, if present, might be necessary to determine its encoding.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_3fa71763-244f-4749-9ba6-eb5e1a44bd37">&gt;&gt;uuid</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_4bfb580b-3e11-452f-a297-851827639e8a">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_52022b61-5a34-432a-b1ab-ef39d329ad1d">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_b5053adf-1bac-457f-b2ce-99adab598b5e">An identifier of this bulk data reference formatted as a UUID using the hexadecimal representation defined in <xref linkend="biblio_ITU-T_X.667"/>.</para>
                <para xml:id="para_a4156d0b-91c7-42c2-b493-8dc5a6374e4d">Required if BulkData URI is not present. Shall not be present otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_fd94e2a5-822b-461a-b434-ddaf24a0fad4">&gt;&gt;uri</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_1f264c7f-d4a0-46c5-b7cf-e3db1cdee514">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d2694148-f51a-4fa0-9ae3-b5f68c1414d5">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_5974c1a2-62cb-40dc-8b98-155919135c69">The HTTP(S) URI for this bulk data reference.</para>
                <para xml:id="para_5b121441-d071-4191-8924-eed4a2bda48c">Required if the NativeDicomModel was:</para>
                <itemizedlist>
                  <listitem>
                      <para xml:id="para_2b854968-2dc5-4ee0-b53d-576843e1d67f">returned in response to a <olink targetdoc="PS3.18" targetptr="PS3.18" xrefstyle="select: labelnumber"/> Studies Service Retrieve (WADO-RS) Retrieve Metadata request</para>
                  </listitem>
                </itemizedlist>
                <para xml:id="para_d531a2f7-01e6-4b69-96b5-3cd81da55589">Shall not be present otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_33499e05-95a8-41ef-bcb1-dd40828a0094">&gt;InlineBinary</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_953d3787-25b8-4492-a8d6-754a636a6ca7">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_6ab8dc55-455a-412c-9ee6-55d9f6b07fee">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c8261e23-154d-478b-942f-d5cf04ec6e80">The Value Field of the enclosing Attribute encoded as base64.</para>
                <para xml:id="para_13d05e88-dca4-43da-8b95-6813cc019b00">Required if the DICOM Data Element represented is:</para>
                <itemizedlist>
                  <listitem>
                    <para xml:id="para_ae8c8397-ac01-44c6-ab86-c1331edbdf51">not zero length</para>
                  </listitem>
                  <listitem>
                    <para xml:id="para_ea43ed8e-37de-4f23-bb03-143638a399e9">the VR if the enclosing Attribute is OB, OD, OF, OL, OV, OW, or UN</para>
                  </listitem>
                  <listitem>
                    <para xml:id="para_b03235fb-fdb4-4ead-90ef-6e72088c8ccb">an XML Infoset Value or BulkData XML element is not present</para>
                  </listitem>
                </itemizedlist>
                <para xml:id="para_0b53c5f8-fe34-45f9-84e7-5c444ddeb5c8">Shall not be present otherwise.</para>
                <para xml:id="para_5bb461ea-68fb-4344-94d4-eca457036c25">There is a single InlineBinary Infoset element representing the entire Value Field, and not one per Value in the case where the Value Multiplicity is greater than one.</para>
                <note>
                  <para xml:id="para_1e59701e-0115-4042-b6a4-f224edcaf619">E.g., a LUT with 4096 16 bit entries that may be encoded in DICOM with a Value Representation of OW with a VL of 8192 and a VM of 1 would be represented as a single InlineBinary element.</para>
                </note>
                 <para xml:id="para_59619b0f-1a7f-49ec-9d00-3dd74f2c1b72">All rules (e.g., byte ordering and swapping) in <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> apply.</para>
                <note>
                    <para xml:id="para_50130faa-0218-41ff-86cb-3c9c9a4d8e7b">Implementers should pay particular attention to the <olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/> rules regarding the value representations of OD, OF, OL, OV and OW.</para>
                </note>
              </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section label="A.1.6" status="3" xml:id="sect_A.1.6">
        <title>Schema</title>
          <para xml:id="para_eea6840e-17f5-42f7-b623-3a780af825a5">The Normative version of the Relax NG Compact Schema for the Native DICOM Model follows:</para>
        <programlisting><![CDATA[default namespace="http://dicom.nema.org/PS3.19/models/NativeDICOM"

# This schema was created as an intermediary, a means of describing
# native binary encoded DICOM objects as XML Infosets, thus allowing  
# one to manipulate binary DICOM objects using familiar XML tools. 
# As such, the schema is designed to facilitate a simple, mechanical,
# bi-directional translation between binary encoded DICOM and XML-like 
# constructs without constraints, and to simplify identifying portions 
# of a DICOM object using XPath statements.
#
# Since this schema has minimal type checking, it is neither intended 
# to be used for any operation that involves hand coding, nor to 
# describe a definitive, fully validating encoding of DICOM concepts
# into XML, as what one might use, for example, in a robust XML  
# database system or in XML-based forms, though it may be used
# as a means for translating binary DICOM Objects into such a form
# (e.g., through an XSLT script).

start = element NativeDicomModel { DicomDataSet }

# A DICOM Data Set is as defined in PS3.5.  It does not appear 
# as an XML Element, since it does not appear in the binary encoded 
# DICOM objects.  It exists here merely as a documentation aid. 
DicomDataSet = DicomAttribute*

DicomAttribute = element DicomAttribute {
  Tag, VR, Keyword?, PrivateCreator?, 
  (BulkData | Value+ | Item+ | PersonName+ | InlineBinary)? 
} 
BulkData = element BulkData{ UUID | URI } 
Value = element Value { Number, xsd:string }
InlineBinary = element InlineBinary { xsd:base64Binary }
Item = element Item { Number, DicomDataSet }
PersonName = element PersonName {
  Number,
  element Alphabetic  { NameComponents }?,
  element Ideographic { NameComponents }?,
  element Phonetic    { NameComponents }?
}

NameComponents =
  element FamilyName {xsd:string}?,
  element GivenName  {xsd:string}?,
  element MiddleName {xsd:string}?,
  element NamePrefix {xsd:string}?,
  element NameSuffix {xsd:string}?
  
# keyword is the attribute tag from PS3.6 
# (derived from the DICOM Attribute's name)
Keyword = attribute keyword { xsd:token }
# canonical XML definition of Hex, with lowercase letters disallowed
Tag = attribute tag { xsd:string{ minLength="8" maxLength="8" pattern="[0-9A-F]{8}" } } 
VR = attribute vr { "AE" | "AS" | "AT"| "CS" | "DA" | "DS" | "DT" | "FL" | "FD" 
                    | "IS" | "LO" | "LT" | "OB" | "OD" | "OF" | "OL" | "OV" | | "OW" | "PN" | "SH" | "SL" 
                    | "SQ" | "SS" | "ST" | "SV" | "TM" | "UC" | "UI" | "UL" | "UN" | "UR" | "US" | "UT" | "UV" }
PrivateCreator = attribute privateCreator{ xsd:string }
UUID = attribute uuid { xsd:string }
URI = attribute uri { xsd:anyURI }
Number = attribute number { xsd:positiveInteger } 
]]></programlisting>
      </section>
      <section label="A.1.7" status="3" xml:id="sect_A.1.7">
        <title>Examples</title>
        <para xml:id="para_1b3b9e93-9780-4d2e-96e2-25d1bd2d7eef">Here is an example XPath query to extract the code meaning of the first item in the View Code Sequence:</para>
        <para xml:id="para_aeef2b56-f2d2-4b3f-a2b2-bc1dfa831dbf">/NativeDicomModel/DicomAttribute[@keyword="ViewCodeSequence"]/Item[@number=1]/​DicomAttribute[@keyword="CodeMeaning"]/Value[@number=1]</para>
      </section>
    </section>
    <section label="A.2" status="2" xml:id="sect_A.2">
      <title>Abstract Multi-Dimensional Image Model</title>
      <section label="A.2.1" status="3" xml:id="sect_A.2.1">
        <title>Usage</title>
        <para xml:id="para_f6f69fd6-6615-47de-be91-bed77397de46">The Abstract Multi-Dimensional Image Model can be used to refer to a discretely-sampled, multi-dimensional image data. The sample values may either be single-valued (a scalar) or a vector of values (a vector). An example would be a time varying series of three dimensional images set at multiple energy levels. The Abstract Multi-Dimensional Image Model is patterned after the Enhanced Multi-frame family of DICOM objects. In mathematical terms, this is any data set that is defined by a function <emphasis role="italic">I (x,y,z,t,…)</emphasis>, where <emphasis role="italic">(x,y,z,t,…)</emphasis> are the dimensions, and the sample value of <emphasis role="italic">I</emphasis> is either a vector of components or a scalar (i.e., a single component). The primary purpose of this model is to allow applications to process image data without concern as to the underlying format of the data.</para>
        <para xml:id="para_40999fd0-51b3-4f9f-825f-eb38e1114ef0">When converting DICOM SOP Instances into Abstract Multi-Dimensional Image Models, a provider of data shall follow these rules as closely as it practically can:</para>
        <note>
          <para xml:id="para_2f532f5a-7e2b-4035-a2c2-0d67969c3a51">Deterministic behavior is not expected nor guaranteed when making conversions between DICOM SOP Instances and Abstract Multi-Dimensional Image Models. For example, given the same DICOM SOP Instances, different Hosting Systems may create Abstract Multi-Dimensional Image Models that differ in some details, such as the Units of the Component values or in the Dimensions.</para>
        </note>
        <orderedlist numeration="arabic">
          <listitem>
            <para xml:id="para_a2c29d75-eb13-46eb-bf81-9ff6bbd229c5">Multiple DICOM SOP Instances from the same series that have the same Frame of Reference UID shall be combined into a single instance of the Abstract Multi-Dimensional Image Model. DICOM SOP Instances from multiple series that have the same Frame of Reference UUID may be combined into a single instance of the Abstract Multi-Dimensional Image Model, if appropriate.</para>
          </listitem>
          <listitem>
            <para xml:id="para_18a398f8-7925-4428-8142-9b3fbeffc489">A single DICOM SOP Instance shall not be divided into multiple instances of the Abstract Multi-Dimensional Image Model.</para>
          </listitem>
          <listitem>
            <para xml:id="para_3bc5fe49-9669-4112-aeb8-22da386def5c">The coordinate system utilized within the Abstract Multi-Dimensional Image Model shall use the coordinate system defined by the DICOM objects utilized in the creation of the Abstract Multi-Dimensional Image Model instance if applicable. Where practical, the coordinate system and Dimension definitions utilized within the Abstract Multi-Dimensional Image Model shall be chosen such that interpolation is not required to convert the source data into the Abstract Multi-Dimensional Image Model.</para>
            <note>
              <para xml:id="para_aa4e72af-c29b-4712-bda1-7034ac1feb59">Interpolation may be necessary if the source data is not laid out on a frame-based Cartesian coordinate grid.</para>
            </note>
          </listitem>
          <listitem>
            <para xml:id="para_c1876efa-bc6b-4ad3-b8ef-89f0944a4b26">Spatial coordinates, such as Image Position (Patient) (0020,0032), shall be transformed into the coordinate system utilized within the Abstract Multi-Dimensional Image Model instance.</para>
          </listitem>
          <listitem>
            <para xml:id="para_4652e2c3-d544-44a3-9e27-b7b304f56512">The Pixel Data shall be spatially transformed as needed to match the Semantics and Units of the Dimensions of the Abstract Multi-Dimensional Image Model into which the pixels values are being placed.</para>
          </listitem>
          <listitem>
            <para xml:id="para_7e5e28d1-1150-4e50-8154-d06acdb32374">Any embedded overlays within the Pixel Data (7FE0,0010) Attribute shall be stripped out of the pixel values and the pixel values sign extended or converted as needed to match the datatype of the Component of the Abstract Multi-Dimensional Image Model into which the pixels values are being placed.</para>
          </listitem>
          <listitem>
            <para xml:id="para_086c8e00-c67a-458e-9cc2-6ea511cba75f">The pixel values of the Pixel Data shall be transformed as needed to match the Semantics and Units of the Component of the Abstract Multi-Dimensional Image Model into which the pixels values are being placed.</para>
            <note>
              <para xml:id="para_b5c91cfd-6dd1-47f1-8e84-04cc8e81b5f3">Typically presentation settings such as VOI and Presentation LUTs are not used in creating Abstract Multi-Dimensional Image Models from DICOM SOP Instances. The exception is when the application of such LUTs is needed to match the Semantics and Units of the Component. Modality LUTs or Rescale Slope and Intercept often must be applied to match the Semantics and Units of the Abstract Multi-Dimensional Image Model.</para>
            </note>
          </listitem>
          <listitem>
            <para xml:id="para_1137467e-b5e3-4b97-97ed-c0ab23250233">Any pixel values that correspond to the pixel padding values shall be stripped out (i.e., set to zero or other suitable replacement value) and the spatially corresponding values in the PixelMapOfValidData shall be set to the outValue or something other than the inValue, as appropriate.</para>
          </listitem>
        </orderedlist>
        <para xml:id="para_a0944c1e-5a0e-4913-8b19-a4a5953ea002">When converting data within an instance of the Abstract Multi-Dimensional Image Models into DICOM SOP Instances, the recipient of an abstract model instance shall convert the pixel data back into values compatible with the native form of the DICOM SOP Instances being created. This conversion may include recreating Modality LUT information, inserting pixel padding values, converting pixel spacing and origins, etc. as dictated by the SOP Class the data is being converted to. When converting a single Abstract Multi-Dimensional Image Model into multiple DICOM SOP Instances, the DICOM SOP Instances shall all have the same Frame of Reference UID (0020,0052), if permitted by the SOP Class.</para>
      </section>
      <section label="A.2.2" status="3" xml:id="sect_A.2.2">
        <title>Identification</title>
        <para xml:id="para_823c76e9-1b37-4707-b58d-444291b90d1e">The ObjectDescriptors MIME content type for the Abstract Multi-Dimensional Image Model is "application/x-dicom.abstract".</para>
        <note>
          <para xml:id="para_ab5cff67-d48b-4c0d-958f-7b8ab36e57ae">This is an experimental MIME type. A formal MIME type will be applied for. Implementations will be expected to support both the experimental and formal MIME type going forward without a version change to the interface.</para>
        </note>
        <para xml:id="para_24cd843e-cb3f-41cb-b161-f6a157a2d8d6">The ObjectDescriptors class UID for the Abstract Multi-Dimensional Image Model is "1.2.840.10008.7.1.2".</para>
      </section>
      <section label="A.2.3" status="3" xml:id="sect_A.2.3">
        <title>Support</title>
        <para xml:id="para_d661e093-ba62-43ff-a751-2774cc05f5c4">Support of the Abstract Multi-Dimensional Image Model as both a data source and a data recipient is required of all Hosting Systems implementing the interface.</para>
        <para xml:id="para_bdf0f9b4-b939-4841-8609-5f77db4d070d">Support of the Abstract Multi-Dimensional Image Model as either a data source or a data recipient is optional for all Hosted Applications implementing the interface.</para>
      </section>
      <section label="A.2.4" status="3" xml:id="sect_A.2.4">
        <title>Information Model</title>
        <para xml:id="para_54408399-8323-4205-a650-ab39d791c0ac">A diagram of the Abstract Multi-Dimensional Image Model appears in <xref linkend="figure_A.2.4-1" xrefstyle="select: label"/>.</para>
        <para xml:id="para_5fbc4af7-b623-4960-b3ce-2ad1e4e176db">
          <figure label="A.2.4-1" pgwide="1" xml:id="figure_A.2.4-1">
            <title>Abstract Multi-Dimensional Image Model</title>
            <mediaobject>
              <imageobject>
                <imagedata fileref="figures/PS3.19_A.2.4-1.svg"/>
                <!--<imagedata fileref="part19_fromword_files/image016.png"/>-->
              </imageobject>
            </mediaobject>
          </figure>
        </para>
      </section>
      <section label="A.2.5" status="3" xml:id="sect_A.2.5">
        <title>Description</title>
        <table frame="box" label="A.2.5-1" rules="all" xml:id="table_A.2.5-1">
          <caption>Abstract Image Model</caption>
          <thead>
            <tr valign="top">
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_16cb0925-fe9f-4681-ab16-5dbfbc19ec94">Name</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_8f50e65b-78c0-4a89-8639-712277a2b921">Optionality</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_9ff66a69-0a53-4845-bf71-eb31a4e9a3a5">Cardinality</para>
              </th>
              <th align="center" colspan="1" rowspan="1">
                <para xml:id="para_966fc54d-06bc-499e-8207-ac6c6c8cfdd5">Description</para>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_007a9593-ae33-409f-8a97-313c1539d281">AbstractImageDataSet</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_a83e1167-25d6-42af-bfc6-dc4cab7a6832">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0eeae77f-142d-4bdb-ac93-1e8fb5842c33">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_2267c20c-c623-4105-9c38-5044ccb997ba">The top level element required of all abstract image models, holding the entire abstract image Data Set.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_47b02bfe-ae50-41cd-bd02-b7e2167c0095">&gt;Component</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_803a25f4-f944-4012-8d68-a26e92e11660">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_e0022c5f-cbab-4342-83d7-880b8a9b7113">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_202da310-c03a-4bfd-94c3-abbb87f7a7d6">Describes a component of the function output. If the output is a scalar, there is only one Component. Vector outputs require a Component for each position in the vector. When there are multiple components, the components appear in each value in the order defined by their respective idNumbers.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_55a0668e-6380-4585-9b67-186b742d1f4d">&gt;&gt;idNumber</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_f54a22c6-9e7b-4555-9202-159a2f3144cf">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_9725df1c-51d2-4616-be66-caead26b201a">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_72d5772d-c6dc-4957-b57d-66ed85530e57">Identifies this particular component, with numbering monotonically increasing from 1.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_d9677aba-a822-4023-8ceb-df7a38329022">&gt;&gt;datatype</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_c0ac8bc7-9fe7-4fd9-855d-4d963744fbcb">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_89496740-0f7c-49ce-9c35-4e98e2d88d30">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_234db090-3207-40aa-91ab-c3e57542d3b4">Describes how this component value is represented. Enumerated values are:</para>
                <para xml:id="para_c2ec4d84-c974-4197-bacb-ae48e0bcbef7">SIGNED_INT8</para>
                <para xml:id="para_b14d4663-0e3e-49a3-9167-7831eb348d71">SIGNED_INT16</para>
                <para xml:id="para_beddd293-4843-4219-96b7-4d88e8d892aa">SIGNED_INT32</para>
                <para xml:id="para_b5cb99bf-ce7b-47a8-9e6f-df8fed0203c2">UNSIGNED_INT8</para>
                <para xml:id="para_0f1d7617-b268-43fe-8aa3-bffae0c6a0d4">UNSIGNED_INT16</para>
                <para xml:id="para_49a4b883-3367-4564-a1e1-c0547782f4ce">UNSIGNED_INT32</para>
                <para xml:id="para_ada53fc7-08e7-443f-ab8c-c634f84ffc42">FLOAT32</para>
                <para xml:id="para_f0b65285-98f6-4eeb-860f-f3ff04fad6b5">FLOAT64</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f1ef5660-5b25-4f30-8a71-4688b2161e3e">&gt;&gt;minValue</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5d9609f4-6c46-4257-8415-e511cd801bcc">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_40da39a3-3cc5-452f-954b-b6610a37ac6e">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_43c7ac8e-c5e6-4c60-b946-84650ac9de0a">The minimum value that this component takes on. If this XML Attribute is missing, this is the minimum value that can be represented by the Datatype.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_8c240f7a-1e3e-4ac5-aa08-0cee21e13fb7">&gt;&gt;maxValue</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_51c418ac-e1e6-4b78-9002-9021d316e2f1">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8b71142f-d7b1-4f8b-8368-be5658db4d94">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_6ace9380-c02a-46f5-a5ab-a4be1b072994">The maximum value that this component takes on. If this XML Attribute is missing, this is the maximum value that can be represented by the Datatype.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_485c5d53-17e3-4112-8e59-5eda26887d8c">&gt;&gt;Semantics</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_bf32e5d9-1eff-40f6-ad1b-2d110c85d309">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_e3e03b77-b9d2-4483-b1c8-e3558bc2f014">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_1a3a50be-f764-4dda-b926-b8aa47efb8e3">A coded value describing what this component represents.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_f0183570-fef3-4b3a-b0c8-3f2ab66bc4d2">&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_560cea8c-f7ac-4629-bccc-b0d7594cb56b">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7180" xrefstyle="select: labelnumber quotedtitle"/>.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c8eec665-5c29-4260-ad47-dd506978168c">&gt;&gt;Unit</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5ab2a78c-8778-4880-82bb-616cbd0007cc">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_c34364a7-cec4-44c7-80fe-ca90e1820d2a">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7d8e7a84-9746-43ac-8edc-d52334182115">A coded value describing what units this dimension is in.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_be3c9573-e194-42bc-b64e-a05c7434cfdf">&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_8cc71c17-0e07-43c4-8d0f-8e775856b3e2">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7181" xrefstyle="select: labelnumber quotedtitle"/>.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_999f6c75-ade7-46a1-b7d6-44adaddb1f6a">&gt;Dimension</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_3d2a7c93-811b-4f64-8fde-5e2715a8fd46">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_96d52800-681e-487c-913e-0a1f507e2c3b">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_5d8f211a-6325-4372-861a-4c200ad34860">Describes a dimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_059a0c26-f45d-46ed-8a53-88f62d113b1d">&gt;&gt;idNumber</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_aff93297-cbfd-4e56-8e2c-d5083c39ffd3">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_ad31eb5f-f4fd-4d68-821f-2770fd02bbb7">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_bf81f8e9-dc04-42de-a349-1431e307486c">Identifies this particular dimension, with numbering starting from 1. Dimensions with a lower idNumber vary faster than those with a higher idNumber.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_d252508a-7c57-43bf-9372-363efccbfb69">&gt;&gt;numberOfSamples</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_a483d544-f1a6-4d08-afa1-b55deb0b5d16">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_89f566f5-d6c5-4616-830b-4ff95e0bee0c">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_416837aa-c5a0-48cc-a2b4-80b080ed6f0c">The number of samples in this dimension, for example:the number of columns along the X-axis,the number of rows along the Y-axis,the number of slices along the Z-axis,the number of qualitative descriptions.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_0d7a0bf4-d191-47f1-8306-7a55d5051317">&gt;&gt;Semantics</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_fa26e2bc-5ab4-4586-8b0b-6d7fdc77340d">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_800c8496-33a6-4c11-bfd4-25c785b10449">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_60721a0a-88f6-4edf-86e2-fe77037b7c73">A coded value describing what this dimension represents.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_ecabda93-8955-4b61-82df-03792aee58bb">&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_37fa925b-ae85-4bd3-a33f-4f2d21e2617b">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7182" xrefstyle="select: labelnumber quotedtitle"/>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_9c5ce4f2-8355-4427-8fd2-e070b33cef18">&gt;&gt; Regular</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0bc839ea-5586-4cc6-8b85-4149df7564d3">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_bd667e98-eb33-414f-bab5-b069afaaf8d0">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_85ffc58c-cdc5-43ab-9557-1d623749b623">Used to describe regularly spaced samples in this dimension. Required if neither Irregular nor Qualitative are present. Shall not be present otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_0ee463d7-db72-4073-a0c2-2791c7472d45">&gt;&gt;&gt;width</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_88822d58-188e-4b0e-a39e-cdc3fb36be0a">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d0def0e6-888f-461b-b1f1-0a056044736c">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_647a8450-50fd-4aab-bac6-1108fce8d483">The sample width.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_579726b2-23ee-4576-85e9-6536ae4b4e49">&gt;&gt;&gt;spacing</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0286f415-e3c9-4a70-b9b5-d800de3f3189">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0f0a1b75-8977-4135-93d8-70bc0260e969">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c4a64e46-6bcb-453b-a6ce-209d224f14fd">The sample spacing.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_24b077e0-dcce-4893-9b20-168f2dfb272e">&gt;&gt;&gt;Unit</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_ba426734-8f24-42ad-8579-d36a3c84a4b7">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_da54ca28-c3f3-4f18-8b89-dc24ef6edca7">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4fea39a8-b2c3-4ef7-a60f-273af2b5b160">A coded value describing what units the sample width and spacing are in.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_0baacae5-1c2e-4e8b-8c64-89df62748a85">&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_812c1ac1-a4ca-4118-a2d7-11e143877102">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7183" xrefstyle="select: labelnumber quotedtitle"/>.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f6e882e5-0e48-43bb-bfea-3a89dcb4b352">&gt;&gt;&gt;AxisDirection</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_ee8b5c5b-f7cc-4cc8-a6b4-8a1da8f72941">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_a5ab0e68-444d-4916-bc73-037ea1053d92">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_93839c67-24ee-4331-acee-79066bdb84fb">The direction of the axis of this dimension.</para>
                <note>
                  <para xml:id="para_1fba1643-9f14-4285-afa7-dc6ba6f3583e">This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_3f5ac6cf-43b8-448a-98d3-46f7283e4e09">&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_5fe55a92-afec-4949-99cd-a74e316d4797">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7184" xrefstyle="select: labelnumber quotedtitle"/>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c9383469-791e-4630-8d31-fa71daf07251">&gt;&gt;&gt;AxisOrientation</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_c4421527-d987-4df2-a73f-033d14422c4f">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_03ffd798-2280-49d2-acbb-1e6d290b69a2">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c35e79cc-6fb8-4de9-830a-0f7ae8cdf46a">The orientation of the axis of this dimension along which values are increasing.</para>
                <note>
                  <para xml:id="para_69852aaa-a264-474e-a485-85048e702b32">This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_018ce1ae-d04d-4267-ada1-449cb21185b3">&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_dd0629a8-0423-4cd7-9942-602006c9480b">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7185" xrefstyle="select: labelnumber quotedtitle"/>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c6b82115-f0c9-4def-9a03-15f3ca45df6a">&gt;&gt;Irregular</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_fd016cd7-5feb-4b41-94ca-2a7a1c5ec97c">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_aa880338-aba8-42f2-b60d-e172e4fcd5f7">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_59e27f06-c691-4712-91cb-6e6b0bf049bb">Used to describe irregularly spaced samples in this dimension. Required if neither Regular nor Qualitative are present. Shall not be present otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_df27c712-a81b-4e7d-a53c-acb71f7bd75a">&gt;&gt;&gt;origin</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8502bbde-d017-4eb8-a58a-8c96b8e0b9be">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d6141c45-e634-4560-9b04-50ab3c593eb4">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4160bcac-e21d-4c56-8a26-09aa3a7c88ce">The reference location from which each of the sample locations are measured.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4eba0172-d3e1-4f4e-9783-8af3ca40dee6">&gt;&gt;&gt;SampleLocation</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_605417e2-dbaf-4068-b31c-7923fcc3552a">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_534d5f76-cef8-4464-8b0f-418767494d2b">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_33ab9db8-0bf0-44ec-abb2-fc03eb8bc1ff">Describes the locations of each sample as an offset from the origin. There shall be numberOfSamples SampleLocation XML Elements in this sequence.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4764483a-0652-41ad-9033-e0941c561f0f">&gt;&gt;&gt;&gt;index</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_2750f925-abba-4312-92ef-b0e0845ab9ad">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_088acbec-5da4-4a09-83bc-1fe2cf692903">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_eb727b79-4fef-4436-a294-73532a285441">The index value of this sample location, with numbering starting from 1 and incrementing to numberOfSamples.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_998ab307-d78d-4845-8970-e05cb7462e3d">&gt;&gt;&gt;&gt;width</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_79eeb9a0-564b-4274-9fbc-85624aca62b5">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_55235b12-460e-4e5a-9550-0e9393a1d046">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e1e3843b-931d-488d-8e11-a8c93910016e">The sample width.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_2a3c05c5-36a0-43d7-bb9f-956387230d3a">&gt;&gt;&gt;&gt;distanceToOrigin</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_cca30543-ba7c-45d3-a70b-617ffc54049b">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_19f7d121-ab08-4a8e-bf22-16e46240f88d">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_ba93a845-fd59-4f49-ace0-57013b3219ca">The distance of this sample location from the Origin location.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7880109c-b8e8-4696-b522-23dc77a2157a">&gt;&gt;&gt;Unit</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_ef2b1fbe-9539-4f9d-b76c-3e5930b53d4c">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_43c49cba-cc19-48d9-a8c9-5079c1646318">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_ce017721-e515-4510-a9d8-72bd8aa986cb">A coded value describing what units the sample widths and locations are in.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_b056c2b0-d99e-4eed-85b7-60d5888a10ca">&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_d5e98495-fe31-447f-ae56-1ebdbf8969c8">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7183" xrefstyle="select: labelnumber quotedtitle"/>.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_9c9c6533-72b7-458f-abdf-ea65b39be7b4">&gt;&gt;&gt;AxisDirection</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_38c257c5-7ac3-4c39-ae69-0fc1e05b3acc">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_70aced9a-f6b2-4bb2-83dc-aec96f4b1db8">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_b120983a-9323-4d92-b6d2-9e61ef660d61">The direction of the axis of this dimension.</para>
                <note>
                  <para xml:id="para_0fecaaac-b155-4c68-a476-7a28d61b05eb">This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_3cd99ee6-0117-48db-9280-39f0b83c19a1">&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e7ed9910-5bf6-427b-8a02-a76d82491f28">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7184" xrefstyle="select: labelnumber quotedtitle"/>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f79fff19-2571-46ca-a94b-bb330a5677cf">&gt;&gt;&gt;AxisOrientation</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_126174da-08d9-42bd-bbef-abac8b82d4ad">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_373db546-fcaf-4e45-9ea7-b79809f73282">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_569be944-1a03-425c-9807-923eba411621">The orientation of the axis of this dimension along which values are increasing.</para>
                <note>
                  <para xml:id="para_3295d285-925c-4720-b20e-408946949c54">This XML Element might only be applicable to spatial dimensions, such as those dealing with linear displacement. Typically this is in relationship to the patient.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_87084ec0-35c8-43a5-a93f-17a436258114">&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_38c304d1-bb65-43a6-95a8-a091d4a23415">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7185" xrefstyle="select: labelnumber quotedtitle"/>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_443a55b9-7c5e-40c4-8872-3d9b79b365e6">&gt;&gt;Qualitative</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_440a9db9-836e-45de-afd3-57428ad218b9">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_9776ea22-8644-4ed3-8977-03b5ae7509e5">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_15b39cb6-3f98-4837-9561-02c35481344f">Used to describe a qualitative dimension. Required if neither Regular nor Irregular are present. Shall not be present otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_033ae0f5-ef12-4e82-a33e-0d81d8de4d48">&gt;&gt;&gt;Sample</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8496aa6c-9f42-4c97-8965-910f08755f9b">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_64d2b5a9-2f66-4228-99e7-c4e67747adb5">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_eac6b493-cf0c-4e74-9f05-122b9e7708ee">Description of what each sample along this dimension represents. There shall be numberOfSamples Sample XML Elements in this sequence.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_621d54e3-0b0b-4042-a069-1a5baf9092b0">&gt;&gt;&gt;&gt;index</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_4cdef1c5-251b-495e-8be9-1c1da703e30f">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d43f9d47-5450-4066-a89e-364f041d6126">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e05933b8-f32e-41ee-a93d-58508c1ab61b">The index value of this sample, with numbering starting from 1 and increasing to numberOfSamples.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_054a6b1c-6a78-49f6-9d28-97b78bfb0c11">&gt;&gt;&gt;&gt;Semantics</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_86f44d4f-1bec-4d02-8e71-ffe82affd16e">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8247990b-f86f-4315-990d-019bb837be04">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_a63c8ed0-9e05-456d-a683-903a00dcc3df">A coded value describing what this sample represents.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_53111174-62c0-4704-af14-fd134537d548">&gt;&gt;&gt;&gt;&gt;<emphasis role="italic">Include <xref linkend="table_10.1-1" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_01e38f41-01ed-45d2-aac6-475dd143e27c">Defined <olink targetdoc="PS3.16" targetptr="sect_CID_7186" xrefstyle="select: labelnumber quotedtitle"/>
</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7c8a615d-08b2-49b8-bd7c-89e3b4c3d26f">&gt;&gt;Origin</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_afa01350-fc9f-4630-adef-917c14f67af0">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_fd5a3f06-2c39-462c-9bcf-88e7bb630cc4">0-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_9f21caae-f39f-4f73-8e8c-aa1e7e9232b9">Specifies the spatial position in the coordinate system of the Abstract Multi-Dimensional Image Model of the spatial frames or volumes of image data values. Different frames or volumes may either share an origin, or have a different origin for each frame or volume. If there is only a single Origin XML element within this Dimension, then this Origin applies to all samples along this Dimension. Otherwise, there shall be numberOfSamples Origin XML elements, one for each sample along this Dimension. Sample index values for Dimensions whose idNumbers are less than this Dimension's idNumber, are all equal to 1.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f63bcca9-157d-441e-8609-68a93bd0a0cf">&gt;&gt;&gt;index</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_472607a8-eec4-4dad-8d4c-65e74625dbbd">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5db9a862-6b73-4258-8c23-aabea90262da">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_22e3f0cb-e1cf-47e1-b49c-ede1e8924c50">Index of the sample to which this Origin applies. If this is a single Origin that applies to all samples along this Dimension, then index shall either be left out or given a value of "0" (zero). Otherwise, the value shall be the appropriate number between 1 and numberOfSamples.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7828831e-d28a-434f-868f-bbd16883426b">&gt;&gt;&gt;xCoord</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8c96d3ac-0fee-4d52-b14c-eeac8dd72790">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_de739fcb-3a9b-4814-a846-5e1ff6ddb887">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_661a8e3e-2e6a-4072-b547-d80c56c15e63">The X position of this Origin in the coordinate system of the Abstract Multi-Dimensional Image Model.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_b7110059-7e11-4889-b986-3a1e0991dd05">&gt;&gt;&gt;yCoord</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_cf1efcda-d910-4a61-9bf4-6964a82fc343">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0519f9db-5dd3-4a79-ace6-2556cc98768a">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_712c0aac-4ab0-4b4f-80cd-ab3906fe6c0a">The Y position of this Origin in the coordinate system of the Abstract Multi-Dimensional Image Model.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7fb18687-be02-4be0-8474-9662cf830086">&gt;&gt;&gt;zCoord</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_b3f773c5-ef70-4963-88c2-4e40bff26162">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5347cea0-6bb0-4a0f-a606-bec28220f29f">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_840bb600-d381-449a-9536-783cb215840b">The Z position of this Origin in the coordinate system of the Abstract Multi-Dimensional Image Model.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_10b70e3e-e3b6-4c7a-8818-2b065cd18e78">&gt;&gt;DirectionCosines</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_16e61ab9-6b95-45ca-ba3b-3e5e82dbc5db">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_13e85e57-49c2-4a5b-a611-9ad11574e482">0-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e9ed553f-5818-4407-8051-87b3229ac266">Specifies the direction in the coordinate system of the Abstract Multi-Dimensional Image Model of the Dimension whose idNumber is given in concernedSpatialDimension. The idNumber of the concernedSpatialDimension shall be less than the idNumber of this Dimension. If there is only a single DirectionCosines XML element within this Dimension XML element with a particular concernedSpatialDimension, then this Direction Cosine applies to all samples along this Dimension. Otherwise, there shall be numberOfSamples DirectionCosines XML elements with this particular concernedSpatialDimension, one for each sample along this Dimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_002d008b-f208-4639-8e7f-1c17e0bcf7d9">&gt;&gt;&gt;concernedSpatialDimension</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_645df634-2010-4a27-bacc-0b577dfe9918">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_80858e54-6a44-4be4-914f-21b805597939">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_b3a8eaff-41d0-4bc5-bdbe-9427a0826e19">The idNumber of the particular Dimension for which this DirectionCosines XML element applies. The value of concernedSpatialDimension shall be less than the idNumber of this Dimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_7e6312bb-ef15-4989-9542-5087d8ff032c">&gt;&gt;&gt;index</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5c32ce3b-dbd7-468b-bcb9-cb64976f3f02">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_73e0f7f1-3650-4a56-bf87-50feaa4b9b79">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_a918e16f-fa2e-4e4b-8866-c1ae9e016d01">Index of this direction specification, with numbering starting from 1. If this is a single-valued DirectionCosines that applies to all samples along this Dimension then index shall either be left out or given a value of "0" (zero). Otherwise, the value of index refers to the DirectionCosines of a particular sample value along this Dimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_9edff011-e348-44fc-b309-aefd8a9da287">&gt;&gt;&gt;cosAlongX</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_e437981c-e937-4ced-8e70-6db107414ec0">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_b5faf2c1-bf3a-4337-8ae2-4037b84ff6f9">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_c6edc288-f048-4662-a8f9-b2413e72a5ba">The direction cosine along the X axis of the coordinate system of the Abstract Multi-Dimensional Image Model for this concernedSpatialDimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_6bc06f34-305b-456d-bdca-85f190f11cb9">&gt;&gt;&gt;cosAlongY</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_c7ec0b05-6568-4bd3-a6f7-f50902c89c67">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_8cb451c1-eef6-4765-8cbf-42ce82b61a65">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f0e2ea0a-e5c0-4120-96c1-a232208916c5">The direction cosine along the Y axis of the coordinate system of the Abstract Multi-Dimensional Image Model for this concernedSpatialDimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_bd01e77b-0a4b-40b1-a217-7f886d26f736">&gt;&gt;&gt;cosAlongZ</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_72eb707a-bec6-459d-8752-05c78c499deb">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_520a4e96-a3f0-4ad9-93a2-c782f89115c1">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_405ef752-8e3c-4067-b30c-74d429d1e24a">The direction cosine along the Z axis of the coordinate system of the Abstract Multi-Dimensional Image Model for this concernedSpatialDimension.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f7f7debd-de4a-4121-8503-1179fc2c5daf">&gt;PixelData</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_aa9db9c1-b9ec-4120-9800-f16ca0f30de1">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_ab36e8aa-7d1d-43c2-af2f-dea5d435ed38">1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_5f3e5829-637d-4400-b8a8-d5c48aa05549">Structure that defines where the pixel data is located, organized along dimensional lines.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="4" rowspan="1">
                <para xml:id="para_2dac2c5e-953f-40fc-aaa4-d7f7d400cdcc">
                  <emphasis role="italic">&gt;&gt;Include <xref linkend="table_A.2.5-2" xrefstyle="select: label quotedtitle"/>
</emphasis>
                </para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_1dd5cb02-5962-4122-bfab-c23ceb2564d9">&gt;PixelMapOfValidData</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5c7eced9-466c-40e1-bd11-ca39b7b76685">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5ca624fc-38a7-4839-b2ca-5c6f41a5ce99">0-1</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_874234c6-64e6-4eca-ae77-3ada7c19f210">A pixel map that identifies which pixels either belong in or out of the Data Set. The dimensions of the pixel map match the dimensions of the image data, i.e., there is a one-to-one correspondence between samples in the image data and samples in the pixel map. The pointers to the pixel map data are included in one of the Dimension XML elements.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_52994e88-3f3f-4416-a105-e0181ecc3a39">&gt;&gt;datatype</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_1c3d7054-cbcf-4826-a1b3-759fa2fabb08">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_1bd9cc62-7ab3-4a6b-8db6-8477fd1bb192">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_5f6eb7b2-9637-4690-afd2-3260663b871b">Describes how samples in the pixel map are encoded. Enumerated values are:</para>
                <para xml:id="para_1cb0d651-1827-4519-807a-3765fd0420e4">BIT1</para>
                <para xml:id="para_f03f82f3-daa5-41ab-add2-c06b9332d3c3">UNSIGNED_INT8</para>
                <para xml:id="para_69c38ea9-c490-488e-8d39-23216c2d0eb3">For BIT1, the bit ordering starts from the least significant bit going to the most significant bit within an UNSIGNED_INT8 (i.e., 8 bit) byte. The bits are zero-padded to make a full 8-bit byte at the end of the most rapidly changing dimension (i.e., the Dimension whose idNumber is 1).</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_accf3ced-5b3e-41ce-8afe-ba2cb773278a">&gt;&gt;inValue</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_7ab8f456-dca3-4425-9848-16f3e71a8fbc">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_40e7e19b-a79f-41a3-aafc-87d1b36ffea4">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_cdd0a009-8182-4795-938b-d86e5a082ed0">The value within the pixel map that indicates that this sample shall be considered as part of the Data Set. All samples whose pixel map values do not match inValue shall not be considered as part of the Data Set. Required if outValue is not present. Shall not be present if outValue is present.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_23f34776-54ff-4080-8af4-2c67b7bba298">&gt;&gt;outValue</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_70b61a19-956a-4585-8494-23dad8395cf6">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_a327072e-6062-447d-8f14-83d0a48024c2">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e98ed17b-25a8-4e8a-b419-ad40dd3be458">The value within the pixel map that indicates that this sample shall not be considered as part of the Data Set. All samples whose pixel map values do not match outValue shall be considered as part of the Data Set. Required if inValue is not present. Shall not be present if inValue is present.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="4" rowspan="1">
                <para xml:id="para_640d3831-3c12-4ad7-ae4e-ab78d8fff5c3">&gt;&gt;<emphasis role="italic">Include <xref linkend="table_A.2.5-2" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
            </tr>
          </tbody>
        </table>
        <table frame="box" label="A.2.5-2" rules="all" xml:id="table_A.2.5-2">
          <caption>Dimensional Data Macro</caption>
          <tbody>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_51163a57-c1a8-4259-8418-fd94e029a115">&gt;dimensionID</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_175fdfc0-a781-4fc5-aff8-ef36743fdfae">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_83b0736e-0598-4826-90ed-1a06d2d18a5f">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_8b40b0d3-ed2a-4743-972f-fc08ee36f784">The idNumber of the Dimension in this AbstractImageDataSet to which this DimensionalData refers.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f4994d54-4561-4f09-92ea-371f5aa253b8">&gt;DataAt</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_0b1465be-0417-4650-9edf-1ab6af07e88a">O</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_d4c4a8ba-8e62-4370-bb49-997c4d9a2db2">1-n</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_283e5fe3-83a3-4c1d-a99e-540124a1c86a">References to where the image data is located. Only one Dimension XML Element within this AbstractImageDataSet shall have UUIDs for bulk pixel data (i.e., all bulk data references are at the same dimensional level).</para>
                <note>
                  <para xml:id="para_3ae6765d-616b-496a-9c52-05a9479d6350">If the source of the data, as part of the model preparation, creates a single file for pixel data from multiple smaller native objects, then in order to provide the descriptorUUID XML Attributes the source may need to create multiple bulkDataUUIDs referring to different offsets within that single pixel data file.</para>
                </note>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_55e8948d-37f3-46ad-b10e-a07be991f7c4">&gt;&gt;indexWithinDimension</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_03165e44-164a-4884-931d-8a7a1cdb4ff1">R</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_5f58d4f6-9dbc-40e5-89b8-186428c67e27">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_b8566720-7db7-4564-a0e1-eda153be2395">The ordinal position (e.g., index number) of this sample point in the array of data at this level. Numbering starts from 1.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_700a6dd8-e965-4f27-9bd8-54413f07548e">&gt;&gt;descriptorUUID</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_7fdb0ece-ea39-40bd-8761-b9be42c7ffe6">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_178a9075-85fd-4d3e-8c34-0433843effd6">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_f0e3d00e-941a-470e-8106-4d757aebbb74">A UUID that refers to the ObjectDescriptor from which this data is drawn, formatted in the hexadecimal representation defined by <xref linkend="biblio_ITU-T_X.667"/>.</para>
                <para xml:id="para_785d747a-4132-485d-a920-a29052f24979">Required at the level of the nested tree structure where the source added the data from the descriptorUUID into the Abstract Multi-Dimensional Image Model.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_e922673e-9e09-4d7a-9204-7bbaeafd6119">&gt;&gt;bulkDataUUID</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_52a0a201-099c-453c-a66c-4455e93bc239">C</para>
              </td>
              <td align="center" colspan="1" rowspan="1">
                <para xml:id="para_206d6274-dbed-4ba5-8373-0193fd7ebf2e">A</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_edd8f19f-5bd0-4769-835d-41a21025a6c2">The identifier that the recipient of the data may use in a getData() call to gain access to the bulk pixel data formatted as a UUID using the hexadecimal representation defined in <xref linkend="biblio_ITU-T_X.667"/>.</para>
                <para xml:id="para_42aec7fa-0dee-43ee-aae5-26721131025c">Required if the Dimensional Data Macro is not present at this level of the nested tree structure. Shall not be present otherwise.</para>
              </td>
            </tr>
            <tr valign="top">
              <td align="left" colspan="3" rowspan="1">
                <para xml:id="para_5a22c85d-6bdf-4f99-9749-8039acf99b73">&gt;&gt;<emphasis role="italic">Conditionally include <xref linkend="table_A.2.5-2" xrefstyle="select: label quotedtitle"/>
</emphasis>
</para>
              </td>
              <td align="left" colspan="1" rowspan="1">
                <para xml:id="para_4dc68802-c3b3-4184-9505-4fd46a03de1b">Only one of bulkDataUUID or Dimensional Data shall be included at each level. If Dimensional Data is included, it shall be the next lower level of the nested tree structure, that is the Dimension with an idNumber one less than the Dimension referred to by the enclosing DimensionalData.</para>
              </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section label="A.2.6" status="3" xml:id="sect_A.2.6">
        <title>Schema</title>
        <para xml:id="para_df3d539e-9be9-4802-a3b9-afb7bb6b87f2">The Relax NG Compact schema for the Abstract Multi-Dimensional Image Model follows:</para>
        <programlisting><![CDATA[default namespace = "http://dicom.nema.org/PS3.19/models/AbstractImage"

start = AbstractImageDataSet
AbstractImageDataSet = 

 element AbstractImageDataSet {
    element Component{
      attribute idNumber { xsd:positiveInteger },
      attribute datatype { ComponentDatatype },
      attribute minValue { xsd:double }?,
      attribute maxValue { xsd:double }?,
      element Semantics { CodedTerm },
      element Unit { CodedTerm }
    }+,
    element Dimension {
      attribute idNumber { xsd:positiveInteger },
      attribute numberOfSamples { xsd:positiveInteger },
      element Semantics { CodedTerm },
      (element Regular {
         attribute width { xsd:double },
         attribute spacing { xsd:double },
         element Unit { CodedTerm },
         element AxisDirection { CodedTerm }?,
         element AxisOrientation { CodedTerm }?
       }
       | element Irregular {
           attribute origin { xsd:double },
           element SampleLocation {
             attribute index { xsd:positiveInteger },
             attribute width { xsd:double },
             attribute distanceToOrigin { xsd:double }
           }+,
         element Unit { CodedTerm },
         element AxisDirection { CodedTerm }?,
         element AxisOrientation { CodedTerm }?
         }
       | element Qualitative {
           element Sample {
             attribute index { xsd:positiveInteger },
             element Semantics { CodedTerm }
           }+
         }),
      element Origin {
        attribute index { xsd:nonNegativeInteger }?,
        attribute xCoord { xsd:double },
        attribute yCoord { xsd:double },
        attribute zCoord { xsd:double }
      }*,
      element DirectionCosines {
        attribute concernedSpatialDimension { xsd:positiveInteger },
        attribute index { xsd:nonNegativeInteger }?,
        attribute cosAlongX { xsd:double },
        attribute cosAlongY { xsd:double },
        attribute cosAlongZ { xsd:double }
      }*
    }+,
    element PixelData { DimensionalData },
    element PixelMapOfValidData {
      attribute datatype { PixelMapDatatype },
      (
        attribute inValue { xsd:positiveInteger }
        | attribute outValue { xsd:positiveInteger }
      ),
      DimensionalData
    }?
  }

ComponentDatatype =
    "SIGNED_INT8"
    | "SIGNED_INT16"
    | "SIGNED_INT32"
    | "UNSIGNED_INT8"
    | "UNSIGNED_INT16"
    | "UNSIGNED_INT32"
    | "FLOAT32"
    | "FLOAT64"
  
PixelMapDatatype = 
    "BIT1"
    | "UNSIGNED_INT8"

DimensionalData =
  element DimensionalData {
    attribute dimensionID { xsd:positiveInteger },
    element DataAt 
    {
      attribute indexWithinDimension { xsd:positiveInteger },
      attribute descriptorUUID { xsd:string }?,
      (DimensionalData | BulkDataPointer)
    }+
  }

BulkDataPointer = 
    attribute bulkDataUUID { xsd:string }

CodedTerm = 
    element CodeValue { xsd:string },
    element CodingSchemeDesignator { xsd:string },
    element CodingSchemeVersion { xsd:string }?,
    element CodeMeaning { xsd:string }?,
    (
      element ContextIdentifier { xsd:string },
      element ContextUID { xsd:string }?,
      element MappingResource { xsd:string },
      element MappingResourceUID { xsd:string }?,
      element ContextGroupVersion { xsd:string }
    )?,
    (
      element ContextGroupExtensionFlag { xsd:string },
      element ContextGroupLocalVersion { xsd:string }?,
      element ContextGroupExtensionCreatorUID { xsd:string }?
    )?
]]></programlisting>
      </section>
      <section label="A.2.7" status="3" xml:id="sect_A.2.7">
        <title>Examples</title>
        <section label="A.2.7.1" status="4" xml:id="sect_A.2.7.1">
          <title>Simple 3D Volume</title>
          <para xml:id="para_ec942260-c1df-4a46-8342-2b9c159a69b3">
            <figure label="A.2.7.1-1" pgwide="1" xml:id="figure_A.2.7.1-1">
              <title>Simple 3D Volume Example</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="figures/PS3.19_A.2.7.1-1.svg"/>
                  <!--<imagedata fileref="part19_fromword_files/image018.png"/>-->
                </imageobject>
              </mediaobject>
            </figure>
          </para>
        </section>
        <section label="A.2.7.2" status="4" xml:id="sect_A.2.7.2">
          <title>Simple 4D Volume</title>
          <para xml:id="para_5882fe98-374a-4b8b-a059-5cd893be32d6">
            <figure label="A.2.7.2-1" pgwide="1" xml:id="figure_A.2.7.2-1">
              <title>Simple 4D Volume Example</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="figures/PS3.19_A.2.7.2-1.svg"/>
                  <!--<imagedata fileref="part19_fromword_files/image020.png"/>-->
                </imageobject>
              </mediaobject>
            </figure>
          </para>
        </section>
        <section label="A.2.7.3" status="4" xml:id="sect_A.2.7.3">
          <title>2D Ultrasound</title>
          <para xml:id="para_cc5c2b86-7201-4877-afaf-608488791791">
            <figure label="A.2.7.3-1" pgwide="1" xml:id="figure_A.2.7.3-1">
              <title>2D Ultrasound Example</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="figures/PS3.19_A.2.7.3-1.svg"/>
                  <!--<imagedata fileref="part19_fromword_files/figure_A.2.7.3-1.png"/>-->
                </imageobject>
              </mediaobject>
            </figure>
          </para>
          <itemizedlist>
            <listitem>
              <para xml:id="para_542e6591-c63e-4f96-9031-36f756fe059b">In this particular case, we have three dimensions, numbered #1 for displacements along X, #2 for displacements along Y, and #3 to index the time series. If we have 200 images along time (i.e., the <emphasis role="italic">numberOfSamples</emphasis> XML Attribute is set to 200), we will then have 400 occurrences of the <emphasis role="italic">DirectionCosines</emphasis> XML Element within the <emphasis role="italic">Dimension</emphasis> XML Element whose <emphasis role="italic">idNumber</emphasis> XML Attribute is set to #3 (the dimension referring to time). The 200 first occurrences will have the XML Attribute <emphasis role="italic">concernedSpatialDimension</emphasis> with value #1 (to specify direction cosines along the X axis) and will be indexed by the XML Attribute <emphasis role="italic">index</emphasis> varying from 1 to 200 corresponding to the 200 images along time. The 200 following occurrences will have the XML Attribute <emphasis role="italic">concernedSpatialDimension</emphasis> with value #2 (to specify direction cosines along the Y axis), and will also be indexed by the XML Attribute <emphasis role="italic">index</emphasis> varying from 1 to 200.</para>
            </listitem>
            <listitem>
              <para xml:id="para_f13bb6a8-25e4-4916-9669-3ca9b09aa54a">Similarly, in this example we will have 200 occurrences of the <emphasis role="italic">Origin</emphasis> XML Element within the Dimension XML Element that has the <emphasis role="italic">idNumber</emphasis> XML Attribute set to the value 3, and of course by the XML Attribute <emphasis role="italic">index</emphasis> varying from 1 to 200.</para>
            </listitem>
          </itemizedlist>
        </section>
        <section label="A.2.7.4" status="4" xml:id="sect_A.2.7.4">
          <title>3D MR Metabolite Map - Single Component</title>
          <para xml:id="para_7fe7cc2a-290e-474d-9e3b-f05db6951dca">
            <figure label="A.2.7.4-1" pgwide="1" xml:id="figure_A.2.7.4-1">
              <title>Single Component 3D MR Metabolite Example</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="figures/PS3.19_A.2.7.4-1.svg"/>
                  <!--<imagedata fileref="part19_fromword_files/image022.png"/>-->
                </imageobject>
              </mediaobject>
            </figure>
          </para>
        </section>
        <section label="A.2.7.5" status="4" xml:id="sect_A.2.7.5">
          <title>3D MR Metabolite Map - Multiple Component</title>
          <para xml:id="para_ae0c5ee6-6e1c-4b1f-aaf5-fca27bdd170a">
            <figure label="A.2.7.5-1" pgwide="1" xml:id="figure_A.2.7.5-1">
              <title>Multiple Component 3D MR Metabolite Map Example</title>
              <mediaobject>
                <imageobject>
                  <imagedata fileref="figures/PS3.19_A.2.7.5-1.svg"/>
                  <!--<imagedata fileref="part19_fromword_files/image024.png"/>-->
                </imageobject>
              </mediaobject>
            </figure>
          </para>
        </section>
      </section>
    </section>
  </chapter>
  <chapter label="B" status="1" xml:id="chapter_B">
    <title>Interface Definitions</title>
    <section label="B.1" status="2" xml:id="sect_B.1">
      <title>Application Interface - Version 20100825</title>
      <section label="B.1.1" status="3" xml:id="sect_B.1.1">
        <title>WSDL Definition of the Interface</title>
        <para xml:id="para_5ff5c208-8369-4567-b06b-0502f7f8d08e">The following is the content of ApplicationService-20100825.wsdl:</para>
        <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="ApplicationService-20100825"
targetNamespace="http://dicom.nema.org/PS3.19/ApplicationService-20100825"
xmlns:tns="http://dicom.nema.org/PS3.19/ApplicationService-20100825"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsa10="http://www.w3.org/2005/08/addressing"
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://dicom.nema.org/PS3.19/Imports/ApplicationService-20100825">

      <xsd:import namespace="http://dicom.nema.org/PS3.19/ApplicationService-20100825"
      schemaLocation="./ApplicationService-20100825.xsd" />
      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/"
      schemaLocation="./Types.xsd" />
      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
      schemaLocation="./ArrayOfString.xsd" />
      <xsd:import namespace="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
      schemaLocation="./XPathNodeType.xsd" />
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="IApplicationService_GetState_InputMessage">
    <wsdl:part name="parameters" element="tns:GetState" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_GetState_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetStateResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_SetState_InputMessage">
    <wsdl:part name="parameters" element="tns:SetState" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_SetState_OutputMessage">
    <wsdl:part name="parameters" element="tns:SetStateResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_BringToFront_InputMessage">
    <wsdl:part name="parameters" element="tns:BringToFront" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_BringToFront_OutputMessage">
    <wsdl:part name="parameters" element="tns:BringToFrontResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_NotifyDataAvailable_InputMessage">
    <wsdl:part name="parameters" element="tns:NotifyDataAvailable" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_NotifyDataAvailable_OutputMessage">
    <wsdl:part name="parameters" element="tns:NotifyDataAvailableResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_GetData_InputMessage">
    <wsdl:part name="parameters" element="tns:GetData" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_GetData_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetDataResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_ReleaseData_InputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseData" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_ReleaseData_OutputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseDataResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_GetAsModels_InputMessage">
    <wsdl:part name="parameters" element="tns:GetAsModels" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_GetAsModels_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetAsModelsResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_ReleaseModels_InputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseModels" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_ReleaseModels_OutputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseModelsResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_QueryModel_InputMessage">
    <wsdl:part name="parameters" element="tns:QueryModel" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_QueryModel_OutputMessage">
    <wsdl:part name="parameters" element="tns:QueryModelResponse" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_QueryInfoSet_InputMessage">
    <wsdl:part name="parameters" element="tns:QueryInfoSet" />
  </wsdl:message>
  <wsdl:message name="IApplicationService_QueryInfoSet_OutputMessage">
    <wsdl:part name="parameters" element="tns:QueryInfoSetResponse" />
  </wsdl:message>
  <wsdl:portType name="IApplicationService-20100825">
    <wsdl:operation name="GetState">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/GetState"
      message="tns:IApplicationService_GetState_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/GetStateResponse"
      message="tns:IApplicationService_GetState_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="SetState">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/SetState"
      message="tns:IApplicationService_SetState_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/SetStateResponse"
      message="tns:IApplicationService_SetState_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="BringToFront">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/BringToFront"
      message="tns:IApplicationService_BringToFront_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/BringToFrontResponse"
      message="tns:IApplicationService_BringToFront_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="NotifyDataAvailable">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/NotifyDataAvailable"
      message="tns:IApplicationService_NotifyDataAvailable_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/NotifyDataAvailableResponse"
      message="tns:IApplicationService_NotifyDataAvailable_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetData">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/GetData"
      message="tns:IApplicationService_GetData_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/GetDataResponse"
      message="tns:IApplicationService_GetData_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ReleaseData">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/ReleaseData"
      message="tns:IApplicationService_ReleaseData_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/ReleaseDataResponse"
      message="tns:IApplicationService_ReleaseData_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetAsModels">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/GetAsModels"
      message="tns:IApplicationService_GetAsModels_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/GetAsModelsResponse"
      message="tns:IApplicationService_GetAsModels_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ReleaseModels">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/ReleaseModels"
      message="tns:IApplicationService_ReleaseModels_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/ReleaseModelsResponse"
      message="tns:IApplicationService_ReleaseModels_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="QueryModel">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/QueryModel"
      message="tns:IApplicationService_QueryModel_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/QueryModelResponse"
      message="tns:IApplicationService_QueryModel_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="QueryInfoSet">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/QueryInfoSet"
      message="tns:IApplicationService_QueryInfoSet_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IApplicationService/QueryInfoSetResponse"
      message="tns:IApplicationService_QueryInfoSet_OutputMessage" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="ApplicationService-20100825Binding"
  type="tns:IApplicationService-20100825">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="GetState">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/GetState"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="SetState">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/SetState"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BringToFront">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/BringToFront"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="NotifyDataAvailable">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/NotifyDataAvailable"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetData">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/GetData"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ReleaseData">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/ReleaseData"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetAsModels">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/GetAsModels"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ReleaseModels">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/ReleaseModels"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="QueryModel">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/QueryModel"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="QueryInfoSet">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IApplicationService/QueryInfoSet"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="ApplicationService-20100825">
    <wsdl:port name="ApplicationServiceBinding"
    binding="tns:ApplicationService-20100825Binding">
      <soap:address location="http://localhost/Service" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
]]></programlisting>
      </section>
      <section label="B.1.2" status="3" xml:id="sect_B.1.2">
        <title>Definition of Data Structures Used</title>
        <section label="B.1.2.1" status="4" xml:id="sect_B.1.2.1">
          <title>Primary Definitions</title>
          <para xml:id="para_60b5253a-b170-4196-a27e-d47cea750ced">The following is the content of ApplicationService-20100825.xsd</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://dicom.nema.org/PS3.19/ApplicationService-20100825"
elementFormDefault="qualified"
targetNamespace="http://dicom.nema.org/PS3.19/ApplicationService-20100825"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
  <xs:import namespace="http://schemas.datacontract.org/2004/07/System.Xml.XPath" />
  <xs:element name="GetState">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetStateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetStateResult" type="tns:State" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="State">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IDLE" />
      <xs:enumeration value="INPROGRESS" />
      <xs:enumeration value="SUSPENDED" />
      <xs:enumeration value="COMPLETED" />
      <xs:enumeration value="CANCELED" />
      <xs:enumeration value="EXIT" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="State" nillable="true" type="tns:State" />
  <xs:element name="SetState">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="state" type="tns:State" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SetStateResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="SetStateResult" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="BringToFront">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="location" nillable="true"
        type="tns:Rectangle" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="Rectangle">
    <xs:sequence>
      <xs:element minOccurs="0" name="Height" type="xs:int" />
      <xs:element minOccurs="0" name="Width" type="xs:int" />
      <xs:element minOccurs="0" name="RefPointX" type="xs:int" />
      <xs:element minOccurs="0" name="RefPointY" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Rectangle" nillable="true" type="tns:Rectangle" />
  <xs:element name="BringToFrontResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="BringToFrontResult"
        type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NotifyDataAvailable">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="data" nillable="true"
        type="tns:AvailableData" />
        <xs:element minOccurs="0" name="lastData" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="AvailableData">
    <xs:sequence>
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="Patients" nillable="true"
      type="tns:ArrayOfPatient" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AvailableData" nillable="true" type="tns:AvailableData" />
  <xs:complexType name="ArrayOfObjectDescriptor">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="ObjectDescriptor"
      nillable="true" type="tns:ObjectDescriptor" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfObjectDescriptor" nillable="true"
  type="tns:ArrayOfObjectDescriptor" />
  <xs:complexType name="ObjectDescriptor">
    <xs:sequence>
      <xs:element minOccurs="0" name="ClassUID" nillable="true"
      type="tns:UID" />
      <xs:element minOccurs="0" name="MimeType" nillable="true"
      type="tns:MimeType" />
      <xs:element minOccurs="0" name="Modality" nillable="true"
      type="tns:Modality" />
      <xs:element minOccurs="0" name="TransferSyntaxUID" nillable="true"
      type="tns:UID" />
      <xs:element minOccurs="0" name="DescriptorUuid" nillable="true"
      type="tns:UUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ObjectDescriptor" nillable="true"
  type="tns:ObjectDescriptor" />
  <xs:complexType name="UID">
    <xs:sequence>
      <xs:element minOccurs="0" name="Uid" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UID" nillable="true" type="tns:UID" />
  <xs:complexType name="MimeType">
    <xs:sequence>
      <xs:element minOccurs="0" name="Type" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="MimeType" nillable="true" type="tns:MimeType" />
  <xs:complexType name="Modality">
    <xs:sequence>
      <xs:element minOccurs="0" name="Modality" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Modality" nillable="true" type="tns:Modality" />
  <xs:complexType name="UUID">
    <xs:sequence>
      <xs:element minOccurs="0" name="Uuid" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UUID" nillable="true" type="tns:UUID" />
  <xs:complexType name="ArrayOfPatient">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Patient"
      nillable="true" type="tns:Patient" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfPatient" nillable="true"
  type="tns:ArrayOfPatient" />
  <xs:complexType name="Patient">
    <xs:sequence>
      <xs:element minOccurs="0" name="AssigningAuthority" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="DateOfBirth" type="xs:dateTime" />
      <xs:element minOccurs="0" name="ID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="Sex" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Studies" nillable="true"
      type="tns:ArrayOfStudy" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Patient" nillable="true" type="tns:Patient" />
  <xs:complexType name="ArrayOfStudy">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Study"
      nillable="true" type="tns:Study" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfStudy" nillable="true" type="tns:ArrayOfStudy" />
  <xs:complexType name="Study">
    <xs:sequence>
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="Series" nillable="true"
      type="tns:ArrayOfSeries" />
      <xs:element minOccurs="0" name="StudyUID" nillable="true"
      type="tns:UID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Study" nillable="true" type="tns:Study" />
  <xs:complexType name="ArrayOfSeries">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Series"
      nillable="true" type="tns:Series" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfSeries" nillable="true" type="tns:ArrayOfSeries" />
  <xs:complexType name="Series">
    <xs:sequence>
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="SeriesUID" nillable="true"
      type="tns:UID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Series" nillable="true" type="tns:Series" />
  <xs:element name="NotifyDataAvailableResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="NotifyDataAvailableResult"
        type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetData">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="objects" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="acceptableTransferSyntaxes"
        nillable="true" type="tns:ArrayOfUID" />
        <xs:element minOccurs="0" name="includeBulkData" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfUUID">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="UUID"
      nillable="true" type="tns:UUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfUUID" nillable="true" type="tns:ArrayOfUUID" />
  <xs:complexType name="ArrayOfUID">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="UID"
      nillable="true" type="tns:UID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfUID" nillable="true" type="tns:ArrayOfUID" />
  <xs:element name="GetDataResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDataResult" nillable="true"
        type="tns:ArrayOfObjectLocator" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfObjectLocator">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="ObjectLocator"
      nillable="true" type="tns:ObjectLocator" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfObjectLocator" nillable="true"
  type="tns:ArrayOfObjectLocator" />
  <xs:complexType name="ObjectLocator">
    <xs:sequence>
      <xs:element minOccurs="0" name="Length" type="xs:long" />
      <xs:element minOccurs="0" name="Offset" type="xs:long" />
      <xs:element minOccurs="0" name="TransferSyntax" nillable="true"
      type="tns:UID" />
      <xs:element minOccurs="0" name="URI" nillable="true" type="xs:anyURI" />
      <xs:element minOccurs="0" name="Locator" nillable="true"
      type="tns:UUID" />
      <xs:element minOccurs="0" name="Source" nillable="true"
      type="tns:UUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ObjectLocator" nillable="true" type="tns:ObjectLocator" />
  <xs:element name="ReleaseData">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="objects" nillable="true"
        type="tns:ArrayOfUUID" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReleaseDataResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsModels">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="objects" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="classUID" nillable="true"
        type="tns:UID" />
        <xs:element minOccurs="0" name="supportedInfoSetTypes" nillable="true"
        type="tns:ArrayOfMimeType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfMimeType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="MimeType"
      nillable="true" type="tns:MimeType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfMimeType" nillable="true"
  type="tns:ArrayOfMimeType" />
  <xs:element name="GetAsModelsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetAsModelsResult" nillable="true"
        type="tns:ModelSetDescriptor" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ModelSetDescriptor">
    <xs:sequence>
      <xs:element minOccurs="0" name="FailedSourceObjects" nillable="true"
      type="tns:ArrayOfUUID" />
      <xs:element minOccurs="0" name="InfosetType" nillable="true"
      type="tns:MimeType" />
      <xs:element minOccurs="0" name="Models" nillable="true"
      type="tns:ArrayOfUUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ModelSetDescriptor" nillable="true"
  type="tns:ModelSetDescriptor" />
  <xs:element name="ReleaseModels">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="models" nillable="true"
        type="tns:ArrayOfUUID" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReleaseModelsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="QueryModel">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="models" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="xPaths" nillable="true"
        xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
        type="q1:ArrayOfstring" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="QueryModelResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="QueryModelResult" nillable="true"
        type="tns:ArrayOfQueryResult" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfQueryResult">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="QueryResult"
      nillable="true" type="tns:QueryResult" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfQueryResult" nillable="true"
  type="tns:ArrayOfQueryResult" />
  <xs:complexType name="QueryResult">
    <xs:sequence>
      <xs:element minOccurs="0" name="Model" nillable="true" type="tns:UUID" />
      <xs:element minOccurs="0" name="Result" nillable="true"
      type="tns:ArrayOfXPathNode" />
      <xs:element minOccurs="0" name="XPath" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="QueryResult" nillable="true" type="tns:QueryResult" />
  <xs:complexType name="ArrayOfXPathNode">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="XPathNode"
      nillable="true" type="tns:XPathNode" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfXPathNode" nillable="true"
  type="tns:ArrayOfXPathNode" />
  <xs:complexType name="XPathNode">
    <xs:sequence>
      <xs:element minOccurs="0" name="NodeType"
      xmlns:q2="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
      type="q2:XPathNodeType" />
      <xs:element minOccurs="0" name="Value" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="XPathNode" nillable="true" type="tns:XPathNode" />
  <xs:element name="QueryInfoSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="models" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="xPaths" nillable="true"
        xmlns:q3="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
        type="q3:ArrayOfstring" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="QueryInfoSetResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="QueryInfoSetResult" nillable="true"
        type="tns:ArrayOfQueryResultInfoSet" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfQueryResultInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="QueryResultInfoSet"
      nillable="true" type="tns:QueryResultInfoSet" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfQueryResultInfoSet" nillable="true"
  type="tns:ArrayOfQueryResultInfoSet" />
  <xs:complexType name="QueryResultInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" name="Model" nillable="true" type="tns:UUID" />
      <xs:element minOccurs="0" name="Result" nillable="true"
      type="tns:ArrayOfXPathNodeInfoSet" />
      <xs:element minOccurs="0" name="XPath" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="QueryResultInfoSet" nillable="true"
  type="tns:QueryResultInfoSet" />
  <xs:complexType name="ArrayOfXPathNodeInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="XPathNodeInfoSet"
      nillable="true" type="tns:XPathNodeInfoSet" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfXPathNodeInfoSet" nillable="true"
  type="tns:ArrayOfXPathNodeInfoSet" />
  <xs:complexType name="XPathNodeInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" name="InfoSetValue" nillable="true"
      type="xs:base64Binary" />
      <xs:element minOccurs="0" name="NodeType"
      xmlns:q4="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
      type="q4:XPathNodeType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="XPathNodeInfoSet" nillable="true"
  type="tns:XPathNodeInfoSet" />
</xs:schema>
]]></programlisting>
        </section>
        <section label="B.1.2.2" status="4" xml:id="sect_B.1.2.2">
          <title>Referenced Definitions</title>
          <para xml:id="para_3dd2e445-0f6e-49a0-9f48-1d24338b2bbe">The following is the content of XPathNodeType.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
elementFormDefault="qualified"
targetNamespace="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="XPathNodeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Root" />
      <xs:enumeration value="Element" />
      <xs:enumeration value="Attribute" />
      <xs:enumeration value="Namespace" />
      <xs:enumeration value="Text" />
      <xs:enumeration value="SignificantWhitespace" />
      <xs:enumeration value="Whitespace" />
      <xs:enumeration value="ProcessingInstruction" />
      <xs:enumeration value="Comment" />
      <xs:enumeration value="All" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="XPathNodeType" nillable="true" type="tns:XPathNodeType" />
</xs:schema>
]]></programlisting>
          <para xml:id="para_e45c9833-51e3-47db-b945-ea67a1a41157">The following is the content of Types.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="anyType" nillable="true" type="xs:anyType" />
  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
  <xs:element name="boolean" nillable="true" type="xs:boolean" />
  <xs:element name="byte" nillable="true" type="xs:byte" />
  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
  <xs:element name="decimal" nillable="true" type="xs:decimal" />
  <xs:element name="double" nillable="true" type="xs:double" />
  <xs:element name="float" nillable="true" type="xs:float" />
  <xs:element name="int" nillable="true" type="xs:int" />
  <xs:element name="long" nillable="true" type="xs:long" />
  <xs:element name="QName" nillable="true" type="xs:QName" />
  <xs:element name="short" nillable="true" type="xs:short" />
  <xs:element name="string" nillable="true" type="xs:string" />
  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
  <xs:element name="char" nillable="true" type="tns:char" />
  <xs:simpleType name="char">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
  <xs:element name="duration" nillable="true" type="tns:duration" />
  <xs:simpleType name="duration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="guid" nillable="true" type="tns:guid" />
  <xs:simpleType name="guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:attribute name="FactoryType" type="xs:QName" />
  <xs:attribute name="Id" type="xs:ID" />
  <xs:attribute name="Ref" type="xs:IDREF" />
</xs:schema>
]]></programlisting>
          <para xml:id="para_c104cc5b-1e1e-4bf4-9020-4166ef75b3ee">The following is the content of ArrayOfString.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ArrayOfstring">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="string"
      nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
</xs:schema>
]]></programlisting>
        </section>
      </section>
    </section>
    <section label="B.2" status="2" xml:id="sect_B.2">
      <title>Host Interface - Version 20100825</title>
      <section label="B.2.1" status="3" xml:id="sect_B.2.1">
        <title>WSDL Definition of the Interface</title>
        <para xml:id="para_a7dda263-e962-4521-84e4-7910a8e2ca4b">The following is the content of HostService-20100825.wsdl:</para>
        <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="HostService-20100825"
targetNamespace="http://dicom.nema.org/PS3.19/HostService-20100825"
xmlns:tns="http://dicom.nema.org/PS3.19/HostService-20100825"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsa10="http://www.w3.org/2005/08/addressing"
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://dicom.nema.org/PS3.19/Imports/HostService-20100825">

      <xsd:import namespace="http://dicom.nema.org/PS3.19/HostService-20100825"
      schemaLocation="./HostService-20100825.xsd" />
      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/"
      schemaLocation="./Types.xsd" />
      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
      schemaLocation="./ArrayOfString.xsd" />
      <xsd:import namespace="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
      schemaLocation="./XPathNodeType.xsd" />
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="IHostService_GenerateUID_InputMessage">
    <wsdl:part name="parameters" element="tns:GenerateUID" />
  </wsdl:message>
  <wsdl:message name="IHostService_GenerateUID_OutputMessage">
    <wsdl:part name="parameters" element="tns:GenerateUIDResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetAvailableScreen_InputMessage">
    <wsdl:part name="parameters" element="tns:GetAvailableScreen" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetAvailableScreen_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetAvailableScreenResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetOutputLocation_InputMessage">
    <wsdl:part name="parameters" element="tns:GetOutputLocation" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetOutputLocation_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetOutputLocationResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_NotifyStateChanged_InputMessage">
    <wsdl:part name="parameters" element="tns:NotifyStateChanged" />
  </wsdl:message>
  <wsdl:message name="IHostService_NotifyStateChanged_OutputMessage">
    <wsdl:part name="parameters" element="tns:NotifyStateChangedResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_NotifyStatus_InputMessage">
    <wsdl:part name="parameters" element="tns:NotifyStatus" />
  </wsdl:message>
  <wsdl:message name="IHostService_NotifyStatus_OutputMessage">
    <wsdl:part name="parameters" element="tns:NotifyStatusResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_NotifyDataAvailable_InputMessage">
    <wsdl:part name="parameters" element="tns:NotifyDataAvailable" />
  </wsdl:message>
  <wsdl:message name="IHostService_NotifyDataAvailable_OutputMessage">
    <wsdl:part name="parameters" element="tns:NotifyDataAvailableResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetData_InputMessage">
    <wsdl:part name="parameters" element="tns:GetData" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetData_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetDataResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_ReleaseData_InputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseData" />
  </wsdl:message>
  <wsdl:message name="IHostService_ReleaseData_OutputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseDataResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetAsModels_InputMessage">
    <wsdl:part name="parameters" element="tns:GetAsModels" />
  </wsdl:message>
  <wsdl:message name="IHostService_GetAsModels_OutputMessage">
    <wsdl:part name="parameters" element="tns:GetAsModelsResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_ReleaseModels_InputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseModels" />
  </wsdl:message>
  <wsdl:message name="IHostService_ReleaseModels_OutputMessage">
    <wsdl:part name="parameters" element="tns:ReleaseModelsResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_QueryModel_InputMessage">
    <wsdl:part name="parameters" element="tns:QueryModel" />
  </wsdl:message>
  <wsdl:message name="IHostService_QueryModel_OutputMessage">
    <wsdl:part name="parameters" element="tns:QueryModelResponse" />
  </wsdl:message>
  <wsdl:message name="IHostService_QueryInfoSet_InputMessage">
    <wsdl:part name="parameters" element="tns:QueryInfoSet" />
  </wsdl:message>
  <wsdl:message name="IHostService_QueryInfoSet_OutputMessage">
    <wsdl:part name="parameters" element="tns:QueryInfoSetResponse" />
  </wsdl:message>
  <wsdl:portType name="IHostService-20100825">
    <wsdl:operation name="GenerateUID">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GenerateUID"
      message="tns:IHostService_GenerateUID_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GenerateUIDResponse"
      message="tns:IHostService_GenerateUID_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetAvailableScreen">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetAvailableScreen"
      message="tns:IHostService_GetAvailableScreen_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetAvailableScreenResponse"
      message="tns:IHostService_GetAvailableScreen_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetOutputLocation">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetOutputLocation"
      message="tns:IHostService_GetOutputLocation_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetOutputLocationResponse"
      message="tns:IHostService_GetOutputLocation_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="NotifyStateChanged">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/NotifyStateChanged"
      message="tns:IHostService_NotifyStateChanged_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/NotifyStateChangedResponse"
      message="tns:IHostService_NotifyStateChanged_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="NotifyStatus">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/NotifyStatus"
      message="tns:IHostService_NotifyStatus_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/NotifyStatusResponse"
      message="tns:IHostService_NotifyStatus_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="NotifyDataAvailable">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/NotifyDataAvailable"
      message="tns:IHostService_NotifyDataAvailable_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/NotifyDataAvailableResponse"
      message="tns:IHostService_NotifyDataAvailable_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetData">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetData"
      message="tns:IHostService_GetData_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetDataResponse"
      message="tns:IHostService_GetData_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ReleaseData">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/ReleaseData"
      message="tns:IHostService_ReleaseData_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/ReleaseDataResponse"
      message="tns:IHostService_ReleaseData_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="GetAsModels">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetAsModels"
      message="tns:IHostService_GetAsModels_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/GetAsModelsResponse"
      message="tns:IHostService_GetAsModels_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="ReleaseModels">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/ReleaseModels"
      message="tns:IHostService_ReleaseModels_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/ReleaseModelsResponse"
      message="tns:IHostService_ReleaseModels_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="QueryModel">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/QueryModel"
      message="tns:IHostService_QueryModel_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/QueryModelResponse"
      message="tns:IHostService_QueryModel_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="QueryInfoSet">
      <wsdl:input wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/QueryInfoSet"
      message="tns:IHostService_QueryInfoSet_InputMessage" />
      <wsdl:output
        wsaw:Action="http://dicom.nema.org/PS3.19/IHostService/QueryInfoSetResponse"
      message="tns:IHostService_QueryInfoSet_OutputMessage" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="HostService-YYYYNNDDBinding"
  type="tns:IHostService-20100825">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="GenerateUID">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/GenerateUID"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetAvailableScreen">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/GetAvailableScreen"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetOutputLocation">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/GetOutputLocation"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="NotifyStateChanged">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/NotifyStateChanged"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="NotifyStatus">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/NotifyStatus"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="NotifyDataAvailable">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/NotifyDataAvailable"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetData">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/GetData"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ReleaseData">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/ReleaseData"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetAsModels">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/GetAsModels"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ReleaseModels">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/ReleaseModels"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="QueryModel">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/QueryModel"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="QueryInfoSet">
      <soap:operation
         soapAction="http://dicom.nema.org/PS3.19/IHostService/QueryInfoSet"
      style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="HostService-20100825">
    <wsdl:port name="HostServiceBinding"
    binding="tns:HostService-YYYYNNDDBinding">
      <soap:address location="http://localhost/Service" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
]]></programlisting>
      </section>
      <section label="B.2.2" status="3" xml:id="sect_B.2.2">
        <title>Definition of Data Structures Used</title>
        <section label="B.2.2.1" status="4" xml:id="sect_B.2.2.1">
          <title>Primary Definitions</title>
          <para xml:id="para_f52b9979-5f3f-43f5-a82a-467799b6fe85">The following is the the contents of HostService-20100825.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://dicom.nema.org/PS3.19/HostService-20100825"
elementFormDefault="qualified"
targetNamespace="http://dicom.nema.org/PS3.19/HostService-20100825"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
  <xs:import namespace="http://schemas.datacontract.org/2004/07/System.Xml.XPath" />
  <xs:element name="GenerateUID">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GenerateUIDResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GenerateUIDResult" nillable="true"
        type="tns:UID" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="UID">
    <xs:sequence>
      <xs:element minOccurs="0" name="Uid" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UID" nillable="true" type="tns:UID" />
  <xs:element name="GetAvailableScreen">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="preferredScreen" nillable="true"
        type="tns:Rectangle" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="Rectangle">
    <xs:sequence>
      <xs:element minOccurs="0" name="Height" type="xs:int" />
      <xs:element minOccurs="0" name="Width" type="xs:int" />
      <xs:element minOccurs="0" name="RefPointX" type="xs:int" />
      <xs:element minOccurs="0" name="RefPointY" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Rectangle" nillable="true" type="tns:Rectangle" />
  <xs:element name="GetAvailableScreenResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetAvailableScreenResult"
        nillable="true" type="tns:Rectangle" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetOutputLocation">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="preferredProtocols" nillable="true"
        xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
        type="q1:ArrayOfstring" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetOutputLocationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetOutputLocationResult"
        nillable="true" type="xs:anyURI" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NotifyStateChanged">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="state" type="tns:State" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="State">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IDLE" />
      <xs:enumeration value="INPROGRESS" />
      <xs:enumeration value="SUSPENDED" />
      <xs:enumeration value="COMPLETED" />
      <xs:enumeration value="CANCELED" />
      <xs:enumeration value="EXIT" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="State" nillable="true" type="tns:State" />
  <xs:element name="NotifyStateChangedResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="NotifyStatus">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="status" nillable="true"
        type="tns:Status" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="Status">
    <xs:sequence>
      <xs:element minOccurs="0" name="StatusType" type="tns:StatusType" />
      <xs:element minOccurs="0" name="CodeValue" type="xs:int" />
      <xs:element minOccurs="0" name="CodingSchemeDesignator" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="CodeMeaning" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="ContextIdentifier" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="MappingResource" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="ContextGroupVersion" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="ContextGroupExtensionFlag"
      nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ContextGroupLocalVersion" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="ContextGroupExtensionCreatorUID"
      nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Status" nillable="true" type="tns:Status" />
  <xs:simpleType name="StatusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="INFORMATION" />
      <xs:enumeration value="WARNING" />
      <xs:enumeration value="ERROR" />
      <xs:enumeration value="FATALERROR" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="StatusType" nillable="true" type="tns:StatusType" />
  <xs:element name="NotifyStatusResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="NotifyDataAvailable">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="data" nillable="true"
        type="tns:AvailableData" />
        <xs:element minOccurs="0" name="lastData" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="AvailableData">
    <xs:sequence>
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="Patients" nillable="true"
      type="tns:ArrayOfPatient" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AvailableData" nillable="true" type="tns:AvailableData" />
  <xs:complexType name="ArrayOfObjectDescriptor">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="ObjectDescriptor"
      nillable="true" type="tns:ObjectDescriptor" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfObjectDescriptor" nillable="true"
  type="tns:ArrayOfObjectDescriptor" />
  <xs:complexType name="ObjectDescriptor">
    <xs:sequence>
      <xs:element minOccurs="0" name="ClassUID" nillable="true"
      type="tns:UID" />
      <xs:element minOccurs="0" name="MimeType" nillable="true"
      type="tns:MimeType" />
      <xs:element minOccurs="0" name="Modality" nillable="true"
      type="tns:Modality" />
      <xs:element minOccurs="0" name="TransferSyntaxUID" nillable="true"
      type="tns:UID" />
      <xs:element minOccurs="0" name="DescriptorUuid" nillable="true"
      type="tns:UUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ObjectDescriptor" nillable="true"
  type="tns:ObjectDescriptor" />
  <xs:complexType name="MimeType">
    <xs:sequence>
      <xs:element minOccurs="0" name="Type" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="MimeType" nillable="true" type="tns:MimeType" />
  <xs:complexType name="Modality">
    <xs:sequence>
      <xs:element minOccurs="0" name="Modality" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Modality" nillable="true" type="tns:Modality" />
  <xs:complexType name="UUID">
    <xs:sequence>
      <xs:element minOccurs="0" name="Uuid" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UUID" nillable="true" type="tns:UUID" />
  <xs:complexType name="ArrayOfPatient">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Patient"
      nillable="true" type="tns:Patient" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfPatient" nillable="true"
  type="tns:ArrayOfPatient" />
  <xs:complexType name="Patient">
    <xs:sequence>
      <xs:element minOccurs="0" name="AssigningAuthority" nillable="true"
      type="xs:string" />
      <xs:element minOccurs="0" name="DateOfBirth" type="xs:dateTime" />
      <xs:element minOccurs="0" name="ID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="Sex" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Studies" nillable="true"
      type="tns:ArrayOfStudy" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Patient" nillable="true" type="tns:Patient" />
  <xs:complexType name="ArrayOfStudy">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Study"
      nillable="true" type="tns:Study" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfStudy" nillable="true" type="tns:ArrayOfStudy" />
  <xs:complexType name="Study">
    <xs:sequence>
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="Series" nillable="true"
      type="tns:ArrayOfSeries" />
      <xs:element minOccurs="0" name="StudyUID" nillable="true"
      type="tns:UID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Study" nillable="true" type="tns:Study" />
  <xs:complexType name="ArrayOfSeries">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Series"
      nillable="true" type="tns:Series" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfSeries" nillable="true" type="tns:ArrayOfSeries" />
  <xs:complexType name="Series">
    <xs:sequence>
      <xs:element minOccurs="0" name="ObjectDescriptors" nillable="true"
      type="tns:ArrayOfObjectDescriptor" />
      <xs:element minOccurs="0" name="SeriesUID" nillable="true"
      type="tns:UID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Series" nillable="true" type="tns:Series" />
  <xs:element name="NotifyDataAvailableResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="NotifyDataAvailableResult"
        type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetData">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="objects" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="acceptableTransferSyntaxes"
        nillable="true" type="tns:ArrayOfUID" />
        <xs:element minOccurs="0" name="includeBulkData" type="xs:boolean" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfUUID">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="UUID"
      nillable="true" type="tns:UUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfUUID" nillable="true" type="tns:ArrayOfUUID" />
  <xs:complexType name="ArrayOfUID">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="UID"
      nillable="true" type="tns:UID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfUID" nillable="true" type="tns:ArrayOfUID" />
  <xs:element name="GetDataResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetDataResult" nillable="true"
        type="tns:ArrayOfObjectLocator" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfObjectLocator">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="ObjectLocator"
      nillable="true" type="tns:ObjectLocator" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfObjectLocator" nillable="true"
  type="tns:ArrayOfObjectLocator" />
  <xs:complexType name="ObjectLocator">
    <xs:sequence>
      <xs:element minOccurs="0" name="Length" type="xs:long" />
      <xs:element minOccurs="0" name="Offset" type="xs:long" />
      <xs:element minOccurs="0" name="TransferSyntax" nillable="true"
      type="tns:UID" />
      <xs:element minOccurs="0" name="URI" nillable="true" type="xs:anyURI" />
      <xs:element minOccurs="0" name="Locator" nillable="true"
      type="tns:UUID" />
      <xs:element minOccurs="0" name="Source" nillable="true"
      type="tns:UUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ObjectLocator" nillable="true" type="tns:ObjectLocator" />
  <xs:element name="ReleaseData">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="objects" nillable="true"
        type="tns:ArrayOfUUID" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReleaseDataResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAsModels">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="objects" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="classUID" nillable="true"
        type="tns:UID" />
        <xs:element minOccurs="0" name="supportedInfoSetTypes" nillable="true"
        type="tns:ArrayOfMimeType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfMimeType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="MimeType"
      nillable="true" type="tns:MimeType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfMimeType" nillable="true"
  type="tns:ArrayOfMimeType" />
  <xs:element name="GetAsModelsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="GetAsModelsResult" nillable="true"
        type="tns:ModelSetDescriptor" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ModelSetDescriptor">
    <xs:sequence>
      <xs:element minOccurs="0" name="FailedSourceObjects" nillable="true"
      type="tns:ArrayOfUUID" />
      <xs:element minOccurs="0" name="InfosetType" nillable="true"
      type="tns:MimeType" />
      <xs:element minOccurs="0" name="Models" nillable="true"
      type="tns:ArrayOfUUID" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ModelSetDescriptor" nillable="true"
  type="tns:ModelSetDescriptor" />
  <xs:element name="ReleaseModels">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="models" nillable="true"
        type="tns:ArrayOfUUID" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ReleaseModelsResponse">
    <xs:complexType>
      <xs:sequence />
    </xs:complexType>
  </xs:element>
  <xs:element name="QueryModel">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="models" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="xPaths" nillable="true"
        xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
        type="q2:ArrayOfstring" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="QueryModelResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="QueryModelResult" nillable="true"
        type="tns:ArrayOfQueryResult" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfQueryResult">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="QueryResult"
      nillable="true" type="tns:QueryResult" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfQueryResult" nillable="true"
  type="tns:ArrayOfQueryResult" />
  <xs:complexType name="QueryResult">
    <xs:sequence>
      <xs:element minOccurs="0" name="Model" nillable="true" type="tns:UUID" />
      <xs:element minOccurs="0" name="Result" nillable="true"
      type="tns:ArrayOfXPathNode" />
      <xs:element minOccurs="0" name="XPath" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="QueryResult" nillable="true" type="tns:QueryResult" />
  <xs:complexType name="ArrayOfXPathNode">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="XPathNode"
      nillable="true" type="tns:XPathNode" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfXPathNode" nillable="true"
  type="tns:ArrayOfXPathNode" />
  <xs:complexType name="XPathNode">
    <xs:sequence>
      <xs:element minOccurs="0" name="NodeType"
      xmlns:q3="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
      type="q3:XPathNodeType" />
      <xs:element minOccurs="0" name="Value" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="XPathNode" nillable="true" type="tns:XPathNode" />
  <xs:element name="QueryInfoSet">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="models" nillable="true"
        type="tns:ArrayOfUUID" />
        <xs:element minOccurs="0" name="xPaths" nillable="true"
        xmlns:q4="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
        type="q4:ArrayOfstring" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="QueryInfoSetResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="QueryInfoSetResult" nillable="true"
        type="tns:ArrayOfQueryResultInfoSet" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="ArrayOfQueryResultInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="QueryResultInfoSet"
      nillable="true" type="tns:QueryResultInfoSet" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfQueryResultInfoSet" nillable="true"
  type="tns:ArrayOfQueryResultInfoSet" />
  <xs:complexType name="QueryResultInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" name="Model" nillable="true" type="tns:UUID" />
      <xs:element minOccurs="0" name="Result" nillable="true"
      type="tns:ArrayOfXPathNodeInfoSet" />
      <xs:element minOccurs="0" name="XPath" nillable="true"
      type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="QueryResultInfoSet" nillable="true"
  type="tns:QueryResultInfoSet" />
  <xs:complexType name="ArrayOfXPathNodeInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="XPathNodeInfoSet"
      nillable="true" type="tns:XPathNodeInfoSet" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfXPathNodeInfoSet" nillable="true"
  type="tns:ArrayOfXPathNodeInfoSet" />
  <xs:complexType name="XPathNodeInfoSet">
    <xs:sequence>
      <xs:element minOccurs="0" name="InfoSetValue" nillable="true"
      type="xs:base64Binary" />
      <xs:element minOccurs="0" name="NodeType"
      xmlns:q5="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
      type="q5:XPathNodeType" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="XPathNodeInfoSet" nillable="true"
  type="tns:XPathNodeInfoSet" />
</xs:schema>
]]></programlisting>
        </section>
        <section label="B.2.2.2" status="4" xml:id="sect_B.2.2.2">
          <title>Referenced Definitions</title>
          <para xml:id="para_03fe4991-5b7b-463a-b324-b913a230748b">The following is the content of XPathNodeType.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
elementFormDefault="qualified"
targetNamespace="http://schemas.datacontract.org/2004/07/System.Xml.XPath"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="XPathNodeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Root" />
      <xs:enumeration value="Element" />
      <xs:enumeration value="Attribute" />
      <xs:enumeration value="Namespace" />
      <xs:enumeration value="Text" />
      <xs:enumeration value="SignificantWhitespace" />
      <xs:enumeration value="Whitespace" />
      <xs:enumeration value="ProcessingInstruction" />
      <xs:enumeration value="Comment" />
      <xs:enumeration value="All" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="XPathNodeType" nillable="true" type="tns:XPathNodeType" />
</xs:schema>
]]></programlisting>
          <para xml:id="para_67b625a9-f550-41bc-9c3d-b7a858b35ac0">The following is the content of Types.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="anyType" nillable="true" type="xs:anyType" />
  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
  <xs:element name="boolean" nillable="true" type="xs:boolean" />
  <xs:element name="byte" nillable="true" type="xs:byte" />
  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
  <xs:element name="decimal" nillable="true" type="xs:decimal" />
  <xs:element name="double" nillable="true" type="xs:double" />
  <xs:element name="float" nillable="true" type="xs:float" />
  <xs:element name="int" nillable="true" type="xs:int" />
  <xs:element name="long" nillable="true" type="xs:long" />
  <xs:element name="QName" nillable="true" type="xs:QName" />
  <xs:element name="short" nillable="true" type="xs:short" />
  <xs:element name="string" nillable="true" type="xs:string" />
  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
  <xs:element name="char" nillable="true" type="tns:char" />
  <xs:simpleType name="char">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
  <xs:element name="duration" nillable="true" type="tns:duration" />
  <xs:simpleType name="duration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="guid" nillable="true" type="tns:guid" />
  <xs:simpleType name="guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:attribute name="FactoryType" type="xs:QName" />
  <xs:attribute name="Id" type="xs:ID" />
  <xs:attribute name="Ref" type="xs:IDREF" />
</xs:schema>
]]></programlisting>
          <para xml:id="para_08da4a52-63ab-496c-85bc-3f467e08d46e">The following is the content of ArrayOfString.xsd:</para>
          <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ArrayOfstring">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="string"
      nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
</xs:schema>
]]></programlisting>
        </section>
      </section>
    </section>
  </chapter>
</book>
