forked from IHE-SDC-WG/SDC-Schema-Packages
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSDC_IDR.xsd
296 lines (274 loc) · 18.2 KB
/
SDC_IDR.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://healthIT.gov/sdc" xmlns="http://healthIT.gov/sdc">
<xs:include schemaLocation="SDCTemplateAdmin.xsd"/>
<xs:include schemaLocation="SDCFormDesign.xsd"/>
<xs:include schemaLocation="SDCMapping.xsd"/>
<xs:include schemaLocation="SDCOverrides.xsd"/>
<xs:element name="Package" type="PackageType">
<xs:annotation>
<xs:documentation>The Package contains a PackageModules object that can be administered by a registry, if desired.
The Admin element contains metadata conerning the registry status and file characteristcs of the PackageModules content.
PackageModules contains: the MainFormPackage, an optional DemogFormPackage (containing boilerplate demographic and administrative information used for exchanging Main Form data), and optional InjectedFormPackage(s). The InjectedFormPackage contains an optional sub-form to be injected into the FormDesignTemplate(s) for MainFormPackage and/or DemogFormPackage).
General notes on registered packages:
A Package may be registered as a single administered entity, and/or it may contain other independently-registered packages that may be nested to any level.
Any child element name that ends with "Package" or "Pkg" has an optional sibling Admin section and may be registered as an independent package if desired, or may be included inside a registered parent package. The registration granularity depends on the use case.
An element with a name that ends in "Package" derives from the FormPackageType. These include: MainFormPackage, DemogFormPackage, and InjectedFormPackage. FormPackageType derives from BasePackageType
An element with a name that ends in "Pkg" derives from the BasePackageType. These include FormDesignPkg, FormRulesPkg, MapPkg, FormOverridesPkg, ReportingPkg, and HelperFilesPkg.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="FormPackageType">
<xs:annotation>
<xs:documentation>FormPackageType contains object types to completely describe the information content of a data-entry form, its metadata, and support modules.
It contains an Admin element that represents metadata conerning the registration status and file characteristcs of the registerred FormPackageModules content.
It also contains a registered FormPackageModules object that can be stored and administered by a registry, if desired.
FormPackageModules contains one FormDesignPkg (describes the form content), several several ancillary packages (these end with the letters "Pkg,"), a SubmissionRule, and a ComplianceRule.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element name="FormPackageModules">
<xs:annotation>
<xs:documentation>FormPackageModules groups together all elements covered by the Admin element metadata. It is designed to create a registered package object that can be stored and administered by a registry, if desired.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="SubmissionRule" type="SubmissionRuleType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="ComplianceRule" type="ComplianceRuleType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
</xs:element>
<xs:element name="FormDesignPkg" minOccurs="0" type="FormDesignPkgType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
</xs:element>
<xs:element name="FormRulesPkg" minOccurs="0" maxOccurs="unbounded" type="FormRulesPkgType"> </xs:element>
<xs:element name="MapPkg" minOccurs="0" maxOccurs="unbounded" type="MapPkgType"> </xs:element>
<xs:element name="FormOverridesPkg" minOccurs="0" type="FormOverridesPkgType"> </xs:element>
<xs:element name="ReportingPkg" minOccurs="0" type="ReportingPkgType" maxOccurs="unbounded"> </xs:element>
<xs:element maxOccurs="unbounded" name="HelperFilePkg" minOccurs="0" type="HelperFilePkgType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FormDesignPkgType">
<xs:annotation>
<xs:documentation>Describes the information content (FormDesignTemplate element) of a data-entry form (e.g., sections, questions etc) as well as administrative data (Admin element) about the form's registration in a form repository and its XML file metadata.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element ref="FormDesign"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FormOverridesPkgType">
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element maxOccurs="1" name="FormOverridesTemplate" type="OverrideTemplateType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="FormRulesPkgType">
<xs:annotation>
<xs:documentation>This rules model type is extremely preliminary, and is only used as a mechanism for testing out ideas for a rules language. Fundamentally, we would like to support:
--Referencing any object in the FormDesignTemplate, possibly using XPath 2.0 or similar object-based mechanism.
--Variable definition and referencing
--Variable value assignment
--Function definition and referencing
--Function libraries
--Web service calls that return objects or values
--Definition of polling rules (continual reading of the form's state to execute a function/action when a polling condition is met)
--Events (actions performed by the user that trigger the execution of a function/action)
--a simple pseudo-language, possibly XML-based, that could be translated into implementable code in popular programming languages.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element maxOccurs="1" name="RulesTemplate">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ExtensionBaseType">
<xs:attribute name="requiredFramework" type="xs:NMTOKENS">
<xs:annotation>
<xs:documentation>Programming Framework(s), API(s), and version(s) for rules in the current template</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="rulesLanguage" type="xs:NMTOKENS">
<xs:annotation>
<xs:documentation>Programming language(s) (and versions) for rules in the current template</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="templateAttributes"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="MapPkgType">
<xs:annotation>
<xs:documentation>Describes the mappings (e.g., to data elements, terminologies, databases, XML files, local values, etc.) in the MapTemplate element, as well as administrative data (Admin element) about a map's registration in a form repository and its XML file metadata.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element maxOccurs="1" name="MapTemplate" type="MappingType">
<xs:annotation>
<xs:documentation>Describes mappings between FormDesignTemplate items and data elements, terminologies, databases, XML files, local values, etc.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ReportingPkgType">
<xs:annotation>
<xs:documentation>Describes the information content (ReportDesignTemplate element) of a report (e.g., sections, questions etc) as well as administrative data (Admin element) about the report's registration in a form/report repository and its XML file metadata.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element maxOccurs="1" name="ReportDesignTemplate">
<xs:annotation>
<xs:documentation>ReportDesignTemplate describes the information content of a report (e.g., sections, questions etc). This enables control of the presentation view of the user responses derived from a designated FormDesignTemplate. It allows the report presentation to look substantially different from the data-entry form view defined by the FormDesignTemplate.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="FormDesignType">
<xs:attribute name="targetTemplateID" use="required">
<xs:annotation>
<xs:documentation>Globally unique identifier for the template targeted by this template</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="URI_Atype"> </xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="HelperFilePkgType">
<xs:annotation>
<xs:documentation>Any supplemental file(s) required for the display of the primary FormDesignTemplate or ReportDesignTemplate. HelperDisplayFiles include e.g., XSLT, CSS3, and javascript files. If not in XML format, these files should be enclosed in CDATA tags to avoid parsing errors.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element name="HelperFile">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ExtensionBaseType">
<xs:attributeGroup ref="templateAttributes"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="PackageType">
<xs:annotation>
<xs:documentation>The PackageType is used to group a MainFormPackage (inside PackageModules) together with its supporting metadata (Admin element) and all of its supporting objects (inside PackageModules). The MainFormPackage in turn is designed primarily to group the FormDesignTemplate with all of its supporting objects.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BasePackageType">
<xs:sequence>
<xs:element name="PackageModules" type="PackageModulesType">
<xs:annotation>
<xs:documentation>PackageModules groups together all elements covered by the Admin element metadata. It is the wrapper element for a registered package object that can be stored and administered by a registry, if desired.
The main parts of PackageModules are: MainFormPackage, an optional DemogFormPackage (containing boilerplate demographic and administrative information used for exchanging Main Form data), and optional InjectedFormPackage(s).
The InjectedFormPackage contains an optional sub-form to be injected into the FormDesignTemplate(s) for MainFormPackage and/or DemogFormPackage).
PackageModules also contains sections for SubmitFormRule and ComplianceRule.
It also allows for any number of nested child Packages.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="BasePackageType">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ExtensionBaseType">
<xs:sequence>
<xs:element name="Admin" minOccurs="0" type="TemplateAdminType">
<xs:annotation>
<xs:documentation>Admin contains information about a package, including a description of the package contents and purpose (PackageDescription), information about the registry that contains the package file (RegistryData), and information about the package file characteristics (TemplateFile).</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute form="unqualified" name="packageID" type="URI_Atype" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="PackageModulesType">
<xs:complexContent>
<xs:extension base="ExtensionBaseType">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="SubmissionRule" type="SubmissionRuleType">
<xs:annotation>
<xs:documentation>A SubmissionRule contains information about where and how to submit a completed form.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="ComplianceRule" type="ComplianceRuleType">
<xs:annotation>
<xs:documentation>A ComplianceRule contains general information about how information in a particular form package must be handled. This may include, e.g., security, completeness, transmission, and validation criteria.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="DemogFormPackage" type="FormPackageType">
<xs:annotation>
<xs:documentation>The DemogFormPackage is an optional package of XML templates to represent, collect and display boilerplate demographic and administrative data required for use with the MainFormPackage. DemogFormPackage data may be used for message transmission, authentication, authorization, distribution, etc. The DemogFormPackage may be shared among many different MainFormPackage modules.
See MainFormPackage for more information.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MainFormPackage" type="FormPackageType" minOccurs="1">
<xs:annotation>
<xs:documentation>The MainFormPackage is designed primarily to group the FormDesignPkg (contained inside FormPackageModules) with most of its supporting objects. The supporting objects are used for more control over form display, reporting, customizing, and mapping.
The Admin element contains metadata conerning the registration status and file characteristcs of the package's included XML templates.
The MainFormPackage does not contain any other FormPackageType objects (i.e., the DemogFormPackage and the InjectedFormPackage). These 2 types of objects are managed as sibling FormPackageTypes because each of them represent complete independently-registered forms.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="InjectedFormPackage" type="FormPackageType">
<xs:annotation>
<xs:documentation>The InjectedFormPackage contains optional packages of form templates that are provided for "injection" into specified locations in the FormDesignTemplate contained in the MainFormPackage.
See MainFormPackage for more information.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Package" type="PackageType">
<xs:annotation>
<xs:documentation>A Package may contain multiple independant forms, each contained in its own sub-Package. This nested Package model supports the following use-cases:
Production of a a data-entry screen with composite forms or composite reports
Retrieval of an entire package of related forms, each contained in its own sub-Package. Sub-packages may be nested to any level.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>