cqm-models 2.0.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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>