Files
dicom-proxy/usr-dcmtk368/dsr2xml.xsd
2025-05-17 14:53:58 +07:00

1026 lines
38 KiB
XML

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dsr="http://dicom.offis.de/dcmsr"
targetNamespace="http://dicom.offis.de/dcmsr"
elementFormDefault="qualified">
<!-- Copyright Comment -->
<xsd:annotation>
<xsd:documentation xml:lang="en">
XML Schema for DCMTK tools dsr2xml and xml2dsr.
Copyright (C) 2003-2019, OFFIS e.V. and J. Riesmeier
All rights reserved. See COPYRIGHT file for details.
</xsd:documentation>
</xsd:annotation>
<!-- Starting Element -->
<xsd:element name="report" type="dsr:Report"/>
<!-- Complex Types (1st level) -->
<xsd:complexType name="Report">
<xsd:sequence>
<xsd:element name="sopclass" type="dsr:SOPClass"/>
<xsd:element name="charset" type="dsr:Charset" minOccurs="0"/>
<xsd:element name="timezone" type="dsr:Timezone" minOccurs="0"/>
<xsd:element name="modality" type="dsr:Modality" minOccurs="0"/>
<xsd:choice>
<xsd:element name="manufacturer" type="xsd:string" minOccurs="0"/>
<xsd:element name="device" type="dsr:Device"/>
</xsd:choice>
<xsd:element name="synchronization" type="dsr:Synchronization" minOccurs="0"/>
<xsd:element name="referringphysician" type="dsr:ReferringPhysician" minOccurs="0"/>
<xsd:element name="patient" type="dsr:Patient"/>
<xsd:element name="study" type="dsr:Study"/>
<xsd:element name="series" type="dsr:Series"/>
<xsd:element name="instance" type="dsr:Instance"/>
<xsd:element name="coding" type="dsr:Coding" minOccurs="0"/>
<xsd:element name="evidence" type="dsr:Evidence" minOccurs="0" maxOccurs="2"/>
<xsd:element name="reference" type="dsr:Reference" minOccurs="0"/>
<xsd:element name="document" type="dsr:Document"/>
</xsd:sequence>
<xsd:attribute name="type" type="dsr:ReportType"/>
</xsd:complexType>
<!-- Complex Types (2nd level) -->
<xsd:complexType name="SOPClass">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="Device">
<xsd:sequence>
<xsd:element name="manufacturer" type="dsr:LongString" minOccurs="0"/>
<xsd:element name="model" type="dsr:LongString"/>
<xsd:element name="serial" type="dsr:LongString" minOccurs="0"/>
<xsd:element name="version" type="dsr:LongString" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Synchronization">
<xsd:sequence>
<xsd:element name="trigger" type="dsr:SynchronizationTrigger"/>
<xsd:element name="acquisitiontime" type="dsr:YesNo"/>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
<xsd:complexType name="ReferringPhysician">
<xsd:sequence>
<xsd:element name="name" type="dsr:PersonName" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Patient">
<xsd:sequence>
<xsd:element name="id" type="dsr:LongString" minOccurs="0"/>
<xsd:element name="issuer" type="dsr:LongString" minOccurs="0"/>
<xsd:element name="name" type="dsr:PersonName" minOccurs="0"/>
<xsd:element name="birthday" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="date" type="dsr:Date" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sex" type="dsr:Sex" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Study">
<xsd:sequence>
<xsd:element name="id" type="dsr:ShortString" minOccurs="0"/>
<xsd:element name="date" type="dsr:Date" minOccurs="0"/>
<xsd:element name="time" type="dsr:Time" minOccurs="0"/>
<xsd:element name="accession" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="number" type="dsr:ShortString" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="description" type="dsr:LongString" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
<xsd:complexType name="Series">
<xsd:sequence>
<xsd:element name="number" type="dsr:IntegerString" minOccurs="0"/>
<xsd:element name="date" type="dsr:Date" minOccurs="0"/>
<xsd:element name="time" type="dsr:Time" minOccurs="0"/>
<xsd:element name="protocol" type="dsr:LongString" minOccurs="0"/>
<xsd:element name="description" type="dsr:LongString" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
<xsd:complexType name="Instance">
<xsd:sequence>
<xsd:element name="number" type="dsr:IntegerString" minOccurs="0"/>
<xsd:element name="creation" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="date" type="dsr:Date" minOccurs="0"/>
<xsd:element name="time" type="dsr:Time" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
<xsd:complexType name="Coding">
<xsd:sequence>
<xsd:element name="scheme" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="registry" type="dsr:LongString" minOccurs="0"/>
<xsd:element name="uid" type="dsr:UniqueIdentifier" minOccurs="0"/>
<xsd:element name="id" type="dsr:ShortText" minOccurs="0"/>
<xsd:element name="name" type="dsr:ShortText" minOccurs="0"/>
<xsd:element name="version" type="dsr:ShortString" minOccurs="0"/>
<xsd:element name="organization" type="dsr:ShortText" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="designator" type="dsr:ShortString" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Evidence">
<xsd:group ref="dsr:ReferencedSOPInstancesGroup"/>
<xsd:attribute name="type" type="dsr:EvidenceType" use="required"/>
</xsd:complexType>
<xsd:complexType name="Reference">
<xsd:sequence>
<xsd:element name="value" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="dsr:ReferencedSOP">
<xsd:sequence>
<xsd:element name="purpose" type="dsr:Code"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Document">
<xsd:sequence>
<xsd:element name="preliminary" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="flag" type="dsr:PreliminaryFlag" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="completion" minOccurs="0">
<!-- made "completion" optional to match 'KO', too -->
<xsd:complexType>
<xsd:sequence>
<xsd:element name="description" type="dsr:LongString" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="flag" type="dsr:CompletionFlag" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="verification" minOccurs="0">
<!-- made "verification" optional to match 'KO', too -->
<xsd:complexType>
<xsd:sequence>
<xsd:element name="observer" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="datetime" type="dsr:DateTime"/>
<xsd:element name="name" type="dsr:PersonName"/>
<xsd:element name="code" type="dsr:Code" minOccurs="0"/>
<xsd:element name="organization" type="dsr:LongString"/>
</xsd:sequence>
<xsd:attribute name="pos" type="xsd:positiveInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="flag" type="dsr:VerificationFlag" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="predecessor" type="dsr:ReferencedSOPInstances" minOccurs="0"/>
<xsd:element name="identical" type="dsr:ReferencedSOPInstances" minOccurs="0"/>
<xsd:element name="content" type="dsr:Content"/>
</xsd:sequence>
</xsd:complexType>
<!-- Complex Types (3rd level) -->
<xsd:complexType name="Content">
<xsd:sequence>
<xsd:element name="date" type="dsr:Date"/>
<xsd:element name="time" type="dsr:Time"/>
<xsd:element name="container">
<!-- special handling for root content item -->
<xsd:complexType>
<xsd:sequence>
<!-- template identification only for container items -->
<xsd:element name="template" type="dsr:Template" minOccurs="0"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<!-- open question: is at least one child content item required? -->
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
<xsd:attribute name="flag" type="dsr:ContinuityFlag" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReferencedSOPInstances">
<xsd:group ref="dsr:ReferencedSOPInstancesGroup"/>
</xsd:complexType>
<xsd:complexType name="Code">
<xsd:group ref="dsr:CodeGroup"/>
</xsd:complexType>
<!-- Complex Types (4th level) -->
<xsd:complexType name="Template">
<xsd:sequence>
<xsd:element name="resource" type="dsr:MappingResource"/>
<xsd:element name="id" type="dsr:CodeString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Observation">
<xsd:sequence>
<xsd:element name="datetime" type="dsr:DateTime" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier"/>
</xsd:complexType>
<xsd:complexType name="ReferencedSOP">
<xsd:sequence>
<xsd:element name="sopclass" type="dsr:SOPClass"/>
<xsd:element name="instance">
<xsd:complexType>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!-- Complex Types (5th level) -->
<xsd:complexType name="MappingResource">
<xsd:simpleContent>
<xsd:extension base="dsr:CodeString">
<xsd:attribute name="uid" type="dsr:UniqueIdentifier"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<!-- Groups -->
<xsd:group name="CodeGroup">
<xsd:sequence>
<xsd:element name="value" type="dsr:ShortString"/>
<xsd:element name="scheme">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="designator" type="dsr:ShortString"/>
<xsd:element name="version" type="dsr:ShortString" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="meaning" type="dsr:LongString"/>
</xsd:sequence>
</xsd:group>
<xsd:group name="NumericGroup">
<xsd:sequence>
<xsd:element name="value" type="dsr:DecimalString"/>
<xsd:element name="float" type="dsr:FloatingPointDouble" minOccurs="0"/>
<xsd:element name="rational" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="numerator" type="dsr:SignedLong"/>
<xsd:element name="denominator" type="dsr:UnsignedLong"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="unit" type="dsr:Code"/>
</xsd:sequence>
</xsd:group>
<xsd:group name="ReferencedSOPInstancesGroup">
<xsd:sequence>
<xsd:element name="study" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="series" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="aetitle" type="dsr:ApplicationEntity" minOccurs="0"/>
<xsd:element name="location" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="fileset" minOccurs="0">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dsr:ShortString">
<xsd:attribute name="uid" type="dsr:UniqueIdentifier"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="value" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="dsr:ReferencedSOP">
<xsd:sequence>
<xsd:element name="purpose" type="dsr:Code" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="ContentItem">
<xsd:choice>
<xsd:group ref="dsr:TextItem"/>
<xsd:group ref="dsr:CodeItem"/>
<xsd:group ref="dsr:NumItem"/>
<xsd:group ref="dsr:DateTimeItem"/>
<xsd:group ref="dsr:DateItem"/>
<xsd:group ref="dsr:TimeItem"/>
<xsd:group ref="dsr:UIDRefItem"/>
<xsd:group ref="dsr:PNameItem"/>
<xsd:group ref="dsr:SCoordItem"/>
<xsd:group ref="dsr:SCoord3DItem"/>
<xsd:group ref="dsr:TCoordItem"/>
<xsd:group ref="dsr:CompositeItem"/>
<xsd:group ref="dsr:ImageItem"/>
<xsd:group ref="dsr:WaveformItem"/>
<xsd:group ref="dsr:ContainerItem"/>
<xsd:group ref="dsr:ReferenceItem"/>
</xsd:choice>
</xsd:group>
<xsd:group name="TextItem">
<xsd:sequence>
<xsd:element name="text">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:UnlimitedText"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="CodeItem">
<xsd:sequence>
<xsd:element name="code">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="dsr:CodeGroup"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="NumItem">
<xsd:sequence>
<xsd:element name="num">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="dsr:NumericGroup" minOccurs="0"/>
<xsd:element name="qualifier" type="dsr:Code" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="DateTimeItem">
<xsd:sequence>
<xsd:element name="datetime">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:DateTime"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="DateItem">
<xsd:sequence>
<xsd:element name="date">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:Date"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="TimeItem">
<xsd:sequence>
<xsd:element name="time">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:Time"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="UIDRefItem">
<xsd:sequence>
<xsd:element name="uidref">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:UniqueIdentifier"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="PNameItem">
<xsd:sequence>
<xsd:element name="pname">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:PersonName"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="SCoordItem">
<xsd:sequence>
<xsd:element name="scoord">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="data" type="dsr:FloatPairList"/>
<xsd:element name="fiducial" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="type" type="dsr:SCoordType" use="required"/>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="SCoord3DItem">
<xsd:sequence>
<xsd:element name="scoord3d">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="data">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="dsr:FloatTripletList">
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="fiducial" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="uid" type="dsr:UniqueIdentifier" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="type" type="dsr:SCoord3DType" use="required"/>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="TCoordItem">
<xsd:sequence>
<xsd:element name="tcoord">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="data">
<xsd:complexType>
<xsd:simpleContent>
<!-- need to further specialize the data type (depending on 'type') -->
<xsd:extension base="xsd:string">
<xsd:attribute name="type" type="dsr:TCoordDataType" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="type" type="dsr:TCoordType" use="required"/>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="CompositeItem">
<xsd:sequence>
<xsd:element name="composite">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value" type="dsr:ReferencedSOP"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="ImageItem">
<xsd:sequence>
<xsd:element name="image">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="dsr:ReferencedSOP">
<xsd:sequence>
<xsd:choice>
<xsd:element name="frames" type="dsr:IntegerList" minOccurs="0"/>
<xsd:element name="segments" type="dsr:IntegerList" minOccurs="0"/>
</xsd:choice>
<xsd:element name="pstate" type="dsr:ReferencedSOP" minOccurs="0"/>
<xsd:element name="mapping" type="dsr:ReferencedSOP" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="WaveformItem">
<xsd:sequence>
<xsd:element name="waveform">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="value">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="dsr:ReferencedSOP">
<xsd:sequence>
<xsd:element name="channels" type="dsr:IntegerPairList" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="ContainerItem">
<xsd:sequence>
<xsd:element name="container">
<xsd:complexType>
<xsd:sequence>
<!-- template identification only for container items -->
<xsd:element name="template" type="dsr:Template" minOccurs="0"/>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
<xsd:element name="concept" type="dsr:Code" minOccurs="0"/>
<xsd:element name="observation" type="dsr:Observation" minOccurs="0"/>
<xsd:group ref="dsr:ContentItem" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="flag" type="dsr:ContinuityFlag" use="required"/>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<xsd:group name="ReferenceItem">
<xsd:sequence>
<xsd:element name="reference">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="relationship" type="dsr:RelationshipType"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:nonNegativeInteger"/>
<xsd:attribute name="ref" type="xsd:nonNegativeInteger" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:group>
<!-- Defined Terms / Enumerated Values -->
<xsd:simpleType name="ReportType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Basic Text SR"/>
<xsd:enumeration value="Enhanced SR"/>
<xsd:enumeration value="Comprehensive SR"/>
<xsd:enumeration value="Key Object Selection Document"/>
<xsd:enumeration value="Mammography CAD SR"/>
<xsd:enumeration value="Chest CAD SR"/>
<xsd:enumeration value="Colon CAD SR"/>
<xsd:enumeration value="Procedure Log"/>
<xsd:enumeration value="X-Ray Radiation Dose SR"/>
<xsd:enumeration value="Spectacle Prescription Report"/>
<xsd:enumeration value="Macular Grid Thickness and Volume Report"/>
<xsd:enumeration value="Implantation Plan SR Document"/>
<xsd:enumeration value="Comprehensive 3D SR"/>
<xsd:enumeration value="Radiopharmaceutical Radiation Dose SR"/>
<xsd:enumeration value="Extensible SR"/>
<xsd:enumeration value="Acquisition Context SR"/>
<xsd:enumeration value="Simplified Adult Echo SR"/>
<xsd:enumeration value="Patient Radiation Dose SR"/>
<xsd:enumeration value="Performed Imaging Agent Administration SR"/>
<xsd:enumeration value="Planned Imaging Agent Administration SR"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="EvidenceType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Current Requested Procedure"/>
<xsd:enumeration value="Pertinent Other"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="RelationshipType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CONTAINS"/>
<xsd:enumeration value="HAS OBS CONTEXT"/>
<xsd:enumeration value="HAS ACQ CONTEXT"/>
<xsd:enumeration value="HAS CONCEPT MOD"/>
<xsd:enumeration value="HAS PROPERTIES"/>
<xsd:enumeration value="INFERRED FROM"/>
<xsd:enumeration value="SELECTED FROM"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SCoordType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="POINT"/>
<xsd:enumeration value="MULTIPOINT"/>
<xsd:enumeration value="POLYLINE"/>
<xsd:enumeration value="CIRCLE"/>
<xsd:enumeration value="ELLIPSE"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SCoord3DType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="POINT"/>
<xsd:enumeration value="MULTIPOINT"/>
<xsd:enumeration value="POLYLINE"/>
<xsd:enumeration value="POLYGON"/>
<xsd:enumeration value="ELLIPSE"/>
<xsd:enumeration value="ELLIPSOID"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TCoordType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="POINT"/>
<xsd:enumeration value="MULTIPOINT"/>
<xsd:enumeration value="SEGMENT"/>
<xsd:enumeration value="MULTISEGMENT"/>
<xsd:enumeration value="BEGIN"/>
<xsd:enumeration value="END"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TCoordDataType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SAMPLE POSITION"/>
<xsd:enumeration value="TIME OFFSET"/>
<xsd:enumeration value="DATETIME"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PreliminaryFlag">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="PRELIMINARY"/>
<xsd:enumeration value="FINAL"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="CompletionFlag">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="PARTIAL"/>
<xsd:enumeration value="COMPLETE"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="VerificationFlag">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="VERIFIED"/>
<xsd:enumeration value="UNVERIFIED"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ContinuityFlag">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SEPARATE"/>
<xsd:enumeration value="CONTINUOUS"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SynchronizationTrigger">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SOURCE"/>
<xsd:enumeration value="EXTERNAL"/>
<xsd:enumeration value="PASSTHRU"/>
<xsd:enumeration value="NO TRIGGER"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Charset">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ISO_IR 6"/>
<xsd:enumeration value="ISO_IR 100"/>
<xsd:enumeration value="ISO_IR 101"/>
<xsd:enumeration value="ISO_IR 109"/>
<xsd:enumeration value="ISO_IR 110"/>
<xsd:enumeration value="ISO_IR 144"/>
<xsd:enumeration value="ISO_IR 127"/>
<xsd:enumeration value="ISO_IR 126"/>
<xsd:enumeration value="ISO_IR 138"/>
<xsd:enumeration value="ISO_IR 148"/>
<xsd:enumeration value="ISO_IR 166"/>
<xsd:enumeration value="ISO 2022 IR 13\ISO 2022 IR 87"/>
<xsd:enumeration value="ISO 2022 IR 6\ISO 2022 IR 149"/>
<xsd:enumeration value="ISO 2022 IR 6\ISO 2022 IR 58"/>
<xsd:enumeration value="GB18030"/>
<xsd:enumeration value="GBK"/>
<xsd:enumeration value="ISO_IR 192"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Modality">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SR"/>
<xsd:enumeration value="KO"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Sex">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="M"/>
<xsd:enumeration value="F"/>
<xsd:enumeration value="O"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="YesNo">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="YES"/>
<xsd:enumeration value="NO"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Value Representations -->
<xsd:simpleType name="SignedLong">
<xsd:restriction base="xsd:int"/>
</xsd:simpleType>
<xsd:simpleType name="UnsignedLong">
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
<xsd:simpleType name="FloatingPointDouble">
<xsd:restriction base="xsd:double"/>
</xsd:simpleType>
<xsd:simpleType name="IntegerString">
<xsd:restriction base="xsd:integer">
<xsd:totalDigits value="12"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DecimalString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"/>
<xsd:maxLength value="16"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ShortString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="16"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="LongString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="64"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ShortText">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="1024"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="UnlimitedText">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="CodeString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Za-z0-9_ ]{1,16}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ApplicationEntity">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="16"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="UniqueIdentifier">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="64"/>
<xsd:pattern value="(([1-9][0-9]*)|0)(\.([1-9][0-9]*|0))+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Date">
<xsd:restriction base="xsd:date">
<xsd:pattern value="[0-9]{4}\-[0-9]{2}\-[0-9]{2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Time">
<xsd:restriction base="xsd:time">
<xsd:pattern value="[0-9]{2}:[0-9]{2}(:[0-9]{2})?"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DateTime">
<!-- cannot use xsd:dateTime here since this would make the "seconds" part mandatory -->
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}(:[0-9]{2}([\-+][0-9]{2}:[0-9]{2})?)?"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PersonName">
<!-- minLength? -->
<xsd:sequence>
<xsd:element name="prefix" type="xsd:string" minOccurs="0"/>
<xsd:element name="first" type="xsd:string" minOccurs="0"/>
<xsd:element name="middle" type="xsd:string" minOccurs="0"/>
<xsd:element name="last" type="xsd:string" minOccurs="0"/>
<xsd:element name="suffix" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<!-- Other Data Types -->
<xsd:simpleType name="Timezone">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\-+][0-9]{4}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="IntegerList">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d+(,\d+)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="IntegerPairList">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d+/\d+(,\d+/\d+)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="FloatList">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\-+]?\d+(\.\d+)?(,[\-+]?\d+(\.\d+)?)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="FloatPairList">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\-+]?\d+(\.\d+)?/[\-+]?\d+(\.\d+)?(,[\-+]?\d+(\.\d+)?/[\-+]?\d+(\.\d+)?)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="FloatTripletList">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\-+]?\d+(\.\d+)?/[\-+]?\d+(\.\d+)?/[\-+]?\d+(\.\d+)?(,[\-+]?\d+(\.\d+)?/[\-+]?\d+(\.\d+)?/[\-+]?\d+(\.\d+)?)*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>