cqm-models 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.json +1 -1
  3. data/README.md +9 -6
  4. data/app/assets/javascripts/AdverseEvent.js +9 -3
  5. data/app/assets/javascripts/AllDataElements.js +18 -6
  6. data/app/assets/javascripts/AllergyIntolerance.js +8 -2
  7. data/app/assets/javascripts/AssessmentOrder.js +8 -2
  8. data/app/assets/javascripts/AssessmentPerformed.js +11 -3
  9. data/app/assets/javascripts/AssessmentRecommended.js +8 -2
  10. data/app/assets/javascripts/CareGoal.js +10 -3
  11. data/app/assets/javascripts/CommunicationPerformed.js +12 -6
  12. data/app/assets/javascripts/DeviceApplied.js +9 -2
  13. data/app/assets/javascripts/DeviceOrder.js +8 -2
  14. data/app/assets/javascripts/DeviceRecommended.js +8 -2
  15. data/app/assets/javascripts/Diagnosis.js +8 -2
  16. data/app/assets/javascripts/DiagnosticStudyOrder.js +8 -2
  17. data/app/assets/javascripts/DiagnosticStudyPerformed.js +9 -2
  18. data/app/assets/javascripts/DiagnosticStudyRecommended.js +8 -2
  19. data/app/assets/javascripts/EncounterOrder.js +9 -2
  20. data/app/assets/javascripts/EncounterPerformed.js +11 -5
  21. data/app/assets/javascripts/EncounterRecommended.js +8 -2
  22. data/app/assets/javascripts/FamilyHistory.js +8 -2
  23. data/app/assets/javascripts/ImmunizationAdministered.js +9 -2
  24. data/app/assets/javascripts/ImmunizationOrder.js +8 -2
  25. data/app/assets/javascripts/InterventionOrder.js +8 -2
  26. data/app/assets/javascripts/InterventionPerformed.js +9 -2
  27. data/app/assets/javascripts/InterventionRecommended.js +8 -2
  28. data/app/assets/javascripts/LaboratoryTestOrder.js +8 -2
  29. data/app/assets/javascripts/LaboratoryTestPerformed.js +9 -2
  30. data/app/assets/javascripts/LaboratoryTestRecommended.js +8 -2
  31. data/app/assets/javascripts/MedicationActive.js +9 -2
  32. data/app/assets/javascripts/MedicationAdministered.js +9 -2
  33. data/app/assets/javascripts/MedicationDischarge.js +9 -2
  34. data/app/assets/javascripts/MedicationDispensed.js +10 -4
  35. data/app/assets/javascripts/MedicationOrder.js +9 -4
  36. data/app/assets/javascripts/Participation.js +8 -2
  37. data/app/assets/javascripts/PatientCareExperience.js +8 -2
  38. data/app/assets/javascripts/PatientCharacteristic.js +7 -2
  39. data/app/assets/javascripts/PatientCharacteristicBirthdate.js +7 -2
  40. data/app/assets/javascripts/PatientCharacteristicClinicalTrialParticipant.js +7 -2
  41. data/app/assets/javascripts/PatientCharacteristicEthnicity.js +7 -2
  42. data/app/assets/javascripts/PatientCharacteristicExpired.js +7 -2
  43. data/app/assets/javascripts/PatientCharacteristicPayer.js +7 -2
  44. data/app/assets/javascripts/PatientCharacteristicRace.js +7 -2
  45. data/app/assets/javascripts/PatientCharacteristicSex.js +7 -2
  46. data/app/assets/javascripts/PhysicalExamOrder.js +8 -2
  47. data/app/assets/javascripts/PhysicalExamPerformed.js +9 -2
  48. data/app/assets/javascripts/PhysicalExamRecommended.js +8 -2
  49. data/app/assets/javascripts/ProcedureOrder.js +10 -3
  50. data/app/assets/javascripts/ProcedurePerformed.js +11 -3
  51. data/app/assets/javascripts/ProcedureRecommended.js +9 -3
  52. data/app/assets/javascripts/ProviderCareExperience.js +8 -2
  53. data/app/assets/javascripts/QDMPatient.js +25 -9
  54. data/app/assets/javascripts/RelatedPerson.js +42 -0
  55. data/app/assets/javascripts/SubstanceAdministered.js +9 -2
  56. data/app/assets/javascripts/SubstanceOrder.js +9 -2
  57. data/app/assets/javascripts/SubstanceRecommended.js +8 -2
  58. data/app/assets/javascripts/Symptom.js +8 -2
  59. data/app/assets/javascripts/attributes/CarePartner.js +31 -0
  60. data/app/assets/javascripts/attributes/Component.js +22 -1
  61. data/app/assets/javascripts/attributes/DiagnosisComponent.js +34 -0
  62. data/app/assets/javascripts/attributes/Entity.js +58 -0
  63. data/app/assets/javascripts/attributes/FacilityLocation.js +4 -1
  64. data/app/assets/javascripts/attributes/Identifier.js +23 -0
  65. data/app/assets/javascripts/attributes/Organization.js +31 -0
  66. data/app/assets/javascripts/attributes/PatientEntity.js +30 -0
  67. data/app/assets/javascripts/attributes/Practitioner.js +33 -0
  68. data/app/assets/javascripts/attributes/ResultComponent.js +31 -0
  69. data/app/assets/javascripts/basetypes/Any.js +24 -14
  70. data/app/assets/javascripts/basetypes/AnyEntity.js +44 -0
  71. data/app/assets/javascripts/basetypes/Code.js +8 -11
  72. data/app/assets/javascripts/basetypes/DataElement.js +14 -6
  73. data/app/assets/javascripts/basetypes/Interval.js +2 -2
  74. data/app/assets/javascripts/basetypes/QDMDate.js +36 -0
  75. data/app/assets/javascripts/basetypes/Quantity.js +1 -1
  76. data/app/assets/javascripts/basetypes/Ratio.js +1 -1
  77. data/app/assets/javascripts/cqm/Provider.js +0 -2
  78. data/app/models/cqm/provider.rb +4 -4
  79. data/app/models/hqmfOid_to_datatype_map.json +1 -1
  80. data/app/models/models.rb +12 -5
  81. data/app/models/qdm/adverse_event.rb +3 -2
  82. data/app/models/qdm/allergy_intolerance.rb +2 -1
  83. data/app/models/qdm/assessment_order.rb +2 -1
  84. data/app/models/qdm/assessment_performed.rb +5 -2
  85. data/app/models/qdm/assessment_recommended.rb +2 -1
  86. data/app/models/qdm/attributes/care_partner.rb +8 -0
  87. data/app/models/qdm/attributes/component.rb +1 -1
  88. data/app/models/qdm/attributes/diagnosis_component.rb +10 -0
  89. data/app/models/qdm/attributes/entity.rb +15 -0
  90. data/app/models/qdm/attributes/facility_location.rb +1 -1
  91. data/app/models/qdm/{id.rb → attributes/identifier.rb} +3 -4
  92. data/app/models/qdm/attributes/organization.rb +8 -0
  93. data/app/models/qdm/attributes/patient_entity.rb +7 -0
  94. data/app/models/qdm/attributes/practitioner.rb +10 -0
  95. data/app/models/qdm/{result_component.rb → attributes/result_component.rb} +1 -3
  96. data/app/models/qdm/basetypes/code.rb +8 -10
  97. data/app/models/qdm/basetypes/data_element.rb +19 -6
  98. data/app/models/qdm/basetypes/date.rb +38 -0
  99. data/app/models/qdm/basetypes/interval.rb +2 -2
  100. data/app/models/qdm/care_goal.rb +4 -2
  101. data/app/models/qdm/communication_performed.rb +6 -5
  102. data/app/models/qdm/device_applied.rb +3 -1
  103. data/app/models/qdm/device_order.rb +2 -1
  104. data/app/models/qdm/device_recommended.rb +2 -1
  105. data/app/models/qdm/diagnosis.rb +2 -1
  106. data/app/models/qdm/diagnostic_study_order.rb +2 -1
  107. data/app/models/qdm/diagnostic_study_performed.rb +3 -1
  108. data/app/models/qdm/diagnostic_study_recommended.rb +2 -1
  109. data/app/models/qdm/encounter_order.rb +3 -1
  110. data/app/models/qdm/encounter_performed.rb +3 -2
  111. data/app/models/qdm/encounter_recommended.rb +2 -1
  112. data/app/models/qdm/family_history.rb +2 -1
  113. data/app/models/qdm/immunization_administered.rb +3 -1
  114. data/app/models/qdm/immunization_order.rb +2 -1
  115. data/app/models/qdm/intervention_order.rb +2 -1
  116. data/app/models/qdm/intervention_performed.rb +3 -1
  117. data/app/models/qdm/intervention_recommended.rb +2 -1
  118. data/app/models/qdm/laboratory_test_order.rb +2 -1
  119. data/app/models/qdm/laboratory_test_performed.rb +3 -1
  120. data/app/models/qdm/laboratory_test_recommended.rb +2 -1
  121. data/app/models/qdm/medication_active.rb +3 -1
  122. data/app/models/qdm/medication_administered.rb +3 -1
  123. data/app/models/qdm/medication_discharge.rb +3 -1
  124. data/app/models/qdm/medication_dispensed.rb +4 -3
  125. data/app/models/qdm/medication_order.rb +3 -3
  126. data/app/models/qdm/participation.rb +2 -1
  127. data/app/models/qdm/patient.rb +1 -1
  128. data/app/models/qdm/patient_care_experience.rb +2 -1
  129. data/app/models/qdm/patient_characteristic.rb +1 -1
  130. data/app/models/qdm/patient_characteristic_birthdate.rb +1 -1
  131. data/app/models/qdm/patient_characteristic_clinical_trial_participant.rb +1 -1
  132. data/app/models/qdm/patient_characteristic_ethnicity.rb +1 -1
  133. data/app/models/qdm/patient_characteristic_expired.rb +1 -1
  134. data/app/models/qdm/patient_characteristic_payer.rb +1 -1
  135. data/app/models/qdm/patient_characteristic_race.rb +1 -1
  136. data/app/models/qdm/patient_characteristic_sex.rb +1 -1
  137. data/app/models/qdm/physical_exam_order.rb +2 -1
  138. data/app/models/qdm/physical_exam_performed.rb +3 -1
  139. data/app/models/qdm/physical_exam_recommended.rb +2 -1
  140. data/app/models/qdm/procedure_order.rb +4 -2
  141. data/app/models/qdm/procedure_performed.rb +5 -2
  142. data/app/models/qdm/procedure_recommended.rb +3 -2
  143. data/app/models/qdm/provider_care_experience.rb +2 -1
  144. data/app/models/qdm/related_person.rb +13 -0
  145. data/app/models/qdm/substance_administered.rb +3 -1
  146. data/app/models/qdm/substance_order.rb +3 -1
  147. data/app/models/qdm/substance_recommended.rb +2 -1
  148. data/app/models/qdm/symptom.rb +2 -1
  149. data/bin/validate_generator.sh +1 -1
  150. data/cqm-models.gemspec +2 -2
  151. data/data/oids_qdm_5.5.json +321 -0
  152. data/dist/browser.js +3434 -3356
  153. data/dist/index.js +3433 -3355
  154. data/lib/generate_models.rb +78 -39
  155. data/lib/generate_patients.rb +3 -3
  156. data/lib/generate_types.rb +1 -1
  157. data/lib/generator_helpers.rb +14 -0
  158. data/modelinfo/qdm-modelinfo-5.5.xml +982 -0
  159. data/package.json +2 -2
  160. data/templates/entity_extension.rb.erb +6 -0
  161. data/templates/identifier_extension.rb.erb +58 -0
  162. data/templates/{id_template.js.erb → identifier_template.js.erb} +6 -5
  163. data/templates/models_template.rb.erb +19 -4
  164. data/templates/mongoose_template.js.erb +86 -12
  165. data/templates/patient_template.js.erb +0 -4
  166. data/yarn.lock +245 -201
  167. metadata +31 -11
  168. data/app/assets/javascripts/Id.js +0 -21
  169. data/app/assets/javascripts/ProviderCharacteristic.js +0 -36
  170. data/app/assets/javascripts/ResultComponent.js +0 -33
  171. data/app/models/qdm/provider_characteristic.rb +0 -12
@@ -1,10 +1,14 @@
1
- #! /usr/bin/env ruby
1
+ # TODO: May need to add Entity casting to Any if entities need to be handled
2
+ # TODO: HQMF OIDS - Specifically RelatedPerson
3
+
4
+ # ! /usr/bin/env ruby
2
5
  require 'nokogiri'
3
6
  require 'active_support/all'
4
7
  require 'rails/generators'
5
8
  require 'erb'
6
9
  require 'json'
7
10
  require_relative './generators/custom_mongo/model_generator'
11
+ require_relative './generator_helpers'
8
12
 
9
13
  ###############################################################################
10
14
  # Helpers
@@ -13,10 +17,11 @@ require_relative './generators/custom_mongo/model_generator'
13
17
  # Lookups for modelinfo 'element types' to Ruby+Mongoid types.
14
18
  TYPE_LOOKUP_RB = {
15
19
  'System.DateTime': 'DateTime',
20
+ 'System.Date': 'Date',
16
21
  'System.Integer': 'Integer',
17
22
  'System.Quantity': 'Quantity',
18
23
  'System.Code': 'Code',
19
- 'QDM.Id': 'Id',
24
+ 'QDM.Identifier': 'Identifier',
20
25
  'System.Any': 'Any',
21
26
  'interval<System.DateTime>': 'Interval',
22
27
  'interval<System.Quantity>': 'Interval',
@@ -25,6 +30,8 @@ TYPE_LOOKUP_RB = {
25
30
  'list<QDM.Id>': 'Array',
26
31
  'list<QDM.ResultComponent>': 'Array',
27
32
  'list<QDM.FacilityLocation>': 'Array',
33
+ 'list<QDM.DiagnosisComponent>': 'Array',
34
+ 'list<System.String>': 'Array',
28
35
  'list<System.Code>': 'Array',
29
36
  'System.Decimal': 'Float',
30
37
  'System.Time': 'Time',
@@ -34,11 +41,12 @@ TYPE_LOOKUP_RB = {
34
41
  # Lookups for modelinfo 'element types' to JavaScript+Mongoose types.
35
42
  TYPE_LOOKUP_JS = {
36
43
  'System.DateTime': 'DateTime',
44
+ 'System.Date': 'QDMDate',
37
45
  'System.Integer': 'Number',
38
46
  'System.Quantity': 'Quantity',
39
47
  'System.Code': 'Code',
40
48
  'System.Any': 'Any',
41
- 'QDM.Id': 'IdSchema',
49
+ 'QDM.Identifier': 'IdentifierSchema',
42
50
  'interval<System.DateTime>': 'Interval',
43
51
  'interval<System.Quantity>': 'Interval',
44
52
  'list<QDM.Component>': '[]',
@@ -46,6 +54,8 @@ TYPE_LOOKUP_JS = {
46
54
  'list<QDM.Id>': '[]',
47
55
  'list<QDM.ResultComponent>': '[]',
48
56
  'list<QDM.FacilityLocation>': '[]',
57
+ 'list<QDM.DiagnosisComponent>': '[]',
58
+ 'list<System.String>': '[]',
49
59
  'list<System.Code>': '[Code]',
50
60
  'System.Decimal': 'Number',
51
61
  'System.Time': 'DateTime',
@@ -129,7 +139,10 @@ modelinfo.xpath('//ns4:typeInfo').each do |type|
129
139
  hqmfOid_to_datatype_map[extra_info['hqmf_oid']] = datatype_name if extra_info['hqmf_oid'].present?
130
140
  end
131
141
 
132
- attributes << { name: 'qdmVersion', type: 'System.String', default: qdm_version }
142
+ # Add the qdmVersion attribute unless the base type is one that will provide it
143
+ unless ['QDM.Entity', 'QDM.Component'].include? type['baseType']
144
+ attributes << { name: 'qdmVersion', type: 'System.String', default: qdm_version }
145
+ end
133
146
 
134
147
  datatypes[datatype_name] = { attributes: attributes }
135
148
  end
@@ -185,7 +198,7 @@ file_path = 'app/assets/javascripts/'
185
198
  file_path = 'tmp/' if IS_TEST
186
199
  datatype_custom_templates = {
187
200
  QDMPatient: 'templates/patient_template.js.erb',
188
- Id: 'templates/id_template.js.erb'
201
+ Identifier: 'templates/identifier_template.js.erb'
189
202
  }
190
203
 
191
204
  datatypes.each do |datatype, info|
@@ -195,8 +208,8 @@ datatypes.each do |datatype, info|
195
208
  renderer = ERB.new(File.read(datatype_custom_templates[datatype.to_sym]), nil, '-')
196
209
  end
197
210
  attrs_with_extras = info[:attributes] # this field gets used in the template
198
- # Custom datatypes don't need _type
199
- unless datatype_custom_templates.key?(datatype.to_sym)
211
+ # QDMPatients don't need _type
212
+ unless datatype.to_s == 'QDMPatient'
200
213
  attrs_with_extras << { name: '_type', type: 'System.String', default: "QDM::#{datatype.underscore.camelize}" } # Add Class
201
214
  end
202
215
  puts ' ' + file_path + datatype + '.js'
@@ -219,6 +232,14 @@ unless IS_TEST
219
232
  contents = File.read(file_path)
220
233
  contents.gsub!(%r{\/FacilityLocation.js}, '/attributes/FacilityLocation.js')
221
234
  contents.gsub!(%r{\/Component.js}, '/attributes/Component.js')
235
+ contents.gsub!(%r{\/CarePartner.js}, '/attributes/CarePartner.js')
236
+ contents.gsub!(%r{\/DiagnosisComponent.js}, '/attributes/DiagnosisComponent.js')
237
+ contents.gsub!(%r{\/Entity.js}, '/attributes/Entity.js')
238
+ contents.gsub!(%r{\/Organization.js}, '/attributes/Organization.js')
239
+ contents.gsub!(%r{\/PatientEntity.js}, '/attributes/PatientEntity.js')
240
+ contents.gsub!(%r{\/Practitioner.js}, '/attributes/Practitioner.js')
241
+ contents.gsub!(%r{\/ResultComponent.js}, '/attributes/ResultComponent.js')
242
+ contents.gsub!(%r{\/Identifier.js}, '/attributes/Identifier.js')
222
243
  File.open(file_path, 'w') { |file| file.puts contents }
223
244
  end
224
245
 
@@ -243,14 +264,16 @@ Dir.glob(ruby_models_path + '*.rb').each do |file_name|
243
264
  # Make facilityLocation of type QDM::FacilityLocation
244
265
  contents.gsub!(/field :facilityLocation, type: Code/, 'field :facilityLocation, type: QDM::FacilityLocation')
245
266
 
246
- # Make relatedTo embeds_many instead of field
247
- contents.gsub!(/ field :relatedTo, type: Array\n/, " embeds_many :relatedTo, class_name: 'QDM::Id'\n")
248
-
249
- # Make prescriberId embeds_many instead of field
250
- contents.gsub!(/ field :prescriberId, type: Id\n/, " embeds_one :prescriberId, class_name: 'QDM::Id'\n")
251
-
252
- # Make dispenserId embeds_many instead of field
253
- contents.gsub!(/ field :dispenserId, type: Id\n/, " embeds_one :dispenserId, class_name: 'QDM::Id'\n")
267
+ # Make Entity subclasses of type QDM::Entity
268
+ contents.gsub!(/field :participant/, "embeds_one :participant, class_name: 'QDM::Entity'")
269
+ contents.gsub!(/field :sender/, "embeds_one :sender, class_name: 'QDM::Entity'")
270
+ contents.gsub!(/field :recipient/, "embeds_one :recipient, class_name: 'QDM::Entity'")
271
+ contents.gsub!(/field :recorder/, "embeds_one :recorder, class_name: 'QDM::Entity'")
272
+ contents.gsub!(/field :performer/, "embeds_one :performer, class_name: 'QDM::Entity'")
273
+ contents.gsub!(/field :requester/, "embeds_one :requester, class_name: 'QDM::Entity'")
274
+ contents.gsub!(/field :prescriber/, "embeds_one :prescriber, class_name: 'QDM::Entity'")
275
+ contents.gsub!(/field :dispenser/, "embeds_one :dispenser, class_name: 'QDM::Entity'")
276
+ contents.gsub!(/field :identifier, type: Identifier/, "embeds_one :identifier, class_name: 'QDM::Identifier'")
254
277
 
255
278
  File.open(file_name, 'w') { |file| file.puts contents }
256
279
  end
@@ -258,28 +281,37 @@ end
258
281
  # JavaScript post processing
259
282
  js_models_path = 'app/assets/javascripts/'
260
283
  js_models_path = 'tmp/' if IS_TEST
261
- files = Dir.glob(js_models_path + '*.js').each do |file_name|
284
+ Dir.glob(js_models_path + '*.js').each do |file_name|
262
285
  contents = File.read(file_name)
263
286
 
264
287
  # Replace 'Any' type placeholder (these attributes could point to anything).
265
288
  contents.gsub!(/: Any/, ': Any')
266
289
 
267
- # Component, Facility, and Id types
290
+ # Component, Facility, Diagnoses
268
291
  contents.gsub!(/facilityLocations: \[\]/, 'facilityLocations: [FacilityLocationSchema]')
269
292
  contents.gsub!(/facilityLocation: Code/, 'facilityLocation: FacilityLocationSchema')
270
293
  contents.gsub!(/components: \[\]/, 'components: [ComponentSchema]')
271
294
  contents.gsub!(/component: Code/, 'component: ComponentSchema')
272
- contents.gsub!(/relatedTo: \[\]/, 'relatedTo: [IdSchema]')
295
+ contents.gsub!(/diagnoses: \[\]/, 'diagnoses: [DiagnosisComponentSchema]')
296
+ contents.gsub!(/sender: Any/, 'sender: AnyEntity')
297
+ contents.gsub!(/recipient: Any/, 'recipient: AnyEntity')
298
+ contents.gsub!(/participant: Any/, 'participant: AnyEntity')
299
+ contents.gsub!(/recorder: Any/, 'recorder: AnyEntity')
300
+ contents.gsub!(/performer: Any/, 'performer: AnyEntity')
301
+ contents.gsub!(/requester: Any/, 'requester: AnyEntity')
302
+ contents.gsub!(/prescriber: Any/, 'prescriber: AnyEntity')
303
+ contents.gsub!(/dispenser: Any/, 'dispenser: AnyEntity')
304
+ contents.gsub!(/relatedTo: \[\]/, 'relatedTo: [String]')
273
305
 
274
306
  File.open(file_name, 'w') { |file| file.puts contents }
275
307
  end
276
308
 
277
309
  # Inject Ruby Patient model extensions
278
- template = File.read('templates/patient_extension.rb.erb')
279
- renderer = ERB.new(template, nil, '-')
280
- rb_patient = File.read(ruby_models_path + 'patient.rb')
281
- rb_patient.gsub!(/end/, renderer.result(binding))
282
- File.open(ruby_models_path + 'patient.rb', 'w') { |file| file.write(rb_patient) }
310
+ GeneratorHelpers.inject_extension('templates/patient_extension.rb.erb', ruby_models_path + 'patient.rb')
311
+ # Inject Ruby Entity model extensions
312
+ if datatypes['Entity']
313
+ GeneratorHelpers.inject_extension('templates/entity_extension.rb.erb', ruby_models_path + 'entity.rb')
314
+ end
283
315
 
284
316
  # Make sure Ruby models are in the correct module
285
317
  ruby_models_path = 'app/models/qdm/'
@@ -288,23 +320,28 @@ Dir.glob(ruby_models_path + '*.rb').each do |file_name|
288
320
  contents = File.read(file_name)
289
321
  contents.gsub!('Qdm', 'QDM')
290
322
  contents.gsub!('Code', 'QDM::Code')
291
- contents.gsub!(' Id', ' QDM::Id')
323
+ contents.gsub!('Date\n', 'QDM::Date\n') # \n so DateTime does not get overwritten
324
+ contents.gsub!(' Identifier', ' QDM::Identifier')
292
325
  contents.gsub!('Interval', 'QDM::Interval')
293
326
  contents.gsub!('Quantity', 'QDM::Quantity')
294
327
  File.open(file_name, 'w') { |file| file.puts contents }
295
328
  end
296
329
 
330
+ types_not_inherited_by_data_element = ['/patient.rb', '/identifier.rb', '/component.rb', '/facility_location.rb', '/entity.rb', '/organization.rb', '/patient_entity.rb', '/practitioner.rb', '/care_partner.rb', '/diagnosis_component.rb', '/result_component.rb']
331
+ types_inherited_by_attribute = ['/component', '/facility_location', '/entity', '/diagnosis_component', '/identifier']
332
+ types_inherited_by_entity = ['/patient_entity', '/care_partner', '/practitioner', '/organization']
333
+ types_inherited_by_component = ['/result_component']
334
+
297
335
  # Set embedded in for datatypes
298
336
  Dir.glob(ruby_models_path + '*.rb').each do |file_name|
299
337
  contents = File.read(file_name)
300
- # TODO: Might be able to make this list by finding baseType="System.Any" in model info file instead of hard-coding.
301
- if File.basename(file_name) == 'id.rb'
338
+ if ['entity.rb', 'organization.rb', 'patient_entity.rb', 'practitioner.rb', 'care_partner.rb'].any? { |sub_string| sub_string.include?(File.basename(file_name)) }
302
339
  contents.gsub!(/ include Mongoid::Document\n/, " include Mongoid::Document\n embedded_in :data_element\n")
303
- else
304
- not_embedded_in_patient_files = ['patient.rb', 'component.rb', 'facility_location.rb']
305
- next if not_embedded_in_patient_files.include?(File.basename(file_name))
306
- contents.gsub!(/ include Mongoid::Document\n/, " include Mongoid::Document\n embedded_in :patient\n")
340
+ File.open(file_name, 'w') { |file| file.puts contents }
307
341
  end
342
+ # TODO: Might be able to make this list by finding baseType="System.Any" in model info file instead of hard-coding.
343
+ next if types_not_inherited_by_data_element.any? { |sub_string| sub_string.include?(File.basename(file_name)) }
344
+ contents.gsub!(/ include Mongoid::Document\n/, " include Mongoid::Document\n embedded_in :patient\n")
308
345
  File.open(file_name, 'w') { |file| file.puts contents }
309
346
  end
310
347
 
@@ -312,8 +349,10 @@ end
312
349
  Dir.glob(ruby_models_path + '*.rb').each do |file_name|
313
350
  contents = ''
314
351
  File.open(file_name).each_line.with_index do |line, index|
315
- line.gsub!("\n", " < DataElement\n") if index.zero? && !file_name.include?('/patient.rb') && !file_name.include?('/id.rb') && !file_name.include?('/component.rb') && !file_name.include?('/facility_location.rb')
316
- line.gsub!("\n", " < Attribute\n") if index.zero? && (file_name.include?('/component.rb') || file_name.include?('/facility_location.rb'))
352
+ line.gsub!("\n", " < DataElement\n") if index.zero? && types_not_inherited_by_data_element.none? { |sub_string| file_name.include?(sub_string) }
353
+ line.gsub!("\n", " < Attribute\n") if index.zero? && types_inherited_by_attribute.any? { |sub_string| file_name.include?(sub_string) }
354
+ line.gsub!("\n", " < Entity\n") if index.zero? && types_inherited_by_entity.any? { |sub_string| file_name.include?(sub_string) }
355
+ line.gsub!("\n", " < Component\n") if index.zero? && types_inherited_by_component.any? { |sub_string| file_name.include?(sub_string) }
317
356
  contents += "module QDM\n # #{file_name}\n #{line.gsub('QDM::', '')}" if index.zero?
318
357
  contents += ' ' unless index.zero? || line.blank?
319
358
  contents += line unless index.zero?
@@ -328,13 +367,13 @@ if IS_TEST
328
367
  Dir.mkdir(ruby_models_path + 'attributes')
329
368
  Dir.mkdir(js_models_path + 'attributes')
330
369
  end
331
- if File.exist?(ruby_models_path + 'facility_location.rb')
332
- File.rename ruby_models_path + 'facility_location.rb', ruby_models_path + 'attributes/facility_location.rb'
333
- File.rename js_models_path + 'FacilityLocation.js', js_models_path + 'attributes/FacilityLocation.js'
334
- end
335
- if File.exist?(ruby_models_path + 'component.rb')
336
- File.rename ruby_models_path + 'component.rb', ruby_models_path + 'attributes/component.rb'
337
- File.rename js_models_path + 'Component.js', js_models_path + 'attributes/Component.js'
370
+
371
+ attribute_list = types_inherited_by_attribute + types_inherited_by_component + types_inherited_by_entity
372
+ existing_types_moving_to_attributes = attribute_list.select { |sub_string| File.exist?(ruby_models_path + sub_string + '.rb') }
373
+ existing_types_moving_to_attributes.each do |type|
374
+ modified_name = type[1..-1]
375
+ File.rename ruby_models_path + modified_name + '.rb', ruby_models_path + 'attributes/' + modified_name + '.rb'
376
+ File.rename js_models_path + modified_name.camelize + '.js', js_models_path + 'attributes/' + modified_name.camelize + '.js'
338
377
  end
339
378
 
340
379
  puts 'Create hqmfOid to datatype map as json file'
@@ -8,7 +8,7 @@ module QDM
8
8
  module PatientGeneration
9
9
  # Generates patient(s) with fully-loaded dataElements if new_patient_for_each_type is false then a
10
10
  # single patient will be returned that has every data element on it
11
- def self.generate_exhastive_data_element_patients(new_patient_for_each_type = true, model_info_file = 'qdm-modelinfo-5.4.xml')
11
+ def self.generate_exhastive_data_element_patients(new_patient_for_each_type = true, model_info_file = 'qdm-modelinfo-5.5.xml')
12
12
  datatypes = get_datatypes(File.join(File.dirname(__FILE__), "../modelinfo/#{model_info_file}"))
13
13
  patients = []
14
14
  cqm_patient = nil
@@ -49,7 +49,7 @@ module QDM
49
49
  modelinfo.xpath('//ns4:typeInfo').each do |type|
50
50
  # Grab the name of this QDM datatype
51
51
  datatype_name = type.attributes['name'].value.split('.').last
52
- exclusion_array = %w[Component Id Patient ResultComponent FacilityLocation]
52
+ exclusion_array = %w[Component Identifier Patient ResultComponent FacilityLocation]
53
53
  # Store datatype and its attributes (reject irrelevant datatypes)
54
54
  next if datatype_name.include?('Negative') || datatype_name.include?('Positive') ||
55
55
  datatype_name.include?('QDMBaseType') || (exclusion_array.include? datatype_name)
@@ -112,7 +112,7 @@ module QDM
112
112
  data_element[field_name] = QDM::BaseTypeGeneration.generate_date_interval_field
113
113
  elsif field_type == QDM::Quantity
114
114
  data_element[field_name] = QDM::BaseTypeGeneration.generate_quantity
115
- elsif field_type == QDM::Id
115
+ elsif field_type == QDM::Identifier
116
116
  data_element[field_name] = QDM::BaseTypeGeneration.generate_qdm_id
117
117
  elsif field_type == Integer
118
118
  # TODO: randomize value
@@ -55,7 +55,7 @@ module QDM
55
55
 
56
56
  def self.generate_qdm_id
57
57
  # TODO: randomize values
58
- qdm_id = QDM::Id.new
58
+ qdm_id = QDM::Identifier.new
59
59
  qdm_id.value = 'TestValue'
60
60
  qdm_id.namingSystem = 'TestNamingSystem'
61
61
  qdm_id
@@ -0,0 +1,14 @@
1
+ require 'erb'
2
+ require 'active_support/all'
3
+
4
+ # Helper file for generating classes
5
+ module GeneratorHelpers
6
+ def self.inject_extension(extension_path, file_path)
7
+ # Inject Ruby Patient model extensions
8
+ template = File.read(extension_path)
9
+ renderer = ERB.new(template, nil, '-')
10
+ rb_model = File.read(file_path)
11
+ rb_model.gsub!(/end/, renderer.result(binding))
12
+ File.open(file_path, 'w') { |file| file.write(rb_model) }
13
+ end
14
+ end
@@ -0,0 +1,982 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <ns4:modelInfo name="QDM" url="urn:healthit-gov:qdm:v5_5" targetQualifier="qdm" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns4="urn:hl7-org:elm-modelinfo:r1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ patientClassName="QDM.Patient" patientClassIdentifier="Patient" patientBirthDatePropertyName="birthDatetime" version="5.5" strictRetrieveTyping="true">
4
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Patient" baseType="System.Any" identifier="Patient">
5
+ <ns4:element name="birthDatetime" type="System.DateTime"/>
6
+ </ns4:typeInfo>
7
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Identifier" baseType="System.Any">
8
+ <ns4:element name="namingSystem" type="System.String"/>
9
+ <ns4:element name="value" type="System.String"/>
10
+ </ns4:typeInfo>
11
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Entity" baseType="System.Any" retrievable="false">
12
+ <ns4:element name="id" type="System.String"/>
13
+ <ns4:element name="identifier" type="QDM.Identifier"/>
14
+ </ns4:typeInfo>
15
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientEntity" baseType="QDM.Entity" retrievable="false">
16
+ </ns4:typeInfo>
17
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.CarePartner" baseType="QDM.Entity" retrievable="false">
18
+ <ns4:element name="relationship" type="System.Code"/>
19
+ </ns4:typeInfo>
20
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.RelatedPerson" baseType="QDM.QDMBaseType" label="Related Person" retrievable="true" primaryCodePath="code">
21
+ <ns4:element name="identifier" type="QDM.Identifier"/>
22
+ <ns4:element name="linkedPatientId" type="System.String"/>
23
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
24
+ <ns4:targetContextRelationship context="Patient" relatedKeyElement="linkedPatientId"/>
25
+ </ns4:typeInfo>
26
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Practitioner" baseType="QDM.Entity" retrievable="false">
27
+ <ns4:element name="role" type="System.Code"/>
28
+ <ns4:element name="specialty" type="System.Code"/>
29
+ <ns4:element name="qualification" type="System.Code"/>
30
+ </ns4:typeInfo>
31
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Organization" baseType="QDM.Entity" retrievable="false">
32
+ <ns4:element name="type" type="System.Code"/>
33
+ </ns4:typeInfo>
34
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PhysicalExamOrder" retrievable="false" baseType="QDM.QDMBaseType">
35
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
36
+ <ns4:element name="reason" type="System.Code"/>
37
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
38
+ <ns4:element name="negationRationale" type="System.Code"/>
39
+ <ns4:element name="requester">
40
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
41
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
42
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
43
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
44
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
45
+ </ns4:typeSpecifier>
46
+ </ns4:element>
47
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
48
+ </ns4:typeInfo>
49
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Participation" retrievable="true" baseType="QDM.QDMBaseType" label="Participation" primaryCodePath="code">
50
+ <ns4:element name="participationPeriod" type="interval&lt;System.DateTime&gt;"/>
51
+ <ns4:element name="recorder">
52
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
53
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
54
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
55
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
56
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
57
+ </ns4:typeSpecifier>
58
+ </ns4:element>
59
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
60
+ </ns4:typeInfo>
61
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicSex" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Sex" primaryCodePath="code">
62
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
63
+ </ns4:typeInfo>
64
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.CareGoal" retrievable="true" baseType="QDM.QDMBaseType" label="Care Goal" primaryCodePath="code">
65
+ <ns4:element name="statusDate" type="System.Date"/>
66
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
67
+ <ns4:element name="relatedTo" type="list&lt;System.String&gt;"/>
68
+ <ns4:element name="targetOutcome"> <!--type="System.Any">-->
69
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
70
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
71
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
72
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
73
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
74
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
75
+ </ns4:typeSpecifier>
76
+ </ns4:element>
77
+ <ns4:element name="performer">
78
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
79
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
80
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
81
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
82
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
83
+ </ns4:typeSpecifier>
84
+ </ns4:element>
85
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
86
+ </ns4:typeInfo>
87
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristic" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic" primaryCodePath="code">
88
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
89
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
90
+ </ns4:typeInfo>
91
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicEthnicity" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Ethnicity" primaryCodePath="code">
92
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
93
+ </ns4:typeInfo>
94
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicRace" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Race" primaryCodePath="code">
95
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
96
+ </ns4:typeInfo>
97
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.LaboratoryTestPerformed" retrievable="false" baseType="QDM.QDMBaseType">
98
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
99
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
100
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
101
+ <ns4:element name="status" type="System.Code"/>
102
+ <ns4:element name="method" type="System.Code"/>
103
+ <ns4:element name="result"> <!-- type="System.Any">-->
104
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
105
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
106
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
107
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
108
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
109
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
110
+ </ns4:typeSpecifier>
111
+ </ns4:element>
112
+ <ns4:element name="resultDatetime" type="System.DateTime"/>
113
+ <ns4:element name="reason" type="System.Code"/>
114
+ <ns4:element name="referenceRange" type="interval&lt;System.Quantity&gt;"/>
115
+ <ns4:element name="negationRationale" type="System.Code"/>
116
+ <ns4:element name="components" type="list&lt;QDM.ResultComponent&gt;"/>
117
+ <ns4:element name="performer">
118
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
119
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
120
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
121
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
122
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
123
+ </ns4:typeSpecifier>
124
+ </ns4:element>
125
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
126
+ </ns4:typeInfo>
127
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Symptom" retrievable="true" baseType="QDM.QDMBaseType" label="Symptom" primaryCodePath="code">
128
+ <ns4:element name="prevalencePeriod" type="interval&lt;System.DateTime&gt;"/>
129
+ <ns4:element name="severity" type="System.Code"/>
130
+ <ns4:element name="recorder">
131
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
132
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
133
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
134
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
135
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
136
+ </ns4:typeSpecifier>
137
+ </ns4:element>
138
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
139
+ </ns4:typeInfo>
140
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.MedicationAdministered" retrievable="false" baseType="QDM.QDMBaseType">
141
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
142
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
143
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
144
+ <ns4:element name="dosage" type="System.Quantity"/>
145
+ <ns4:element name="frequency" type="System.Code"/>
146
+ <ns4:element name="route" type="System.Code"/>
147
+ <ns4:element name="reason" type="System.Code"/>
148
+ <ns4:element name="negationRationale" type="System.Code"/>
149
+ <ns4:element name="performer">
150
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
151
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
152
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
153
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
154
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
155
+ </ns4:typeSpecifier>
156
+ </ns4:element>
157
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
158
+ </ns4:typeInfo>
159
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ProcedureRecommended" retrievable="false" baseType="QDM.QDMBaseType">
160
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
161
+ <ns4:element name="reason" type="System.Code"/>
162
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
163
+ <ns4:element name="rank" type="System.Integer"/>
164
+ <ns4:element name="requester">
165
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
166
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
167
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
168
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
169
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
170
+ </ns4:typeSpecifier>
171
+ </ns4:element>
172
+ <ns4:element name="negationRationale" type="System.Code"/>
173
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
174
+ </ns4:typeInfo>
175
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.EncounterPerformed" retrievable="false" baseType="QDM.QDMBaseType">
176
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
177
+ <ns4:element name="admissionSource" type="System.Code"/>
178
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
179
+ <ns4:element name="dischargeDisposition" type="System.Code"/>
180
+ <ns4:element name="facilityLocations" type="list&lt;QDM.FacilityLocation&gt;"/>
181
+ <ns4:element name="diagnoses" type="list&lt;QDM.DiagnosisComponent&gt;"/>
182
+ <ns4:element name="negationRationale" type="System.Code"/>
183
+ <ns4:element name="lengthOfStay" type="System.Quantity"/>
184
+ <ns4:element name="priority" type="System.Code"/>
185
+ <ns4:element name="participant">
186
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
187
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
188
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
189
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
190
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
191
+ </ns4:typeSpecifier>
192
+ </ns4:element>
193
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
194
+ </ns4:typeInfo>
195
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Diagnosis" retrievable="true" baseType="QDM.QDMBaseType" label="Diagnosis" primaryCodePath="code">
196
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
197
+ <ns4:element name="prevalencePeriod" type="interval&lt;System.DateTime&gt;"/>
198
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
199
+ <ns4:element name="severity" type="System.Code"/>
200
+ <ns4:element name="recorder">
201
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
202
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
203
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
204
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
205
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
206
+ </ns4:typeSpecifier>
207
+ </ns4:element>
208
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
209
+ </ns4:typeInfo>
210
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.CommunicationPerformed" retrievable="false" baseType="QDM.QDMBaseType">
211
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
212
+ <ns4:element name="category" type="System.Code"/>
213
+ <ns4:element name="medium" type="System.Code"/>
214
+ <ns4:element name="sender">
215
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
216
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
217
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
218
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
219
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
220
+ </ns4:typeSpecifier>
221
+ </ns4:element>
222
+ <ns4:element name="recipient">
223
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
224
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
225
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
226
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
227
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
228
+ </ns4:typeSpecifier>
229
+ </ns4:element>
230
+ <ns4:element name="relatedTo" type="list&lt;System.String&gt;"/>
231
+ <ns4:element name="sentDatetime" type="System.DateTime"/>
232
+ <ns4:element name="receivedDatetime" type="System.DateTime"/>
233
+ <ns4:element name="negationRationale" type="System.Code"/>
234
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
235
+ </ns4:typeInfo>
236
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.AssessmentPerformed" retrievable="false" baseType="QDM.QDMBaseType">
237
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
238
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
239
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
240
+ <ns4:element name="negationRationale" type="System.Code"/>
241
+ <ns4:element name="reason" type="System.Code"/>
242
+ <ns4:element name="method" type="System.Code"/>
243
+ <ns4:element name="result"> <!-- type="System.Any">-->
244
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
245
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
246
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
247
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
248
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
249
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
250
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="DateTime"/>
251
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Time"/>
252
+ </ns4:typeSpecifier>
253
+ </ns4:element>
254
+ <ns4:element name="components" type="list&lt;QDM.Component&gt;"/>
255
+ <ns4:element name="relatedTo" type="list&lt;System.String&gt;"/>
256
+ <ns4:element name="performer">
257
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
258
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
259
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
260
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
261
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
262
+ </ns4:typeSpecifier>
263
+ </ns4:element>
264
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
265
+ </ns4:typeInfo>
266
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicClinicalTrialParticipant" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Clinical Trial Participant" primaryCodePath="code">
267
+ <ns4:element name="reason" type="System.Code"/>
268
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
269
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
270
+ </ns4:typeInfo>
271
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DeviceOrder" retrievable="false" baseType="QDM.QDMBaseType">
272
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
273
+ <ns4:element name="negationRationale" type="System.Code"/>
274
+ <ns4:element name="reason" type="System.Code"/>
275
+ <ns4:element name="requester">
276
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
277
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
278
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
279
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
280
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
281
+ </ns4:typeSpecifier>
282
+ </ns4:element>
283
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
284
+ </ns4:typeInfo>
285
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DiagnosticStudyPerformed" retrievable="false" baseType="QDM.QDMBaseType">
286
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
287
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
288
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
289
+ <ns4:element name="reason" type="System.Code"/>
290
+ <ns4:element name="result"> <!--type="System.Any">-->
291
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
292
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
293
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
294
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
295
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
296
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
297
+ </ns4:typeSpecifier>
298
+ </ns4:element>
299
+ <ns4:element name="resultDatetime" type="System.DateTime"/>
300
+ <ns4:element name="status" type="System.Code"/>
301
+ <ns4:element name="method" type="System.Code"/>
302
+ <ns4:element name="facilityLocation" type="System.Code"/>
303
+ <ns4:element name="negationRationale" type="System.Code"/>
304
+ <ns4:element name="components" type="list&lt;QDM.Component&gt;"/>
305
+ <ns4:element name="performer">
306
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
307
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
308
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
309
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
310
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
311
+ </ns4:typeSpecifier>
312
+ </ns4:element>
313
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
314
+ </ns4:typeInfo>
315
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.InterventionOrder" retrievable="false" baseType="QDM.QDMBaseType">
316
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
317
+ <ns4:element name="reason" type="System.Code"/>
318
+ <ns4:element name="negationRationale" type="System.Code"/>
319
+ <ns4:element name="requester">
320
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
321
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
322
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
323
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
324
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
325
+ </ns4:typeSpecifier>
326
+ </ns4:element>
327
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
328
+ </ns4:typeInfo>
329
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.FamilyHistory" retrievable="true" baseType="QDM.QDMBaseType" label="Family History" primaryCodePath="code">
330
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
331
+ <ns4:element name="relationship" type="System.Code"/>
332
+ <ns4:element name="recorder">
333
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
334
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
335
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
336
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
337
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
338
+ </ns4:typeSpecifier>
339
+ </ns4:element>
340
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
341
+ </ns4:typeInfo>
342
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.Component" retrievable="false" baseType="System.Any">
343
+ <ns4:element name="code" type="System.Code"/>
344
+ <ns4:element name="result"> <!-- type="System.Any">-->
345
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
346
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
347
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
348
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
349
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
350
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
351
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="DateTime"/>
352
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Time"/>
353
+ </ns4:typeSpecifier>
354
+ </ns4:element>
355
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
356
+ </ns4:typeInfo>
357
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DiagnosisComponent" retrievable="false" baseType="System.Any">
358
+ <ns4:element name="code" type="System.Code"/>
359
+ <ns4:element name="presentOnAdmissionIndicator" type="System.Code"/>
360
+ <ns4:element name="rank" type="System.Integer"/>
361
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
362
+ </ns4:typeInfo>
363
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ResultComponent" retrievable="false" baseType="QDM.Component">
364
+ <ns4:element name="referenceRange" type="interval&lt;System.Quantity&gt;"/>
365
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
366
+ </ns4:typeInfo>
367
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.FacilityLocation" retrievable="false" baseType="System.Any">
368
+ <ns4:element name="code" type="System.Code"/>
369
+ <ns4:element name="locationPeriod" type="interval&lt;System.DateTime&gt;"/>
370
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
371
+ </ns4:typeInfo>
372
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.MedicationActive" retrievable="true" baseType="QDM.QDMBaseType" label="Medication, Active" primaryCodePath="code">
373
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
374
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
375
+ <ns4:element name="dosage" type="System.Quantity"/>
376
+ <ns4:element name="frequency" type="System.Code"/>
377
+ <ns4:element name="route" type="System.Code"/>
378
+ <ns4:element name="recorder">
379
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
380
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
381
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
382
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
383
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
384
+ </ns4:typeSpecifier>
385
+ </ns4:element>
386
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
387
+ </ns4:typeInfo>
388
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.LaboratoryTestOrder" retrievable="false" baseType="QDM.QDMBaseType">
389
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
390
+ <ns4:element name="reason" type="System.Code"/>
391
+ <ns4:element name="negationRationale" type="System.Code"/>
392
+ <ns4:element name="requester">
393
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
394
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
395
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
396
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
397
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
398
+ </ns4:typeSpecifier>
399
+ </ns4:element>
400
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
401
+ </ns4:typeInfo>
402
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DiagnosticStudyOrder" retrievable="false" baseType="QDM.QDMBaseType">
403
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
404
+ <ns4:element name="reason" type="System.Code"/>
405
+ <ns4:element name="negationRationale" type="System.Code"/>
406
+ <ns4:element name="requester">
407
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
408
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
409
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
410
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
411
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
412
+ </ns4:typeSpecifier>
413
+ </ns4:element>
414
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
415
+ </ns4:typeInfo>
416
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.SubstanceOrder" retrievable="false" baseType="QDM.QDMBaseType">
417
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
418
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
419
+ <ns4:element name="reason" type="System.Code"/>
420
+ <ns4:element name="dosage" type="System.Quantity"/>
421
+ <ns4:element name="supply" type="System.Quantity"/>
422
+ <ns4:element name="frequency" type="System.Code"/>
423
+ <ns4:element name="refills" type="System.Integer"/>
424
+ <ns4:element name="route" type="System.Code"/>
425
+ <ns4:element name="negationRationale" type="System.Code"/>
426
+ <ns4:element name="requester">
427
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
428
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
429
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
430
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
431
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
432
+ </ns4:typeSpecifier>
433
+ </ns4:element>
434
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
435
+ </ns4:typeInfo>
436
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicPayer" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Payer" primaryCodePath="code">
437
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
438
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
439
+ </ns4:typeInfo>
440
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicExpired" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Expired" primaryCodePath="code">
441
+ <ns4:element name="expiredDatetime" type="System.DateTime"/>
442
+ <ns4:element name="cause" type="System.Code"/>
443
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
444
+ </ns4:typeInfo>
445
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.AssessmentOrder" retrievable="false" baseType="QDM.QDMBaseType">
446
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
447
+ <ns4:element name="negationRationale" type="System.Code"/>
448
+ <ns4:element name="reason" type="System.Code"/>
449
+ <ns4:element name="requester">
450
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
451
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
452
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
453
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
454
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
455
+ </ns4:typeSpecifier>
456
+ </ns4:element>
457
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
458
+ </ns4:typeInfo>
459
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.AssessmentRecommended" retrievable="false" baseType="QDM.QDMBaseType">
460
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
461
+ <ns4:element name="negationRationale" type="System.Code"/>
462
+ <ns4:element name="reason" type="System.Code"/>
463
+ <ns4:element name="requester">
464
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
465
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
466
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
467
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
468
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
469
+ </ns4:typeSpecifier>
470
+ </ns4:element>
471
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
472
+ </ns4:typeInfo>
473
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ImmunizationAdministered" retrievable="false" baseType="QDM.QDMBaseType">
474
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
475
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
476
+ <ns4:element name="reason" type="System.Code"/>
477
+ <ns4:element name="dosage" type="System.Quantity"/>
478
+ <ns4:element name="route" type="System.Code"/>
479
+ <ns4:element name="negationRationale" type="System.Code"/>
480
+ <ns4:element name="performer">
481
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
482
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
483
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
484
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
485
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
486
+ </ns4:typeSpecifier>
487
+ </ns4:element>
488
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
489
+ </ns4:typeInfo>
490
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.SubstanceAdministered" retrievable="false" baseType="QDM.QDMBaseType">
491
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
492
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
493
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
494
+ <ns4:element name="dosage" type="System.Quantity"/>
495
+ <ns4:element name="frequency" type="System.Code"/>
496
+ <ns4:element name="route" type="System.Code"/>
497
+ <ns4:element name="negationRationale" type="System.Code"/>
498
+ <ns4:element name="performer">
499
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
500
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
501
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
502
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
503
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
504
+ </ns4:typeSpecifier>
505
+ </ns4:element>
506
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
507
+ </ns4:typeInfo>
508
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.EncounterOrder" retrievable="false" baseType="QDM.QDMBaseType">
509
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
510
+ <ns4:element name="reason" type="System.Code"/>
511
+ <ns4:element name="facilityLocation" type="System.Code"/>
512
+ <ns4:element name="negationRationale" type="System.Code"/>
513
+ <ns4:element name="requester">
514
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
515
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
516
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
517
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
518
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
519
+ </ns4:typeSpecifier>
520
+ </ns4:element>
521
+ <ns4:element name="priority" type="System.Code"/>
522
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
523
+ </ns4:typeInfo>
524
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.EncounterRecommended" retrievable="false" baseType="QDM.QDMBaseType">
525
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
526
+ <ns4:element name="reason" type="System.Code"/>
527
+ <ns4:element name="facilityLocation" type="System.Code"/>
528
+ <ns4:element name="negationRationale" type="System.Code"/>
529
+ <ns4:element name="requester">
530
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
531
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
532
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
533
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
534
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
535
+ </ns4:typeSpecifier>
536
+ </ns4:element>
537
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
538
+ </ns4:typeInfo>
539
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ProcedurePerformed" retrievable="false" baseType="QDM.QDMBaseType">
540
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
541
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
542
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
543
+ <ns4:element name="reason" type="System.Code"/>
544
+ <ns4:element name="method" type="System.Code"/>
545
+ <ns4:element name="result"> <!--type="System.Any">-->
546
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
547
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
548
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
549
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
550
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
551
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
552
+ </ns4:typeSpecifier>
553
+ </ns4:element>
554
+ <ns4:element name="status" type="System.Code"/>
555
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
556
+ <ns4:element name="rank" type="System.Integer"/>
557
+ <ns4:element name="priority" type="System.Code"/>
558
+ <ns4:element name="incisionDatetime" type="System.DateTime"/>
559
+ <ns4:element name="negationRationale" type="System.Code"/>
560
+ <ns4:element name="components" type="list&lt;QDM.Component&gt;"/>
561
+ <ns4:element name="performer">
562
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
563
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
564
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
565
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
566
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
567
+ </ns4:typeSpecifier>
568
+ </ns4:element>
569
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
570
+ </ns4:typeInfo>
571
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.AllergyIntolerance" retrievable="true" baseType="QDM.QDMBaseType" label="Allergy/Intolerance" primaryCodePath="code">
572
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
573
+ <ns4:element name="prevalencePeriod" type="interval&lt;System.DateTime&gt;"/>
574
+ <ns4:element name="type" type="System.Code"/>
575
+ <ns4:element name="severity" type="System.Code"/>
576
+ <ns4:element name="recorder">
577
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
578
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
579
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
580
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
581
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
582
+ </ns4:typeSpecifier>
583
+ </ns4:element>
584
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
585
+ </ns4:typeInfo>
586
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PhysicalExamRecommended" retrievable="false" baseType="QDM.QDMBaseType">
587
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
588
+ <ns4:element name="reason" type="System.Code"/>
589
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
590
+ <ns4:element name="negationRationale" type="System.Code"/>
591
+ <ns4:element name="requester">
592
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
593
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
594
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
595
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
596
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
597
+ </ns4:typeSpecifier>
598
+ </ns4:element>
599
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
600
+ </ns4:typeInfo>
601
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCharacteristicBirthdate" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Characteristic Birthdate" primaryCodePath="code">
602
+ <ns4:element name="birthDatetime" type="System.DateTime"/>
603
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
604
+ </ns4:typeInfo>
605
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.AdverseEvent" retrievable="true" baseType="QDM.QDMBaseType" label="Adverse Event" primaryCodePath="code">
606
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
607
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
608
+ <ns4:element name="severity" type="System.Code"/>
609
+ <ns4:element name="facilityLocation" type="System.Code"/>
610
+ <ns4:element name="type" type="System.Code"/>
611
+ <ns4:element name="recorder">
612
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
613
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
614
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
615
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
616
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
617
+ </ns4:typeSpecifier>
618
+ </ns4:element>
619
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
620
+ </ns4:typeInfo>
621
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.QDMBaseType" retrievable="false" baseType="System.Any">
622
+ <ns4:element name="id" type="System.String"/>
623
+ <ns4:element name="code" type="System.Code"/>
624
+ <ns4:element name="patientId" type="System.String"/>
625
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
626
+ </ns4:typeInfo>
627
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DeviceRecommended" retrievable="false" baseType="QDM.QDMBaseType">
628
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
629
+ <ns4:element name="negationRationale" type="System.Code"/>
630
+ <ns4:element name="reason" type="System.Code"/>
631
+ <ns4:element name="requester">
632
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
633
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
634
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
635
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
636
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
637
+ </ns4:typeSpecifier>
638
+ </ns4:element>
639
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
640
+ </ns4:typeInfo>
641
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DeviceApplied" retrievable="false" baseType="QDM.QDMBaseType">
642
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
643
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
644
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
645
+ <ns4:element name="negationRationale" type="System.Code"/>
646
+ <ns4:element name="reason" type="System.Code"/>
647
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
648
+ <ns4:element name="performer">
649
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
650
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
651
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
652
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
653
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
654
+ </ns4:typeSpecifier>
655
+ </ns4:element>
656
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
657
+ </ns4:typeInfo>
658
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.MedicationDischarge" retrievable="false" baseType="QDM.QDMBaseType">
659
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
660
+ <ns4:element name="refills" type="System.Integer"/>
661
+ <ns4:element name="dosage" type="System.Quantity"/>
662
+ <ns4:element name="supply" type="System.Quantity"/>
663
+ <ns4:element name="frequency" type="System.Code"/>
664
+ <ns4:element name="daysSupplied" type="System.Integer"/>
665
+ <ns4:element name="route" type="System.Code"/>
666
+ <ns4:element name="negationRationale" type="System.Code"/>
667
+ <ns4:element name="prescriber">
668
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
669
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
670
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
671
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
672
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
673
+ </ns4:typeSpecifier>
674
+ </ns4:element>
675
+ <ns4:element name="recorder">
676
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
677
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
678
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
679
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
680
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
681
+ </ns4:typeSpecifier>
682
+ </ns4:element>
683
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
684
+ </ns4:typeInfo>
685
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.InterventionPerformed" retrievable="false" baseType="QDM.QDMBaseType">
686
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
687
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
688
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
689
+ <ns4:element name="reason" type="System.Code"/>
690
+ <ns4:element name="result"> <!-- type="System.Any">-->
691
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
692
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
693
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
694
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
695
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
696
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
697
+ </ns4:typeSpecifier>
698
+ </ns4:element>
699
+ <ns4:element name="status" type="System.Code"/>
700
+ <ns4:element name="negationRationale" type="System.Code"/>
701
+ <ns4:element name="performer">
702
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
703
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
704
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
705
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
706
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
707
+ </ns4:typeSpecifier>
708
+ </ns4:element>
709
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
710
+ </ns4:typeInfo>
711
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.LaboratoryTestRecommended" retrievable="false" baseType="QDM.QDMBaseType">
712
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
713
+ <ns4:element name="reason" type="System.Code"/>
714
+ <ns4:element name="negationRationale" type="System.Code"/>
715
+ <ns4:element name="requester">
716
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
717
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
718
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
719
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
720
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
721
+ </ns4:typeSpecifier>
722
+ </ns4:element>
723
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
724
+ </ns4:typeInfo>
725
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.MedicationDispensed" retrievable="false" baseType="QDM.QDMBaseType">
726
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
727
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
728
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
729
+ <ns4:element name="refills" type="System.Integer"/>
730
+ <ns4:element name="dosage" type="System.Quantity"/>
731
+ <ns4:element name="supply" type="System.Quantity"/>
732
+ <ns4:element name="frequency" type="System.Code"/>
733
+ <ns4:element name="daysSupplied" type="System.Integer"/>
734
+ <ns4:element name="route" type="System.Code"/>
735
+ <ns4:element name="prescriber">
736
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
737
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
738
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
739
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
740
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
741
+ </ns4:typeSpecifier>
742
+ </ns4:element>
743
+ <ns4:element name="dispenser">
744
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
745
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
746
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
747
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
748
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
749
+ </ns4:typeSpecifier>
750
+ </ns4:element>
751
+ <ns4:element name="negationRationale" type="System.Code"/>
752
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
753
+ </ns4:typeInfo>
754
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.DiagnosticStudyRecommended" retrievable="false" baseType="QDM.QDMBaseType">
755
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
756
+ <ns4:element name="negationRationale" type="System.Code"/>
757
+ <ns4:element name="requester">
758
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
759
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
760
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
761
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
762
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
763
+ </ns4:typeSpecifier>
764
+ </ns4:element>
765
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
766
+ </ns4:typeInfo>
767
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ImmunizationOrder" retrievable="false" baseType="QDM.QDMBaseType">
768
+ <ns4:element name="activeDatetime" type="System.DateTime"/>
769
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
770
+ <ns4:element name="dosage" type="System.Quantity"/>
771
+ <ns4:element name="supply" type="System.Quantity"/>
772
+ <ns4:element name="reason" type="System.Code"/>
773
+ <ns4:element name="route" type="System.Code"/>
774
+ <ns4:element name="negationRationale" type="System.Code"/>
775
+ <ns4:element name="requester">
776
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
777
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
778
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
779
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
780
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
781
+ </ns4:typeSpecifier>
782
+ </ns4:element>
783
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
784
+ </ns4:typeInfo>
785
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PatientCareExperience" retrievable="true" baseType="QDM.QDMBaseType" label="Patient Care Experience" primaryCodePath="code">
786
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
787
+ <ns4:element name="recorder">
788
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
789
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
790
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
791
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
792
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
793
+ </ns4:typeSpecifier>
794
+ </ns4:element>
795
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
796
+ </ns4:typeInfo>
797
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ProviderCareExperience" retrievable="true" baseType="QDM.QDMBaseType" label="Provider Care Experience" primaryCodePath="code">
798
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
799
+ <ns4:element name="recorder">
800
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
801
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
802
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
803
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
804
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
805
+ </ns4:typeSpecifier>
806
+ </ns4:element>
807
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
808
+ </ns4:typeInfo>
809
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.ProcedureOrder" retrievable="false" baseType="QDM.QDMBaseType">
810
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
811
+ <ns4:element name="reason" type="System.Code"/>
812
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
813
+ <ns4:element name="rank" type="System.Integer"/>
814
+ <ns4:element name="priority" type="System.Code"/>
815
+ <ns4:element name="negationRationale" type="System.Code"/>
816
+ <ns4:element name="requester">
817
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
818
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
819
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
820
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
821
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
822
+ </ns4:typeSpecifier>
823
+ </ns4:element>
824
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
825
+ </ns4:typeInfo>
826
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.MedicationOrder" retrievable="false" baseType="QDM.QDMBaseType">
827
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
828
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
829
+ <ns4:element name="refills" type="System.Integer"/>
830
+ <ns4:element name="dosage" type="System.Quantity"/>
831
+ <ns4:element name="supply" type="System.Quantity"/>
832
+ <ns4:element name="frequency" type="System.Code"/>
833
+ <ns4:element name="daysSupplied" type="System.Integer"/>
834
+ <ns4:element name="route" type="System.Code"/>
835
+ <ns4:element name="setting" type="System.Code"/>
836
+ <ns4:element name="reason" type="System.Code"/>
837
+ <ns4:element name="negationRationale" type="System.Code"/>
838
+ <ns4:element name="prescriber">
839
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
840
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
841
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
842
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
843
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
844
+ </ns4:typeSpecifier>
845
+ </ns4:element>
846
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
847
+ </ns4:typeInfo>
848
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.SubstanceRecommended" retrievable="false" baseType="QDM.QDMBaseType">
849
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
850
+ <ns4:element name="reason" type="System.Code"/>
851
+ <ns4:element name="dosage" type="System.Quantity"/>
852
+ <ns4:element name="frequency" type="System.Code"/>
853
+ <ns4:element name="refills" type="System.Integer"/>
854
+ <ns4:element name="route" type="System.Code"/>
855
+ <ns4:element name="negationRationale" type="System.Code"/>
856
+ <ns4:element name="requester">
857
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
858
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
859
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
860
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
861
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
862
+ </ns4:typeSpecifier>
863
+ </ns4:element>
864
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
865
+ </ns4:typeInfo>
866
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.InterventionRecommended" retrievable="false" baseType="QDM.QDMBaseType">
867
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
868
+ <ns4:element name="reason" type="System.Code"/>
869
+ <ns4:element name="negationRationale" type="System.Code"/>
870
+ <ns4:element name="requester">
871
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
872
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
873
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
874
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
875
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
876
+ </ns4:typeSpecifier>
877
+ </ns4:element>
878
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
879
+ </ns4:typeInfo>
880
+ <ns4:typeInfo xsi:type="ns4:ClassInfo" name="QDM.PhysicalExamPerformed" retrievable="false" baseType="QDM.QDMBaseType">
881
+ <ns4:element name="authorDatetime" type="System.DateTime"/>
882
+ <ns4:element name="relevantDatetime" type="System.DateTime"/>
883
+ <ns4:element name="relevantPeriod" type="interval&lt;System.DateTime&gt;"/>
884
+ <ns4:element name="reason" type="System.Code"/>
885
+ <ns4:element name="method" type="System.Code"/>
886
+ <ns4:element name="result"> <!--type="System.Any">-->
887
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
888
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Integer"/>
889
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Code"/>
890
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Date"/>
891
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="DateTime"/>
892
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Decimal"/>
893
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Quantity"/>
894
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Ratio"/>
895
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="System" name="Time"/>
896
+ </ns4:typeSpecifier>
897
+ </ns4:element>
898
+ <ns4:element name="anatomicalLocationSite" type="System.Code"/>
899
+ <ns4:element name="negationRationale" type="System.Code"/>
900
+ <ns4:element name="components" type="list&lt;QDM.Component&gt;"/>
901
+ <ns4:element name="performer">
902
+ <ns4:typeSpecifier xsi:type="ns4:ChoiceTypeSpecifier">
903
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="PatientEntity"/>
904
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="CarePartner"/>
905
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Practitioner"/>
906
+ <ns4:choice xsi:type="ns4:NamedTypeSpecifier" modelName="QDM" name="Organization"/>
907
+ </ns4:typeSpecifier>
908
+ </ns4:element>
909
+ <ns4:contextRelationship context="Patient" relatedKeyElement="patientId"/>
910
+ </ns4:typeInfo>
911
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveAssessmentOrder" retrievable="true" baseType="QDM.AssessmentOrder" identifier="PositiveAssessmentOrder" label="Assessment, Order" primaryCodePath="code"/>
912
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeAssessmentOrder" retrievable="true" baseType="QDM.AssessmentOrder" identifier="NegativeAssessmentOrder" label="Assessment, Not Ordered" primaryCodePath="code"/>
913
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveAssessmentRecommended" retrievable="true" baseType="QDM.AssessmentRecommended" identifier="PositiveAssessmentRecommended" label="Assessment, Recommended" primaryCodePath="code"/>
914
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeAssessmentRecommended" retrievable="true" baseType="QDM.AssessmentRecommended" identifier="NegativeAssessmentRecommended" label="Assessment, Not Recommended" primaryCodePath="code"/>
915
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveAssessmentPerformed" retrievable="true" baseType="QDM.AssessmentPerformed" identifier="PositiveAssessmentPerformed" label="Assessment, Performed" primaryCodePath="code"/>
916
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeAssessmentPerformed" retrievable="true" baseType="QDM.AssessmentPerformed" identifier="NegativeAssessmentPerformed" label="Assessment, Not Performed" primaryCodePath="code"/>
917
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveCommunicationPerformed" retrievable="true" baseType="QDM.CommunicationPerformed" identifier="PositiveCommunicationPerformed" label="Communication, Performed" primaryCodePath="code"/>
918
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeCommunicationPerformed" retrievable="true" baseType="QDM.CommunicationPerformed" identifier="NegativeCommunicationPerformed" label="Communication, Not Performed" primaryCodePath="code"/>
919
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveDeviceOrder" retrievable="true" baseType="QDM.DeviceOrder" identifier="PositiveDeviceOrder" label="Device, Order" primaryCodePath="code"/>
920
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeDeviceOrder" retrievable="true" baseType="QDM.DeviceOrder" identifier="NegativeDeviceOrder" label="Device, Not Ordered" primaryCodePath="code"/>
921
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveDeviceRecommended" retrievable="true" baseType="QDM.DeviceRecommended" identifier="PositiveDeviceRecommended" label="Device, Recommended" primaryCodePath="code"/>
922
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeDeviceRecommended" retrievable="true" baseType="QDM.DeviceRecommended" identifier="NegativeDeviceRecommended" label="Device, Not Recommended" primaryCodePath="code"/>
923
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveDeviceApplied" retrievable="true" baseType="QDM.DeviceApplied" identifier="PositiveDeviceApplied" label="Device, Applied" primaryCodePath="code"/>
924
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeDeviceApplied" retrievable="true" baseType="QDM.DeviceApplied" identifier="NegativeDeviceApplied" label="Device, Not Applied" primaryCodePath="code"/>
925
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveDiagnosticStudyOrder" retrievable="true" baseType="QDM.DiagnosticStudyOrder" identifier="PositiveDiagnosticStudyOrder" label="Diagnostic Study, Order" primaryCodePath="code"/>
926
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeDiagnosticStudyOrder" retrievable="true" baseType="QDM.DiagnosticStudyOrder" identifier="NegativeDiagnosticStudyOrder" label="Diagnostic Study, Not Ordered" primaryCodePath="code"/>
927
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveDiagnosticStudyRecommended" retrievable="true" baseType="QDM.DiagnosticStudyRecommended" identifier="PositiveDiagnosticStudyRecommended" label="Diagnostic Study, Recommended" primaryCodePath="code"/>
928
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeDiagnosticStudyRecommended" retrievable="true" baseType="QDM.DiagnosticStudyRecommended" identifier="NegativeDiagnosticStudyRecommended" label="Diagnostic Study, Not Recommended" primaryCodePath="code"/>
929
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveDiagnosticStudyPerformed" retrievable="true" baseType="QDM.DiagnosticStudyPerformed" identifier="PositiveDiagnosticStudyPerformed" label="Diagnostic Study, Performed" primaryCodePath="code"/>
930
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeDiagnosticStudyPerformed" retrievable="true" baseType="QDM.DiagnosticStudyPerformed" identifier="NegativeDiagnosticStudyPerformed" label="Diagnostic Study, Not Performed" primaryCodePath="code"/>
931
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveEncounterOrder" retrievable="true" baseType="QDM.EncounterOrder" identifier="PositiveEncounterOrder" label="Encounter, Order" primaryCodePath="code"/>
932
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeEncounterOrder" retrievable="true" baseType="QDM.EncounterOrder" identifier="NegativeEncounterOrder" label="Encounter, Not Ordered" primaryCodePath="code"/>
933
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveEncounterRecommended" retrievable="true" baseType="QDM.EncounterRecommended" identifier="PositiveEncounterRecommended" label="Encounter, Recommended" primaryCodePath="code"/>
934
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeEncounterRecommended" retrievable="true" baseType="QDM.EncounterRecommended" identifier="NegativeEncounterRecommended" label="Encounter, Not Recommended" primaryCodePath="code"/>
935
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveEncounterPerformed" retrievable="true" baseType="QDM.EncounterPerformed" identifier="PositiveEncounterPerformed" label="Encounter, Performed" primaryCodePath="code"/>
936
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeEncounterPerformed" retrievable="true" baseType="QDM.EncounterPerformed" identifier="NegativeEncounterPerformed" label="Encounter, Not Performed" primaryCodePath="code"/>
937
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveInterventionOrder" retrievable="true" baseType="QDM.InterventionOrder" identifier="PositiveInterventionOrder" label="Intervention, Order" primaryCodePath="code"/>
938
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeInterventionOrder" retrievable="true" baseType="QDM.InterventionOrder" identifier="NegativeInterventionOrder" label="Intervention, Not Ordered" primaryCodePath="code"/>
939
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveInterventionRecommended" retrievable="true" baseType="QDM.InterventionRecommended" identifier="PositiveInterventionRecommended" label="Intervention, Recommended" primaryCodePath="code"/>
940
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeInterventionRecommended" retrievable="true" baseType="QDM.InterventionRecommended" identifier="NegativeInterventionRecommended" label="Intervention, Not Recommended" primaryCodePath="code"/>
941
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveInterventionPerformed" retrievable="true" baseType="QDM.InterventionPerformed" identifier="PositiveInterventionPerformed" label="Intervention, Performed" primaryCodePath="code"/>
942
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeInterventionPerformed" retrievable="true" baseType="QDM.InterventionPerformed" identifier="NegativeInterventionPerformed" label="Intervention, Not Performed" primaryCodePath="code"/>
943
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveImmunizationOrder" retrievable="true" baseType="QDM.ImmunizationOrder" identifier="PositiveImmunizationOrder" label="Immunization, Order" primaryCodePath="code"/>
944
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeImmunizationOrder" retrievable="true" baseType="QDM.ImmunizationOrder" identifier="NegativeImmunizationOrder" label="Immunization, Not Ordered" primaryCodePath="code"/>
945
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveImmunizationAdministered" retrievable="true" baseType="QDM.ImmunizationAdministered" identifier="PositiveImmunizationAdministered" label="Immunization, Administered" primaryCodePath="code"/>
946
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeImmunizationAdministered" retrievable="true" baseType="QDM.ImmunizationAdministered" identifier="NegativeImmunizationAdministered" label="Immunization, Not Administered" primaryCodePath="code"/>
947
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveMedicationAdministered" retrievable="true" baseType="QDM.MedicationAdministered" identifier="PositiveMedicationAdministered" label="Medication, Administered" primaryCodePath="code"/>
948
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeMedicationAdministered" retrievable="true" baseType="QDM.MedicationAdministered" identifier="NegativeMedicationAdministered" label="Medication, Not Administered" primaryCodePath="code"/>
949
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveMedicationDispensed" retrievable="true" baseType="QDM.MedicationDispensed" identifier="PositiveMedicationDispensed" label="Medication, Dispensed" primaryCodePath="code"/>
950
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeMedicationDispensed" retrievable="true" baseType="QDM.MedicationDispensed" identifier="NegativeMedicationDispensed" label="Medication, Not Dispensed" primaryCodePath="code"/>
951
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveMedicationDischarge" retrievable="true" baseType="QDM.MedicationDischarge" identifier="PositiveMedicationDischarge" label="Medication, Discharge" primaryCodePath="code"/>
952
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeMedicationDischarge" retrievable="true" baseType="QDM.MedicationDischarge" identifier="NegativeMedicationDischarge" label="Medication, Not Discharged" primaryCodePath="code"/>
953
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveMedicationOrder" retrievable="true" baseType="QDM.MedicationOrder" identifier="PositiveMedicationOrder" label="Medication, Order" primaryCodePath="code"/>
954
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeMedicationOrder" retrievable="true" baseType="QDM.MedicationOrder" identifier="NegativeMedicationOrder" label="Medication, Not Ordered" primaryCodePath="code"/>
955
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositivePhysicalExamOrder" retrievable="true" baseType="QDM.PhysicalExamOrder" identifier="PositivePhysicalExamOrder" label="Physical Exam, Order" primaryCodePath="code"/>
956
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativePhysicalExamOrder" retrievable="true" baseType="QDM.PhysicalExamOrder" identifier="NegativePhysicalExamOrder" label="Physical Exam, Not Ordered" primaryCodePath="code"/>
957
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositivePhysicalExamRecommended" retrievable="true" baseType="QDM.PhysicalExamRecommended" identifier="PositivePhysicalExamRecommended" label="Physical Exam, Recommended" primaryCodePath="code"/>
958
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativePhysicalExamRecommended" retrievable="true" baseType="QDM.PhysicalExamRecommended" identifier="NegativePhysicalExamRecommended" label="Physical Exam, Not Recommended" primaryCodePath="code"/>
959
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositivePhysicalExamPerformed" retrievable="true" baseType="QDM.PhysicalExamPerformed" identifier="PositivePhysicalExamPerformed" label="Physical Exam, Performed" primaryCodePath="code"/>
960
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativePhysicalExamPerformed" retrievable="true" baseType="QDM.PhysicalExamPerformed" identifier="NegativePhysicalExamPerformed" label="Physical Exam, Not Performed" primaryCodePath="code"/>
961
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveProcedureOrder" retrievable="true" baseType="QDM.ProcedureOrder" identifier="PositiveProcedureOrder" label="Procedure, Order" primaryCodePath="code"/>
962
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeProcedureOrder" retrievable="true" baseType="QDM.ProcedureOrder" identifier="NegativeProcedureOrder" label="Procedure, Not Ordered" primaryCodePath="code"/>
963
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveProcedureRecommended" retrievable="true" baseType="QDM.ProcedureRecommended" identifier="PositiveProcedureRecommended" label="Procedure, Recommended" primaryCodePath="code"/>
964
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeProcedureRecommended" retrievable="true" baseType="QDM.ProcedureRecommended" identifier="NegativeProcedureRecommended" label="Procedure, Not Recommended" primaryCodePath="code"/>
965
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveProcedurePerformed" retrievable="true" baseType="QDM.ProcedurePerformed" identifier="PositiveProcedurePerformed" label="Procedure, Performed" primaryCodePath="code"/>
966
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeProcedurePerformed" retrievable="true" baseType="QDM.ProcedurePerformed" identifier="NegativeProcedurePerformed" label="Procedure, Not Performed" primaryCodePath="code"/>
967
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveSubstanceOrder" retrievable="true" baseType="QDM.SubstanceOrder" identifier="PositiveSubstanceOrder" label="Substance, Order" primaryCodePath="code"/>
968
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeSubstanceOrder" retrievable="true" baseType="QDM.SubstanceOrder" identifier="NegativeSubstanceOrder" label="Substance, Not Ordered" primaryCodePath="code"/>
969
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveSubstanceRecommended" retrievable="true" baseType="QDM.SubstanceRecommended" identifier="PositiveSubstanceRecommended" label="Substance, Recommended" primaryCodePath="code"/>
970
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeSubstanceRecommended" retrievable="true" baseType="QDM.SubstanceRecommended" identifier="NegativeSubstanceRecommended" label="Substance, Not Recommended" primaryCodePath="code"/>
971
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveSubstanceAdministered" retrievable="true" baseType="QDM.SubstanceAdministered" identifier="PositiveSubstanceAdministered" label="Substance, Administered" primaryCodePath="code"/>
972
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeSubstanceAdministered" retrievable="true" baseType="QDM.SubstanceAdministered" identifier="NegativeSubstanceAdministered" label="Substance, Not Administered" primaryCodePath="code"/>
973
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveLaboratoryTestOrder" retrievable="true" baseType="QDM.LaboratoryTestOrder" identifier="PositiveLaboratoryTestOrder" label="Laboratory Test, Order" primaryCodePath="code"/>
974
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeLaboratoryTestOrder" retrievable="true" baseType="QDM.LaboratoryTestOrder" identifier="NegativeLaboratoryTestOrder" label="Laboratory Test, Not Ordered" primaryCodePath="code"/>
975
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveLaboratoryTestRecommended" retrievable="true" baseType="QDM.LaboratoryTestRecommended" identifier="PositiveLaboratoryTestRecommended" label="Laboratory Test, Recommended" primaryCodePath="code"/>
976
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeLaboratoryTestRecommended" retrievable="true" baseType="QDM.LaboratoryTestRecommended" identifier="NegativeLaboratoryTestRecommended" label="Laboratory Test, Not Recommended" primaryCodePath="code"/>
977
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.PositiveLaboratoryTestPerformed" retrievable="true" baseType="QDM.LaboratoryTestPerformed" identifier="PositiveLaboratoryTestPerformed" label="Laboratory Test, Performed" primaryCodePath="code"/>
978
+ <ns4:typeInfo xsi:type="ns4:ProfileInfo" name="QDM.NegativeLaboratoryTestPerformed" retrievable="true" baseType="QDM.LaboratoryTestPerformed" identifier="NegativeLaboratoryTestPerformed" label="Laboratory Test, Not Performed" primaryCodePath="code"/>
979
+ <ns4:contextInfo name="Patient" keyElement="id" birthDateElement="birthDatetime">
980
+ <ns4:contextType modelName="QDM" name="Patient"/>
981
+ </ns4:contextInfo>
982
+ </ns4:modelInfo>