fhirpath-rb 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +25 -0
  4. data/CLAUDE.md +59 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +43 -0
  7. data/Rakefile +12 -0
  8. data/ext/fhir_path_parser/extconf.rb +40 -0
  9. data/lib/fhirpath/engine/evaluators/expressions.rb +59 -0
  10. data/lib/fhirpath/engine/evaluators/literals.rb +70 -0
  11. data/lib/fhirpath/engine/evaluators/member_invocation.rb +109 -0
  12. data/lib/fhirpath/engine/evaluators.rb +130 -0
  13. data/lib/fhirpath/engine/invocations/aggregate.rb +48 -0
  14. data/lib/fhirpath/engine/invocations/collections.rb +32 -0
  15. data/lib/fhirpath/engine/invocations/combining.rb +30 -0
  16. data/lib/fhirpath/engine/invocations/datetime.rb +34 -0
  17. data/lib/fhirpath/engine/invocations/equality.rb +95 -0
  18. data/lib/fhirpath/engine/invocations/equivalence.rb +138 -0
  19. data/lib/fhirpath/engine/invocations/existence.rb +117 -0
  20. data/lib/fhirpath/engine/invocations/filtering.rb +107 -0
  21. data/lib/fhirpath/engine/invocations/inequality.rb +92 -0
  22. data/lib/fhirpath/engine/invocations/logic.rb +74 -0
  23. data/lib/fhirpath/engine/invocations/math.rb +109 -0
  24. data/lib/fhirpath/engine/invocations/math_functions.rb +121 -0
  25. data/lib/fhirpath/engine/invocations/misc.rb +144 -0
  26. data/lib/fhirpath/engine/invocations/misc_converts_to.rb +91 -0
  27. data/lib/fhirpath/engine/invocations/navigation.rb +102 -0
  28. data/lib/fhirpath/engine/invocations/registry_strings_and_math.rb +48 -0
  29. data/lib/fhirpath/engine/invocations/strings.rb +139 -0
  30. data/lib/fhirpath/engine/invocations/strings_encoding.rb +68 -0
  31. data/lib/fhirpath/engine/invocations/subsetting.rb +15 -0
  32. data/lib/fhirpath/engine/invocations/types.rb +36 -0
  33. data/lib/fhirpath/engine/invocations.rb +118 -0
  34. data/lib/fhirpath/engine/nodes/fp_date_time.rb +140 -0
  35. data/lib/fhirpath/engine/nodes/fp_date_time_arithmetic.rb +112 -0
  36. data/lib/fhirpath/engine/nodes/fp_quantity.rb +142 -0
  37. data/lib/fhirpath/engine/nodes/fp_quantity_deep_equal.rb +67 -0
  38. data/lib/fhirpath/engine/nodes/fp_time.rb +139 -0
  39. data/lib/fhirpath/engine/nodes/fp_time_arithmetic.rb +111 -0
  40. data/lib/fhirpath/engine/nodes/resource_node.rb +66 -0
  41. data/lib/fhirpath/engine/nodes/type_info.rb +92 -0
  42. data/lib/fhirpath/engine/param_resolution.rb +74 -0
  43. data/lib/fhirpath/engine/util.rb +117 -0
  44. data/lib/fhirpath/engine.rb +100 -0
  45. data/lib/fhirpath/models/dstu2/choiceTypePaths.json +1041 -0
  46. data/lib/fhirpath/models/dstu2/path2Type.json +4728 -0
  47. data/lib/fhirpath/models/dstu2/pathsDefinedElsewhere.json +21 -0
  48. data/lib/fhirpath/models/dstu2/type2Parent.json +141 -0
  49. data/lib/fhirpath/models/r4/choiceTypePaths.json +1365 -0
  50. data/lib/fhirpath/models/r4/path2Type.json +7707 -0
  51. data/lib/fhirpath/models/r4/pathsDefinedElsewhere.json +57 -0
  52. data/lib/fhirpath/models/r4/type2Parent.json +211 -0
  53. data/lib/fhirpath/models/r5/choiceTypePaths.json +1883 -0
  54. data/lib/fhirpath/models/r5/path2Type.json +9653 -0
  55. data/lib/fhirpath/models/r5/pathsDefinedElsewhere.json +80 -0
  56. data/lib/fhirpath/models/r5/type2Parent.json +234 -0
  57. data/lib/fhirpath/models/stu3/choiceTypePaths.json +991 -0
  58. data/lib/fhirpath/models/stu3/path2Type.json +5729 -0
  59. data/lib/fhirpath/models/stu3/pathsDefinedElsewhere.json +37 -0
  60. data/lib/fhirpath/models/stu3/type2Parent.json +173 -0
  61. data/lib/fhirpath/models.rb +25 -0
  62. data/lib/fhirpath/parser/FHIRPath.g4 +172 -0
  63. data/lib/fhirpath/parser/ast_builder.rb +51 -0
  64. data/lib/fhirpath/parser.rb +21 -0
  65. data/lib/fhirpath/version.rb +5 -0
  66. data/lib/fhirpath.rb +117 -0
  67. data/rakelib/parser.rake +146 -0
  68. data/sig/fhirpath.rbs +14 -0
  69. metadata +168 -0
@@ -0,0 +1,80 @@
1
+ {
2
+ "ArtifactAssessment.content.component": "ArtifactAssessment.content",
3
+ "AuditEvent.entity.agent": "AuditEvent.agent",
4
+ "BodyStructure.excludedStructure": "BodyStructure.includedStructure",
5
+ "Bundle.entry.link": "Bundle.link",
6
+ "CapabilityStatement.rest.operation": "CapabilityStatement.rest.resource.operation",
7
+ "CapabilityStatement.rest.searchParam": "CapabilityStatement.rest.resource.searchParam",
8
+ "ChargeItemDefinition.propertyGroup.applicability": "ChargeItemDefinition.applicability",
9
+ "ClaimResponse.addItem.adjudication": "ClaimResponse.item.adjudication",
10
+ "ClaimResponse.addItem.detail.adjudication": "ClaimResponse.item.adjudication",
11
+ "ClaimResponse.addItem.detail.reviewOutcome": "ClaimResponse.item.reviewOutcome",
12
+ "ClaimResponse.addItem.detail.subDetail.adjudication": "ClaimResponse.item.adjudication",
13
+ "ClaimResponse.addItem.detail.subDetail.reviewOutcome": "ClaimResponse.item.reviewOutcome",
14
+ "ClaimResponse.addItem.reviewOutcome": "ClaimResponse.item.reviewOutcome",
15
+ "ClaimResponse.adjudication": "ClaimResponse.item.adjudication",
16
+ "ClaimResponse.item.detail.adjudication": "ClaimResponse.item.adjudication",
17
+ "ClaimResponse.item.detail.reviewOutcome": "ClaimResponse.item.reviewOutcome",
18
+ "ClaimResponse.item.detail.subDetail.adjudication": "ClaimResponse.item.adjudication",
19
+ "ClaimResponse.item.detail.subDetail.reviewOutcome": "ClaimResponse.item.reviewOutcome",
20
+ "ClinicalUseDefinition.indication.otherTherapy": "ClinicalUseDefinition.contraindication.otherTherapy",
21
+ "CodeSystem.concept.concept": "CodeSystem.concept",
22
+ "Composition.section.section": "Composition.section",
23
+ "ConceptMap.group.element.target.product": "ConceptMap.group.element.target.dependsOn",
24
+ "Consent.provision.provision": "Consent.provision",
25
+ "Contract.term.asset.answer": "Contract.term.offer.answer",
26
+ "Contract.term.group": "Contract.term",
27
+ "DeviceDefinition.packaging.packaging": "DeviceDefinition.packaging",
28
+ "DeviceDefinition.packaging.udiDeviceIdentifier": "DeviceDefinition.udiDeviceIdentifier",
29
+ "Evidence.certainty.subcomponent": "Evidence.certainty",
30
+ "Evidence.statistic.attributeEstimate.attributeEstimate": "Evidence.statistic.attributeEstimate",
31
+ "Evidence.statistic.modelCharacteristic.attributeEstimate": "Evidence.statistic.attributeEstimate",
32
+ "EvidenceReport.section.section": "EvidenceReport.section",
33
+ "EvidenceVariable.characteristic.definitionByCombination.characteristic": "EvidenceVariable.characteristic",
34
+ "ExampleScenario.process.step.alternative.step": "ExampleScenario.process.step",
35
+ "ExampleScenario.process.step.operation.request": "ExampleScenario.instance.containedInstance",
36
+ "ExampleScenario.process.step.operation.response": "ExampleScenario.instance.containedInstance",
37
+ "ExampleScenario.process.step.process": "ExampleScenario.process",
38
+ "ExplanationOfBenefit.addItem.adjudication": "ExplanationOfBenefit.item.adjudication",
39
+ "ExplanationOfBenefit.addItem.detail.adjudication": "ExplanationOfBenefit.item.adjudication",
40
+ "ExplanationOfBenefit.addItem.detail.reviewOutcome": "ExplanationOfBenefit.item.reviewOutcome",
41
+ "ExplanationOfBenefit.addItem.detail.subDetail.adjudication": "ExplanationOfBenefit.item.adjudication",
42
+ "ExplanationOfBenefit.addItem.detail.subDetail.reviewOutcome": "ExplanationOfBenefit.item.reviewOutcome",
43
+ "ExplanationOfBenefit.addItem.reviewOutcome": "ExplanationOfBenefit.item.reviewOutcome",
44
+ "ExplanationOfBenefit.adjudication": "ExplanationOfBenefit.item.adjudication",
45
+ "ExplanationOfBenefit.item.detail.adjudication": "ExplanationOfBenefit.item.adjudication",
46
+ "ExplanationOfBenefit.item.detail.reviewOutcome": "ExplanationOfBenefit.item.reviewOutcome",
47
+ "ExplanationOfBenefit.item.detail.subDetail.adjudication": "ExplanationOfBenefit.item.adjudication",
48
+ "ExplanationOfBenefit.item.detail.subDetail.reviewOutcome": "ExplanationOfBenefit.item.reviewOutcome",
49
+ "ImplementationGuide.definition.page.page": "ImplementationGuide.definition.page",
50
+ "ManufacturedItemDefinition.component.component": "ManufacturedItemDefinition.component",
51
+ "ManufacturedItemDefinition.component.property": "ManufacturedItemDefinition.property",
52
+ "MedicationKnowledge.packaging.cost": "MedicationKnowledge.cost",
53
+ "Observation.component.referenceRange": "Observation.referenceRange",
54
+ "ObservationDefinition.component.qualifiedValue": "ObservationDefinition.qualifiedValue",
55
+ "OperationDefinition.parameter.part": "OperationDefinition.parameter",
56
+ "PackagedProductDefinition.characteristic": "PackagedProductDefinition.packaging.property",
57
+ "PackagedProductDefinition.packaging.packaging": "PackagedProductDefinition.packaging",
58
+ "Parameters.parameter.part": "Parameters.parameter",
59
+ "PlanDefinition.action.action": "PlanDefinition.action",
60
+ "Provenance.entity.agent": "Provenance.agent",
61
+ "Questionnaire.item.item": "Questionnaire.item",
62
+ "QuestionnaireResponse.item.answer.item": "QuestionnaireResponse.item",
63
+ "QuestionnaireResponse.item.item": "QuestionnaireResponse.item",
64
+ "RegulatedAuthorization.case.application": "RegulatedAuthorization.case",
65
+ "RequestOrchestration.action.action": "RequestOrchestration.action",
66
+ "StructureMap.group.rule.dependent.parameter": "StructureMap.group.rule.target.parameter",
67
+ "StructureMap.group.rule.rule": "StructureMap.group.rule",
68
+ "SubstanceDefinition.name.synonym": "SubstanceDefinition.name",
69
+ "SubstanceDefinition.name.translation": "SubstanceDefinition.name",
70
+ "SubstanceDefinition.structure.molecularWeight": "SubstanceDefinition.molecularWeight",
71
+ "TestReport.teardown.action.operation": "TestReport.setup.action.operation",
72
+ "TestReport.test.action.assert": "TestReport.setup.action.assert",
73
+ "TestReport.test.action.operation": "TestReport.setup.action.operation",
74
+ "TestScript.teardown.action.operation": "TestScript.setup.action.operation",
75
+ "TestScript.test.action.assert": "TestScript.setup.action.assert",
76
+ "TestScript.test.action.operation": "TestScript.setup.action.operation",
77
+ "ValueSet.compose.exclude": "ValueSet.compose.include",
78
+ "ValueSet.expansion.contains.contains": "ValueSet.expansion.contains",
79
+ "ValueSet.expansion.contains.designation": "ValueSet.compose.include.concept.designation"
80
+ }
@@ -0,0 +1,234 @@
1
+ {
2
+ "Account": "DomainResource",
3
+ "ActivityDefinition": "DomainResource",
4
+ "ActorDefinition": "DomainResource",
5
+ "Address": "DataType",
6
+ "AdministrableProductDefinition": "DomainResource",
7
+ "AdverseEvent": "DomainResource",
8
+ "Age": "Quantity",
9
+ "AllergyIntolerance": "DomainResource",
10
+ "Annotation": "DataType",
11
+ "Appointment": "DomainResource",
12
+ "AppointmentResponse": "DomainResource",
13
+ "ArtifactAssessment": "DomainResource",
14
+ "Attachment": "DataType",
15
+ "AuditEvent": "DomainResource",
16
+ "Availability": "DataType",
17
+ "BackboneElement": "Element",
18
+ "BackboneType": "DataType",
19
+ "Basic": "DomainResource",
20
+ "Binary": "Resource",
21
+ "BiologicallyDerivedProduct": "DomainResource",
22
+ "BiologicallyDerivedProductDispense": "DomainResource",
23
+ "BodyStructure": "DomainResource",
24
+ "Bundle": "Resource",
25
+ "CanonicalResource": "DomainResource",
26
+ "CapabilityStatement": "DomainResource",
27
+ "CarePlan": "DomainResource",
28
+ "CareTeam": "DomainResource",
29
+ "ChargeItem": "DomainResource",
30
+ "ChargeItemDefinition": "DomainResource",
31
+ "Citation": "DomainResource",
32
+ "Claim": "DomainResource",
33
+ "ClaimResponse": "DomainResource",
34
+ "ClinicalImpression": "DomainResource",
35
+ "ClinicalUseDefinition": "DomainResource",
36
+ "CodeSystem": "DomainResource",
37
+ "CodeableConcept": "DataType",
38
+ "CodeableReference": "DataType",
39
+ "Coding": "DataType",
40
+ "Communication": "DomainResource",
41
+ "CommunicationRequest": "DomainResource",
42
+ "CompartmentDefinition": "DomainResource",
43
+ "Composition": "DomainResource",
44
+ "ConceptMap": "DomainResource",
45
+ "Condition": "DomainResource",
46
+ "ConditionDefinition": "DomainResource",
47
+ "Consent": "DomainResource",
48
+ "ContactDetail": "DataType",
49
+ "ContactPoint": "DataType",
50
+ "Contract": "DomainResource",
51
+ "Contributor": "DataType",
52
+ "Count": "Quantity",
53
+ "Coverage": "DomainResource",
54
+ "CoverageEligibilityRequest": "DomainResource",
55
+ "CoverageEligibilityResponse": "DomainResource",
56
+ "DataRequirement": "DataType",
57
+ "DataType": "Element",
58
+ "DetectedIssue": "DomainResource",
59
+ "Device": "DomainResource",
60
+ "DeviceAssociation": "DomainResource",
61
+ "DeviceDefinition": "DomainResource",
62
+ "DeviceDispense": "DomainResource",
63
+ "DeviceMetric": "DomainResource",
64
+ "DeviceRequest": "DomainResource",
65
+ "DeviceUsage": "DomainResource",
66
+ "DiagnosticReport": "DomainResource",
67
+ "Distance": "Quantity",
68
+ "DocumentReference": "DomainResource",
69
+ "DomainResource": "Resource",
70
+ "Dosage": "BackboneType",
71
+ "Duration": "Quantity",
72
+ "Element": "Base",
73
+ "ElementDefinition": "BackboneType",
74
+ "Encounter": "DomainResource",
75
+ "EncounterHistory": "DomainResource",
76
+ "Endpoint": "DomainResource",
77
+ "EnrollmentRequest": "DomainResource",
78
+ "EnrollmentResponse": "DomainResource",
79
+ "EpisodeOfCare": "DomainResource",
80
+ "EventDefinition": "DomainResource",
81
+ "Evidence": "DomainResource",
82
+ "EvidenceReport": "DomainResource",
83
+ "EvidenceVariable": "DomainResource",
84
+ "ExampleScenario": "DomainResource",
85
+ "ExplanationOfBenefit": "DomainResource",
86
+ "Expression": "DataType",
87
+ "ExtendedContactDetail": "DataType",
88
+ "Extension": "DataType",
89
+ "FamilyMemberHistory": "DomainResource",
90
+ "Flag": "DomainResource",
91
+ "FormularyItem": "DomainResource",
92
+ "GenomicStudy": "DomainResource",
93
+ "Goal": "DomainResource",
94
+ "GraphDefinition": "DomainResource",
95
+ "Group": "DomainResource",
96
+ "GuidanceResponse": "DomainResource",
97
+ "HealthcareService": "DomainResource",
98
+ "HumanName": "DataType",
99
+ "Identifier": "DataType",
100
+ "ImagingSelection": "DomainResource",
101
+ "ImagingStudy": "DomainResource",
102
+ "Immunization": "DomainResource",
103
+ "ImmunizationEvaluation": "DomainResource",
104
+ "ImmunizationRecommendation": "DomainResource",
105
+ "ImplementationGuide": "DomainResource",
106
+ "Ingredient": "DomainResource",
107
+ "InsurancePlan": "DomainResource",
108
+ "InventoryItem": "DomainResource",
109
+ "InventoryReport": "DomainResource",
110
+ "Invoice": "DomainResource",
111
+ "Library": "DomainResource",
112
+ "Linkage": "DomainResource",
113
+ "List": "DomainResource",
114
+ "Location": "DomainResource",
115
+ "ManufacturedItemDefinition": "DomainResource",
116
+ "MarketingStatus": "BackboneType",
117
+ "Measure": "DomainResource",
118
+ "MeasureReport": "DomainResource",
119
+ "Medication": "DomainResource",
120
+ "MedicationAdministration": "DomainResource",
121
+ "MedicationDispense": "DomainResource",
122
+ "MedicationKnowledge": "DomainResource",
123
+ "MedicationRequest": "DomainResource",
124
+ "MedicationStatement": "DomainResource",
125
+ "MedicinalProductDefinition": "DomainResource",
126
+ "MessageDefinition": "DomainResource",
127
+ "MessageHeader": "DomainResource",
128
+ "Meta": "DataType",
129
+ "MetadataResource": "DomainResource",
130
+ "MolecularSequence": "DomainResource",
131
+ "MonetaryComponent": "DataType",
132
+ "Money": "DataType",
133
+ "MoneyQuantity": "Quantity",
134
+ "NamingSystem": "DomainResource",
135
+ "Narrative": "DataType",
136
+ "NutritionIntake": "DomainResource",
137
+ "NutritionOrder": "DomainResource",
138
+ "NutritionProduct": "DomainResource",
139
+ "Observation": "DomainResource",
140
+ "ObservationDefinition": "DomainResource",
141
+ "OperationDefinition": "DomainResource",
142
+ "OperationOutcome": "DomainResource",
143
+ "Organization": "DomainResource",
144
+ "OrganizationAffiliation": "DomainResource",
145
+ "PackagedProductDefinition": "DomainResource",
146
+ "ParameterDefinition": "DataType",
147
+ "Parameters": "Resource",
148
+ "Patient": "DomainResource",
149
+ "PaymentNotice": "DomainResource",
150
+ "PaymentReconciliation": "DomainResource",
151
+ "Period": "DataType",
152
+ "Permission": "DomainResource",
153
+ "Person": "DomainResource",
154
+ "PlanDefinition": "DomainResource",
155
+ "Practitioner": "DomainResource",
156
+ "PractitionerRole": "DomainResource",
157
+ "PrimitiveType": "DataType",
158
+ "Procedure": "DomainResource",
159
+ "ProductShelfLife": "BackboneType",
160
+ "Provenance": "DomainResource",
161
+ "Quantity": "DataType",
162
+ "Questionnaire": "DomainResource",
163
+ "QuestionnaireResponse": "DomainResource",
164
+ "Range": "DataType",
165
+ "Ratio": "DataType",
166
+ "RatioRange": "DataType",
167
+ "Reference": "DataType",
168
+ "RegulatedAuthorization": "DomainResource",
169
+ "RelatedArtifact": "DataType",
170
+ "RelatedPerson": "DomainResource",
171
+ "RequestOrchestration": "DomainResource",
172
+ "Requirements": "DomainResource",
173
+ "ResearchStudy": "DomainResource",
174
+ "ResearchSubject": "DomainResource",
175
+ "Resource": "Base",
176
+ "RiskAssessment": "DomainResource",
177
+ "SampledData": "DataType",
178
+ "Schedule": "DomainResource",
179
+ "SearchParameter": "DomainResource",
180
+ "ServiceRequest": "DomainResource",
181
+ "Signature": "DataType",
182
+ "SimpleQuantity": "Quantity",
183
+ "Slot": "DomainResource",
184
+ "Specimen": "DomainResource",
185
+ "SpecimenDefinition": "DomainResource",
186
+ "StructureDefinition": "DomainResource",
187
+ "StructureMap": "DomainResource",
188
+ "Subscription": "DomainResource",
189
+ "SubscriptionStatus": "DomainResource",
190
+ "SubscriptionTopic": "DomainResource",
191
+ "Substance": "DomainResource",
192
+ "SubstanceDefinition": "DomainResource",
193
+ "SubstanceNucleicAcid": "DomainResource",
194
+ "SubstancePolymer": "DomainResource",
195
+ "SubstanceProtein": "DomainResource",
196
+ "SubstanceReferenceInformation": "DomainResource",
197
+ "SubstanceSourceMaterial": "DomainResource",
198
+ "SupplyDelivery": "DomainResource",
199
+ "SupplyRequest": "DomainResource",
200
+ "Task": "DomainResource",
201
+ "TerminologyCapabilities": "DomainResource",
202
+ "TestPlan": "DomainResource",
203
+ "TestReport": "DomainResource",
204
+ "TestScript": "DomainResource",
205
+ "Timing": "BackboneType",
206
+ "Transport": "DomainResource",
207
+ "TriggerDefinition": "DataType",
208
+ "UsageContext": "DataType",
209
+ "ValueSet": "DomainResource",
210
+ "VerificationResult": "DomainResource",
211
+ "VirtualServiceDetail": "DataType",
212
+ "VisionPrescription": "DomainResource",
213
+ "base64Binary": "PrimitiveType",
214
+ "boolean": "PrimitiveType",
215
+ "canonical": "uri",
216
+ "code": "string",
217
+ "date": "PrimitiveType",
218
+ "dateTime": "PrimitiveType",
219
+ "decimal": "PrimitiveType",
220
+ "id": "string",
221
+ "instant": "PrimitiveType",
222
+ "integer": "PrimitiveType",
223
+ "integer64": "PrimitiveType",
224
+ "markdown": "string",
225
+ "oid": "uri",
226
+ "positiveInt": "integer",
227
+ "string": "PrimitiveType",
228
+ "time": "PrimitiveType",
229
+ "unsignedInt": "integer",
230
+ "uri": "PrimitiveType",
231
+ "url": "uri",
232
+ "uuid": "uri",
233
+ "xhtml": "Element"
234
+ }