us_core_test_kit 0.6.3 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/lib/us_core_test_kit/custom_groups/smart_app_launch_group.rb +2 -2
  3. data/lib/us_core_test_kit/fhir_resource_navigation.rb +3 -3
  4. data/lib/us_core_test_kit/generated/v3.1.1/metadata.yml +10 -0
  5. data/lib/us_core_test_kit/generated/v3.1.1/patient/metadata.yml +10 -0
  6. data/lib/us_core_test_kit/generated/v3.1.1/us_core_test_suite.rb +2 -1
  7. data/lib/us_core_test_kit/generated/v4.0.0/metadata.yml +10 -0
  8. data/lib/us_core_test_kit/generated/v4.0.0/patient/metadata.yml +10 -0
  9. data/lib/us_core_test_kit/generated/v4.0.0/us_core_test_suite.rb +2 -1
  10. data/lib/us_core_test_kit/generated/v5.0.1/metadata.yml +21 -2
  11. data/lib/us_core_test_kit/generated/v5.0.1/patient/metadata.yml +6 -2
  12. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/metadata.yml +155 -0
  13. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_must_support_test.rb +45 -0
  14. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_practitioner_search_test.rb +41 -0
  15. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_read_test.rb +26 -0
  16. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_reference_resolution_test.rb +43 -0
  17. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_specialty_search_test.rb +53 -0
  18. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_validation_test.rb +40 -0
  19. data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role_group.rb +89 -0
  20. data/lib/us_core_test_kit/generated/v5.0.1/us_core_test_suite.rb +4 -1
  21. data/lib/us_core_test_kit/generated/v6.1.0/metadata.yml +17 -2
  22. data/lib/us_core_test_kit/generated/v6.1.0/patient/metadata.yml +2 -2
  23. data/lib/us_core_test_kit/generated/v6.1.0/patient/patient_must_support_test.rb +0 -2
  24. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/metadata.yml +155 -0
  25. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_must_support_test.rb +45 -0
  26. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_practitioner_search_test.rb +41 -0
  27. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_read_test.rb +26 -0
  28. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_reference_resolution_test.rb +43 -0
  29. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_specialty_search_test.rb +53 -0
  30. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_validation_test.rb +40 -0
  31. data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role_group.rb +89 -0
  32. data/lib/us_core_test_kit/generated/v6.1.0/us_core_test_suite.rb +4 -1
  33. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_category_status_search_test.rb → location/location_address_city_search_test.rb} +7 -13
  34. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_code_date_search_test.rb → location/location_address_postalcode_search_test.rb} +7 -14
  35. data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/location_address_search_test.rb +52 -0
  36. data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/location_address_state_search_test.rb +43 -0
  37. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_must_support_test.rb → location/location_must_support_test.rb} +17 -16
  38. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_category_search_test.rb → location/location_name_search_test.rb} +7 -13
  39. data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/location_read_test.rb +26 -0
  40. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_reference_resolution_test.rb → location/location_reference_resolution_test.rb} +6 -6
  41. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_validation_test.rb → location/location_validation_test.rb} +7 -7
  42. data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/metadata.yml +194 -0
  43. data/lib/us_core_test_kit/generated/v7.0.0-ballot/location_group.rb +93 -0
  44. data/lib/us_core_test_kit/generated/v7.0.0-ballot/metadata.yml +38 -273
  45. data/lib/us_core_test_kit/generated/v7.0.0-ballot/patient/metadata.yml +2 -2
  46. data/lib/us_core_test_kit/generated/v7.0.0-ballot/patient/patient_must_support_test.rb +0 -2
  47. data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/metadata.yml +160 -0
  48. data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_must_support_test.rb +45 -0
  49. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_code_search_test.rb → practitioner_role/practitioner_role_practitioner_search_test.rb} +8 -20
  50. data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_read_test.rb +26 -0
  51. data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_reference_resolution_test.rb +43 -0
  52. data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_category_date_search_test.rb → practitioner_role/practitioner_role_specialty_search_test.rb} +8 -14
  53. data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_validation_test.rb +40 -0
  54. data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role_group.rb +89 -0
  55. data/lib/us_core_test_kit/generated/v7.0.0-ballot/us_core_test_suite.rb +6 -3
  56. data/lib/us_core_test_kit/generator/group_generator.rb +2 -2
  57. data/lib/us_core_test_kit/generator/group_metadata.rb +3 -1
  58. data/lib/us_core_test_kit/generator/ig_metadata_extractor.rb +8 -1
  59. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_3.rb +64 -18
  60. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_4.rb +1 -18
  61. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_5.rb +0 -15
  62. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_6.rb +5 -2
  63. data/lib/us_core_test_kit/generator/special_cases.rb +17 -7
  64. data/lib/us_core_test_kit/granular_scope_checker.rb +1 -1
  65. data/lib/us_core_test_kit/version.rb +1 -1
  66. metadata +40 -94
  67. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_abatement_date_granular_scope_test.rb +0 -45
  68. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_asserted_date_granular_scope_test.rb +0 -45
  69. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_category_clinical_status_granular_scope_test.rb +0 -45
  70. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_category_encounter_granular_scope_test.rb +0 -45
  71. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_category_granular_scope_test.rb +0 -45
  72. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_clinical_status_granular_scope_test.rb +0 -45
  73. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_code_granular_scope_test.rb +0 -45
  74. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_granular_scope_test.rb +0 -45
  75. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_onset_date_granular_scope_test.rb +0 -45
  76. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_recorded_date_granular_scope_test.rb +0 -45
  77. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_granular_scope1_group.rb +0 -38
  78. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_granular_scope2_group.rb +0 -38
  79. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_category_date_granular_scope_test.rb +0 -45
  80. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_category_granular_scope_test.rb +0 -45
  81. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_code_date_granular_scope_test.rb +0 -45
  82. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_code_granular_scope_test.rb +0 -45
  83. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_granular_scope_test.rb +0 -45
  84. data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_status_granular_scope_test.rb +0 -45
  85. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_id_granular_scope_test.rb +0 -41
  86. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_category_date_granular_scope_test.rb +0 -45
  87. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_category_granular_scope_test.rb +0 -45
  88. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_granular_scope_test.rb +0 -45
  89. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_status_granular_scope_test.rb +0 -45
  90. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_type_granular_scope_test.rb +0 -45
  91. data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_type_period_granular_scope_test.rb +0 -45
  92. data/lib/us_core_test_kit/generated/v6.1.0/document_reference_granular_scope1_group.rb +0 -39
  93. data/lib/us_core_test_kit/generated/v6.1.0/document_reference_granular_scope2_group.rb +0 -39
  94. data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_category_date_granular_scope_test.rb +0 -45
  95. data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_category_granular_scope_test.rb +0 -45
  96. data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_category_status_granular_scope_test.rb +0 -45
  97. data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_code_date_granular_scope_test.rb +0 -45
  98. data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_code_granular_scope_test.rb +0 -45
  99. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_id_granular_scope_test.rb +0 -41
  100. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_category_authored_granular_scope_test.rb +0 -45
  101. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_category_granular_scope_test.rb +0 -45
  102. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_code_authored_granular_scope_test.rb +0 -45
  103. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_code_granular_scope_test.rb +0 -45
  104. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_granular_scope_test.rb +0 -45
  105. data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_status_granular_scope_test.rb +0 -45
  106. data/lib/us_core_test_kit/generated/v6.1.0/service_request_granular_scope1_group.rb +0 -39
  107. data/lib/us_core_test_kit/generated/v6.1.0/service_request_granular_scope2_group.rb +0 -40
  108. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_abatement_date_granular_scope_test.rb +0 -45
  109. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_asserted_date_granular_scope_test.rb +0 -45
  110. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_category_clinical_status_granular_scope_test.rb +0 -45
  111. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_category_encounter_granular_scope_test.rb +0 -45
  112. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_category_granular_scope_test.rb +0 -45
  113. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_clinical_status_granular_scope_test.rb +0 -45
  114. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_code_granular_scope_test.rb +0 -45
  115. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_granular_scope_test.rb +0 -45
  116. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_onset_date_granular_scope_test.rb +0 -45
  117. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_recorded_date_granular_scope_test.rb +0 -45
  118. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_category_date_granular_scope_test.rb +0 -45
  119. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_category_granular_scope_test.rb +0 -45
  120. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_code_date_granular_scope_test.rb +0 -45
  121. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_code_granular_scope_test.rb +0 -45
  122. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_granular_scope_test.rb +0 -45
  123. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_status_granular_scope_test.rb +0 -45
  124. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_id_granular_scope_test.rb +0 -41
  125. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_category_date_granular_scope_test.rb +0 -45
  126. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_category_granular_scope_test.rb +0 -45
  127. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_granular_scope_test.rb +0 -45
  128. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_status_granular_scope_test.rb +0 -45
  129. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_type_granular_scope_test.rb +0 -45
  130. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_type_period_granular_scope_test.rb +0 -45
  131. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference_granular_scope2_group.rb +0 -39
  132. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_category_date_granular_scope_test.rb +0 -45
  133. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_category_granular_scope_test.rb +0 -45
  134. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_category_status_granular_scope_test.rb +0 -45
  135. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_code_date_granular_scope_test.rb +0 -45
  136. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_code_granular_scope_test.rb +0 -45
  137. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_id_granular_scope_test.rb +0 -41
  138. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_category_authored_granular_scope_test.rb +0 -45
  139. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_category_granular_scope_test.rb +0 -45
  140. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_code_authored_granular_scope_test.rb +0 -45
  141. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_code_granular_scope_test.rb +0 -45
  142. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_granular_scope_test.rb +0 -45
  143. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_status_granular_scope_test.rb +0 -45
  144. data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs/metadata.yml +0 -273
  145. data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs/vital_signs_provenance_revinclude_search_test.rb +0 -53
  146. data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs/vital_signs_read_test.rb +0 -26
  147. data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs_group.rb +0 -96
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae422bd809f25f80713609cd5e9788d79328b858c4c894c2b655c7ef0a032bff
4
- data.tar.gz: e2635557f7028fac68fc5da1cff69151a6eb460980b4b33e1d0c1c165c5dccca
3
+ metadata.gz: b523f64858f67e78b0320d2fdeb6d7627d325aaad65a3964fb8c6ee2b2d666c7
4
+ data.tar.gz: 1c7dac1bdf1ef473c38876d67dd2a80175debc4f2fb1ede9c691e86ff8891d4b
5
5
  SHA512:
6
- metadata.gz: 5b8815cee5c3ac07cb19f5230475234ae58aad17e7ca05ad8fb2f81e0363c7f0c6bba39238c033994b8e1c57000ed7750f590bc6ce66a06b697499ed2e8accc1
7
- data.tar.gz: 15b2dc110550186d0c63889bf870b7e1344226dfa87b81e7c3eb351ef70d95690227218ddfacf1be113eae22a99090fe2fbc07dbbe06b7c9e86ee25038e52be4
6
+ metadata.gz: 99baa30564cabcba6e7c288bf114269077b6710e0b78997490a596382a7eed519509d41d601f58d95f61281a9051546d7c2a7554517fab40803d4f3ee6bdeb69
7
+ data.tar.gz: 49cb5f382f48f3e3fcd154612bd3dbc01239a8cf06714825d460066fea85cf839532f6be75f601caf04383f59f09845a2df243b43b3b08db6c19e7463862b6ff
@@ -10,9 +10,9 @@ module USCoreTestKit
10
10
  id :us_core_smart_app_launch
11
11
  title 'SMART App Launch'
12
12
 
13
- SMART_V1_RESOURCE_LEVEL_SCOPES = "launch/patient openid fhirUser offline_access patient/Medication.read patient/AllergyIntolerance.read patient/CarePlan.read patient/CareTeam.read patient/Condition.read patient/Device.read patient/DiagnosticReport.read patient/DocumentReference.read patient/Encounter.read patient/Goal.read patient/Immunization.read patient/Location.read patient/MedicationRequest.read patient/Observation.read patient/Organization.read patient/Patient.read patient/Practitioner.read patient/Procedure.read patient/Provenance.read patient/PractitionerRole.read patient/ServiceRequest.read patient/RelatedPerson.read patient/Specimen.read patient/MedicationDispense.read patient/Coverage.read".freeze
13
+ SMART_V1_RESOURCE_LEVEL_SCOPES = "launch/patient openid fhirUser offline_access patient/Medication.read patient/AllergyIntolerance.read patient/CarePlan.read patient/CareTeam.read patient/Condition.read patient/Device.read patient/DiagnosticReport.read patient/DocumentReference.read patient/Encounter.read patient/Goal.read patient/Immunization.read patient/Location.read patient/MedicationRequest.read patient/Observation.read patient/Organization.read patient/Patient.read patient/Practitioner.read patient/Procedure.read patient/Provenance.read patient/PractitionerRole.read patient/ServiceRequest.read patient/RelatedPerson.read patient/Specimen.read patient/MedicationDispense.read patient/Coverage.read patient/Location.read".freeze
14
14
 
15
- SMART_V2_RESOURCE_LEVEL_SCOPES = "launch/patient openid fhirUser offline_access patient/Medication.rs patient/AllergyIntolerance.rs patient/CarePlan.rs patient/CareTeam.rs patient/Condition.rs patient/Device.rs patient/DiagnosticReport.rs patient/DocumentReference.rs patient/Encounter.rs patient/Goal.rs patient/Immunization.rs patient/Location.rs patient/MedicationRequest.rs patient/Observation.rs patient/Organization.rs patient/Patient.rs patient/Practitioner.rs patient/Procedure.rs patient/Provenance.rs patient/PractitionerRole.rs patient/ServiceRequest.rs patient/RelatedPerson.rs patient/Specimen.rs patient/MedicationDispense.rs patient/Coverage.rs".freeze
15
+ SMART_V2_RESOURCE_LEVEL_SCOPES = "launch/patient openid fhirUser offline_access patient/Medication.rs patient/AllergyIntolerance.rs patient/CarePlan.rs patient/CareTeam.rs patient/Condition.rs patient/Device.rs patient/DiagnosticReport.rs patient/DocumentReference.rs patient/Encounter.rs patient/Goal.rs patient/Immunization.rs patient/Location.rs patient/MedicationRequest.rs patient/Observation.rs patient/Organization.rs patient/Patient.rs patient/Practitioner.rs patient/Procedure.rs patient/Provenance.rs patient/PractitionerRole.rs patient/ServiceRequest.rs patient/RelatedPerson.rs patient/Specimen.rs patient/MedicationDispense.rs patient/Coverage.rs patient/Location.rs".freeze
16
16
 
17
17
  group from: :us_core_smart_standalone_launch_stu1,
18
18
  required_suite_options: USCoreOptions::SMART_1_REQUIREMENT,
@@ -80,11 +80,11 @@ module USCoreTestKit
80
80
  slices.find do |slice|
81
81
  case discriminator[:type]
82
82
  when 'patternCodeableConcept'
83
- slice_value = discriminator[:path].present? ? slice.send("#{discriminator[:path]}").coding : slice.coding
84
- slice_value.any? { |coding| coding.code == discriminator[:code] && coding.system == discriminator[:system] }
83
+ slice_value = discriminator[:path].present? ? slice.send("#{discriminator[:path]}")&.coding : slice.coding
84
+ slice_value&.any? { |coding| coding.code == discriminator[:code] && coding.system == discriminator[:system] }
85
85
  when 'patternCoding'
86
86
  slice_value = discriminator[:path].present? ? slice.send(discriminator[:path]) : slice
87
- slice_value.code == discriminator[:code] && slice_value.system == discriminator[:system]
87
+ slice_value&.code == discriminator[:code] && slice_value&.system == discriminator[:system]
88
88
  when 'patternIdentifier'
89
89
  slice.identifier.system == discriminator[:system]
90
90
  when 'value'
@@ -6660,8 +6660,18 @@
6660
6660
  - :path: address.city
6661
6661
  - :path: address.state
6662
6662
  - :path: address.postalCode
6663
+ - :path: address.period.end
6664
+ :uscdi_only: true
6663
6665
  - :path: communication
6664
6666
  - :path: communication.language
6667
+ - :path: name.period.end
6668
+ :uscdi_only: true
6669
+ - :path: name.use
6670
+ :fixed_value: old
6671
+ :uscdi_only: true
6672
+ - :path: address.use
6673
+ :fixed_value: old
6674
+ :uscdi_only: true
6665
6675
  :choices:
6666
6676
  - :paths:
6667
6677
  - address.period.end
@@ -172,8 +172,18 @@
172
172
  - :path: address.city
173
173
  - :path: address.state
174
174
  - :path: address.postalCode
175
+ - :path: address.period.end
176
+ :uscdi_only: true
175
177
  - :path: communication
176
178
  - :path: communication.language
179
+ - :path: name.period.end
180
+ :uscdi_only: true
181
+ - :path: name.use
182
+ :fixed_value: old
183
+ :uscdi_only: true
184
+ - :path: address.use
185
+ :fixed_value: old
186
+ :uscdi_only: true
177
187
  :choices:
178
188
  - :paths:
179
189
  - address.period.end
@@ -64,7 +64,8 @@ module USCoreTestKit
64
64
  /Observation\.effective\.ofType\(Period\): .*us-core-1:/, # Invalid invariant in US Core v3.1.1
65
65
  /Provenance.agent\[\d*\]: Rule provenance-1/, #Invalid invariant in US Core v5.0.1
66
66
  %r{Unknown Code System 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags'}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
67
- %r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve} # Validator has an issue with this US Core 5 code system in US Core 6 resource
67
+ %r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
68
+ %r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'} # Known issue with the Pulse Oximetry Profile
68
69
  ].freeze
69
70
 
70
71
  VERSION_SPECIFIC_MESSAGE_FILTERS = [].freeze
@@ -7289,6 +7289,8 @@
7289
7289
  - :path: address.city
7290
7290
  - :path: address.state
7291
7291
  - :path: address.postalCode
7292
+ - :path: address.period.end
7293
+ :uscdi_only: true
7292
7294
  - :path: communication.language
7293
7295
  :uscdi_only: true
7294
7296
  - :path: name.suffix
@@ -7297,6 +7299,14 @@
7297
7299
  :uscdi_only: true
7298
7300
  - :path: communication
7299
7301
  :uscdi_only: true
7302
+ - :path: name.period.end
7303
+ :uscdi_only: true
7304
+ - :path: name.use
7305
+ :fixed_value: old
7306
+ :uscdi_only: true
7307
+ - :path: address.use
7308
+ :fixed_value: old
7309
+ :uscdi_only: true
7300
7310
  :choices:
7301
7311
  - :paths:
7302
7312
  - address.period.end
@@ -177,6 +177,8 @@
177
177
  - :path: address.city
178
178
  - :path: address.state
179
179
  - :path: address.postalCode
180
+ - :path: address.period.end
181
+ :uscdi_only: true
180
182
  - :path: communication.language
181
183
  :uscdi_only: true
182
184
  - :path: name.suffix
@@ -185,6 +187,14 @@
185
187
  :uscdi_only: true
186
188
  - :path: communication
187
189
  :uscdi_only: true
190
+ - :path: name.period.end
191
+ :uscdi_only: true
192
+ - :path: name.use
193
+ :fixed_value: old
194
+ :uscdi_only: true
195
+ - :path: address.use
196
+ :fixed_value: old
197
+ :uscdi_only: true
188
198
  :choices:
189
199
  - :paths:
190
200
  - address.period.end
@@ -66,7 +66,8 @@ module USCoreTestKit
66
66
  /Observation\.effective\.ofType\(Period\): .*us-core-1:/, # Invalid invariant in US Core v3.1.1
67
67
  /Provenance.agent\[\d*\]: Rule provenance-1/, #Invalid invariant in US Core v5.0.1
68
68
  %r{Unknown Code System 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags'}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
69
- %r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve} # Validator has an issue with this US Core 5 code system in US Core 6 resource
69
+ %r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
70
+ %r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'} # Known issue with the Pulse Oximetry Profile
70
71
  ].freeze
71
72
 
72
73
  VERSION_SPECIFIC_MESSAGE_FILTERS = [].freeze
@@ -9726,6 +9726,8 @@
9726
9726
  - :path: address.city
9727
9727
  - :path: address.state
9728
9728
  - :path: address.postalCode
9729
+ - :path: address.period.end
9730
+ :uscdi_only: true
9729
9731
  - :path: communication.language
9730
9732
  :uscdi_only: true
9731
9733
  - :path: name.suffix
@@ -9734,12 +9736,14 @@
9734
9736
  :uscdi_only: true
9735
9737
  - :path: communication
9736
9738
  :uscdi_only: true
9737
- - :path: address.use
9738
- :fixed_value: old
9739
+ - :path: name.period.end
9739
9740
  :uscdi_only: true
9740
9741
  - :path: name.use
9741
9742
  :fixed_value: old
9742
9743
  :uscdi_only: true
9744
+ - :path: address.use
9745
+ :fixed_value: old
9746
+ :uscdi_only: true
9743
9747
  :choices:
9744
9748
  - :paths:
9745
9749
  - address.period.end
@@ -10180,6 +10184,21 @@
10180
10184
  - :path: PractitionerRole.endpoint
10181
10185
  :profiles:
10182
10186
  - http://hl7.org/fhir/StructureDefinition/Endpoint
10187
+ :tests:
10188
+ - :id: us_core_v501_practitioner_role_read_test
10189
+ :file_name: practitioner_role_read_test.rb
10190
+ - :id: us_core_v501_practitioner_role_specialty_search_test
10191
+ :file_name: practitioner_role_specialty_search_test.rb
10192
+ - :id: us_core_v501_practitioner_role_practitioner_search_test
10193
+ :file_name: practitioner_role_practitioner_search_test.rb
10194
+ - :id: us_core_v501_practitioner_role_validation_test
10195
+ :file_name: practitioner_role_validation_test.rb
10196
+ - :id: us_core_v501_practitioner_role_must_support_test
10197
+ :file_name: practitioner_role_must_support_test.rb
10198
+ - :id: us_core_v501_practitioner_role_reference_resolution_test
10199
+ :file_name: practitioner_role_reference_resolution_test.rb
10200
+ :id: us_core_v501_practitioner_role
10201
+ :file_name: practitioner_role_group.rb
10183
10202
  :delayed_references:
10184
10203
  - :path: practitioner
10185
10204
  :resources:
@@ -180,6 +180,8 @@
180
180
  - :path: address.city
181
181
  - :path: address.state
182
182
  - :path: address.postalCode
183
+ - :path: address.period.end
184
+ :uscdi_only: true
183
185
  - :path: communication.language
184
186
  :uscdi_only: true
185
187
  - :path: name.suffix
@@ -188,12 +190,14 @@
188
190
  :uscdi_only: true
189
191
  - :path: communication
190
192
  :uscdi_only: true
191
- - :path: address.use
192
- :fixed_value: old
193
+ - :path: name.period.end
193
194
  :uscdi_only: true
194
195
  - :path: name.use
195
196
  :fixed_value: old
196
197
  :uscdi_only: true
198
+ - :path: address.use
199
+ :fixed_value: old
200
+ :uscdi_only: true
197
201
  :choices:
198
202
  - :paths:
199
203
  - address.period.end
@@ -0,0 +1,155 @@
1
+ ---
2
+ :name: us_core_practitionerrole
3
+ :class_name: USCorev501PractitionerroleSequence
4
+ :version: v5.0.1
5
+ :reformatted_version: v501
6
+ :resource: PractitionerRole
7
+ :profile_url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
8
+ :profile_name: US Core PractitionerRole Profile
9
+ :profile_version: 5.0.1
10
+ :title: PractitionerRole
11
+ :short_description: Verify support for the server capabilities required by the US
12
+ Core PractitionerRole Profile.
13
+ :is_delayed: true
14
+ :interactions:
15
+ - :code: create
16
+ :expectation: MAY
17
+ - :code: search-type
18
+ :expectation: SHALL
19
+ - :code: read
20
+ :expectation: SHALL
21
+ - :code: vread
22
+ :expectation: SHOULD
23
+ - :code: update
24
+ :expectation: MAY
25
+ - :code: patch
26
+ :expectation: MAY
27
+ - :code: delete
28
+ :expectation: MAY
29
+ - :code: history-instance
30
+ :expectation: SHOULD
31
+ - :code: history-type
32
+ :expectation: MAY
33
+ :operations: []
34
+ :searches:
35
+ - :names:
36
+ - specialty
37
+ :expectation: SHALL
38
+ :names_not_must_support_or_mandatory: []
39
+ :must_support_or_mandatory: true
40
+ - :names:
41
+ - practitioner
42
+ :expectation: SHALL
43
+ :names_not_must_support_or_mandatory: []
44
+ :must_support_or_mandatory: true
45
+ :search_definitions:
46
+ :specialty:
47
+ :paths:
48
+ - specialty
49
+ :full_paths:
50
+ - PractitionerRole.specialty
51
+ :comparators: {}
52
+ :values: []
53
+ :type: CodeableConcept
54
+ :contains_multiple: true
55
+ :multiple_or: MAY
56
+ :practitioner:
57
+ :paths:
58
+ - practitioner
59
+ :full_paths:
60
+ - PractitionerRole.practitioner
61
+ :comparators: {}
62
+ :values: []
63
+ :type: Reference
64
+ :contains_multiple: false
65
+ :multiple_or: MAY
66
+ :chain:
67
+ - :chain: identifier
68
+ :expectation: SHALL
69
+ - :chain: name
70
+ :expectation: SHALL
71
+ :include_params:
72
+ - PractitionerRole:endpoint
73
+ - PractitionerRole:practitioner
74
+ :revincludes: []
75
+ :required_concepts: []
76
+ :must_supports:
77
+ :extensions: []
78
+ :slices: []
79
+ :elements:
80
+ - :path: practitioner
81
+ :types:
82
+ - Reference
83
+ :target_profiles:
84
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
85
+ - :path: organization
86
+ :types:
87
+ - Reference
88
+ :target_profiles:
89
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization
90
+ - :path: code
91
+ - :path: specialty
92
+ - :path: location
93
+ :types:
94
+ - Reference
95
+ - :path: telecom
96
+ - :path: telecom.system
97
+ - :path: telecom.value
98
+ - :path: endpoint
99
+ :types:
100
+ - Reference
101
+ :mandatory_elements:
102
+ - PractitionerRole.telecom.system
103
+ - PractitionerRole.telecom.value
104
+ - PractitionerRole.notAvailable.description
105
+ :bindings:
106
+ - :type: code
107
+ :strength: required
108
+ :system: http://hl7.org/fhir/ValueSet/contact-point-system
109
+ :path: telecom.system
110
+ - :type: code
111
+ :strength: required
112
+ :system: http://hl7.org/fhir/ValueSet/contact-point-use
113
+ :path: telecom.use
114
+ - :type: code
115
+ :strength: required
116
+ :system: http://hl7.org/fhir/ValueSet/days-of-week
117
+ :path: availableTime.daysOfWeek
118
+ :references:
119
+ - :path: PractitionerRole.practitioner
120
+ :profiles:
121
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
122
+ - :path: PractitionerRole.organization
123
+ :profiles:
124
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization
125
+ - :path: PractitionerRole.location
126
+ :profiles:
127
+ - http://hl7.org/fhir/StructureDefinition/Location
128
+ - :path: PractitionerRole.healthcareService
129
+ :profiles:
130
+ - http://hl7.org/fhir/StructureDefinition/HealthcareService
131
+ - :path: PractitionerRole.endpoint
132
+ :profiles:
133
+ - http://hl7.org/fhir/StructureDefinition/Endpoint
134
+ :tests:
135
+ - :id: us_core_v501_practitioner_role_read_test
136
+ :file_name: practitioner_role_read_test.rb
137
+ - :id: us_core_v501_practitioner_role_specialty_search_test
138
+ :file_name: practitioner_role_specialty_search_test.rb
139
+ - :id: us_core_v501_practitioner_role_practitioner_search_test
140
+ :file_name: practitioner_role_practitioner_search_test.rb
141
+ - :id: us_core_v501_practitioner_role_validation_test
142
+ :file_name: practitioner_role_validation_test.rb
143
+ - :id: us_core_v501_practitioner_role_must_support_test
144
+ :file_name: practitioner_role_must_support_test.rb
145
+ - :id: us_core_v501_practitioner_role_reference_resolution_test
146
+ :file_name: practitioner_role_reference_resolution_test.rb
147
+ :id: us_core_v501_practitioner_role
148
+ :file_name: practitioner_role_group.rb
149
+ :delayed_references:
150
+ - :path: practitioner
151
+ :resources:
152
+ - Practitioner
153
+ - :path: organization
154
+ :resources:
155
+ - Organization
@@ -0,0 +1,45 @@
1
+ require_relative '../../../must_support_test'
2
+
3
+ module USCoreTestKit
4
+ module USCoreV501
5
+ class PractitionerRoleMustSupportTest < Inferno::Test
6
+ include USCoreTestKit::MustSupportTest
7
+
8
+ title 'All must support elements are provided in the PractitionerRole resources returned'
9
+ description %(
10
+ US Core Responders SHALL be capable of populating all data elements as
11
+ part of the query results as specified by the US Core Server Capability
12
+ Statement. This test will look through the PractitionerRole resources
13
+ found previously for the following must support elements:
14
+
15
+ * PractitionerRole.code
16
+ * PractitionerRole.endpoint
17
+ * PractitionerRole.location
18
+ * PractitionerRole.organization
19
+ * PractitionerRole.practitioner
20
+ * PractitionerRole.specialty
21
+ * PractitionerRole.telecom
22
+ * PractitionerRole.telecom.system
23
+ * PractitionerRole.telecom.value
24
+ )
25
+
26
+ id :us_core_v501_practitioner_role_must_support_test
27
+
28
+ def resource_type
29
+ 'PractitionerRole'
30
+ end
31
+
32
+ def self.metadata
33
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
34
+ end
35
+
36
+ def scratch_resources
37
+ scratch[:practitioner_role_resources] ||= {}
38
+ end
39
+
40
+ run do
41
+ perform_must_support_test(all_scratch_resources)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../../../search_test'
2
+ require_relative '../../../generator/group_metadata'
3
+
4
+ module USCoreTestKit
5
+ module USCoreV501
6
+ class PractitionerRolePractitionerSearchTest < Inferno::Test
7
+ include USCoreTestKit::SearchTest
8
+
9
+ title 'Server returns valid results for PractitionerRole search by practitioner'
10
+ description %(
11
+ A server SHALL support searching by
12
+ practitioner on the PractitionerRole resource. This test
13
+ will pass if resources are returned and match the search criteria. If
14
+ none are returned, the test is skipped.
15
+
16
+ [US Core Server CapabilityStatement](http://hl7.org/fhir/us/core//CapabilityStatement-us-core-server.html)
17
+
18
+ )
19
+
20
+ id :us_core_v501_practitioner_role_practitioner_search_test
21
+ def self.properties
22
+ @properties ||= SearchTestProperties.new(
23
+ resource_type: 'PractitionerRole',
24
+ search_param_names: ['practitioner']
25
+ )
26
+ end
27
+
28
+ def self.metadata
29
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
30
+ end
31
+
32
+ def scratch_resources
33
+ scratch[:practitioner_role_resources] ||= {}
34
+ end
35
+
36
+ run do
37
+ run_search_test
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../../../read_test'
2
+
3
+ module USCoreTestKit
4
+ module USCoreV501
5
+ class PractitionerRoleReadTest < Inferno::Test
6
+ include USCoreTestKit::ReadTest
7
+
8
+ title 'Server returns correct PractitionerRole resource from PractitionerRole read interaction'
9
+ description 'A server SHALL support the PractitionerRole read interaction.'
10
+
11
+ id :us_core_v501_practitioner_role_read_test
12
+
13
+ def resource_type
14
+ 'PractitionerRole'
15
+ end
16
+
17
+ def scratch_resources
18
+ scratch[:practitioner_role_resources] ||= {}
19
+ end
20
+
21
+ run do
22
+ perform_read_test(scratch.dig(:references, 'PractitionerRole'))
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../../../reference_resolution_test'
2
+
3
+ module USCoreTestKit
4
+ module USCoreV501
5
+ class PractitionerRoleReferenceResolutionTest < Inferno::Test
6
+ include USCoreTestKit::ReferenceResolutionTest
7
+
8
+ title 'MustSupport references within PractitionerRole resources are valid'
9
+ description %(
10
+ This test will attempt to read external references provided within elements
11
+ marked as 'MustSupport', if any are available.
12
+
13
+ It verifies that at least one external reference for each MustSupport Reference element
14
+ can be accessed by the test client, and conforms to corresponding US Core profile.
15
+
16
+ Elements which may provide external references include:
17
+
18
+ * PractitionerRole.endpoint
19
+ * PractitionerRole.location
20
+ * PractitionerRole.organization
21
+ * PractitionerRole.practitioner
22
+ )
23
+
24
+ id :us_core_v501_practitioner_role_reference_resolution_test
25
+
26
+ def resource_type
27
+ 'PractitionerRole'
28
+ end
29
+
30
+ def self.metadata
31
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
32
+ end
33
+
34
+ def scratch_resources
35
+ scratch[:practitioner_role_resources] ||= {}
36
+ end
37
+
38
+ run do
39
+ perform_reference_resolution_test(scratch_resources[:all])
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../../../search_test'
2
+ require_relative '../../../generator/group_metadata'
3
+
4
+ module USCoreTestKit
5
+ module USCoreV501
6
+ class PractitionerRoleSpecialtySearchTest < Inferno::Test
7
+ include USCoreTestKit::SearchTest
8
+
9
+ title 'Server returns valid results for PractitionerRole search by specialty'
10
+ description %(
11
+ A server SHALL support searching by
12
+ specialty on the PractitionerRole resource. This test
13
+ will pass if resources are returned and match the search criteria. If
14
+ none are returned, the test is skipped.
15
+
16
+ Because this is the first search of the sequence, resources in the
17
+ response will be used for subsequent tests.
18
+
19
+ Additionally, this test will check that GET and POST search methods
20
+ return the same number of results. Search by POST is required by the
21
+ FHIR R4 specification, and these tests interpret search by GET as a
22
+ requirement of US Core v5.0.1.
23
+
24
+ [US Core Server CapabilityStatement](http://hl7.org/fhir/us/core//CapabilityStatement-us-core-server.html)
25
+
26
+ )
27
+
28
+ id :us_core_v501_practitioner_role_specialty_search_test
29
+ def self.properties
30
+ @properties ||= SearchTestProperties.new(
31
+ first_search: true,
32
+ resource_type: 'PractitionerRole',
33
+ search_param_names: ['specialty'],
34
+ saves_delayed_references: true,
35
+ token_search_params: ['specialty'],
36
+ test_post_search: true
37
+ )
38
+ end
39
+
40
+ def self.metadata
41
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
42
+ end
43
+
44
+ def scratch_resources
45
+ scratch[:practitioner_role_resources] ||= {}
46
+ end
47
+
48
+ run do
49
+ run_search_test
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../../validation_test'
2
+
3
+ module USCoreTestKit
4
+ module USCoreV501
5
+ class PractitionerRoleValidationTest < Inferno::Test
6
+ include USCoreTestKit::ValidationTest
7
+
8
+ id :us_core_v501_practitioner_role_validation_test
9
+ title 'PractitionerRole resources returned during previous tests conform to the US Core PractitionerRole Profile'
10
+ description %(
11
+ This test verifies resources returned from the first search conform to
12
+ the [US Core PractitionerRole Profile](http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole).
13
+ Systems must demonstrate at least one valid example in order to pass this test.
14
+
15
+ It verifies the presence of mandatory elements and that elements with
16
+ required bindings contain appropriate values. CodeableConcept element
17
+ bindings will fail if none of their codings have a code/system belonging
18
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
19
+ fail if their code/system are not found in the valueset.
20
+
21
+ )
22
+ output :dar_code_found, :dar_extension_found
23
+
24
+ def resource_type
25
+ 'PractitionerRole'
26
+ end
27
+
28
+ def scratch_resources
29
+ scratch[:practitioner_role_resources] ||= {}
30
+ end
31
+
32
+ run do
33
+ perform_validation_test(scratch_resources[:all] || [],
34
+ 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole',
35
+ '5.0.1',
36
+ skip_if_empty: true)
37
+ end
38
+ end
39
+ end
40
+ end