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,57 @@
1
+ {
2
+ "Bundle.entry.link": "Bundle.link",
3
+ "CapabilityStatement.rest.operation": "CapabilityStatement.rest.resource.operation",
4
+ "CapabilityStatement.rest.searchParam": "CapabilityStatement.rest.resource.searchParam",
5
+ "ChargeItemDefinition.propertyGroup.applicability": "ChargeItemDefinition.applicability",
6
+ "ClaimResponse.addItem.adjudication": "ClaimResponse.item.adjudication",
7
+ "ClaimResponse.addItem.detail.adjudication": "ClaimResponse.item.adjudication",
8
+ "ClaimResponse.addItem.detail.subDetail.adjudication": "ClaimResponse.item.adjudication",
9
+ "ClaimResponse.adjudication": "ClaimResponse.item.adjudication",
10
+ "ClaimResponse.item.detail.adjudication": "ClaimResponse.item.adjudication",
11
+ "ClaimResponse.item.detail.subDetail.adjudication": "ClaimResponse.item.adjudication",
12
+ "CodeSystem.concept.concept": "CodeSystem.concept",
13
+ "Composition.section.section": "Composition.section",
14
+ "ConceptMap.group.element.target.product": "ConceptMap.group.element.target.dependsOn",
15
+ "Consent.provision.provision": "Consent.provision",
16
+ "Contract.term.asset.answer": "Contract.term.offer.answer",
17
+ "Contract.term.group": "Contract.term",
18
+ "ExampleScenario.process.step.alternative.step": "ExampleScenario.process.step",
19
+ "ExampleScenario.process.step.operation.request": "ExampleScenario.instance.containedInstance",
20
+ "ExampleScenario.process.step.operation.response": "ExampleScenario.instance.containedInstance",
21
+ "ExampleScenario.process.step.process": "ExampleScenario.process",
22
+ "ExplanationOfBenefit.addItem.adjudication": "ExplanationOfBenefit.item.adjudication",
23
+ "ExplanationOfBenefit.addItem.detail.adjudication": "ExplanationOfBenefit.item.adjudication",
24
+ "ExplanationOfBenefit.addItem.detail.subDetail.adjudication": "ExplanationOfBenefit.item.adjudication",
25
+ "ExplanationOfBenefit.adjudication": "ExplanationOfBenefit.item.adjudication",
26
+ "ExplanationOfBenefit.item.detail.adjudication": "ExplanationOfBenefit.item.adjudication",
27
+ "ExplanationOfBenefit.item.detail.subDetail.adjudication": "ExplanationOfBenefit.item.adjudication",
28
+ "GraphDefinition.link.target.link": "GraphDefinition.link",
29
+ "ImplementationGuide.definition.page.page": "ImplementationGuide.definition.page",
30
+ "Invoice.totalPriceComponent": "Invoice.lineItem.priceComponent",
31
+ "MedicinalProductAuthorization.procedure.application": "MedicinalProductAuthorization.procedure",
32
+ "MedicinalProductIngredient.substance.strength": "MedicinalProductIngredient.specifiedSubstance.strength",
33
+ "MedicinalProductPackaged.packageItem.packageItem": "MedicinalProductPackaged.packageItem",
34
+ "Observation.component.referenceRange": "Observation.referenceRange",
35
+ "OperationDefinition.parameter.part": "OperationDefinition.parameter",
36
+ "Parameters.parameter.part": "Parameters.parameter",
37
+ "PlanDefinition.action.action": "PlanDefinition.action",
38
+ "Provenance.entity.agent": "Provenance.agent",
39
+ "Questionnaire.item.item": "Questionnaire.item",
40
+ "QuestionnaireResponse.item.answer.item": "QuestionnaireResponse.item",
41
+ "QuestionnaireResponse.item.item": "QuestionnaireResponse.item",
42
+ "RequestGroup.action.action": "RequestGroup.action",
43
+ "StructureMap.group.rule.rule": "StructureMap.group.rule",
44
+ "SubstanceSpecification.molecularWeight": "SubstanceSpecification.structure.isotope.molecularWeight",
45
+ "SubstanceSpecification.name.synonym": "SubstanceSpecification.name",
46
+ "SubstanceSpecification.name.translation": "SubstanceSpecification.name",
47
+ "SubstanceSpecification.structure.molecularWeight": "SubstanceSpecification.structure.isotope.molecularWeight",
48
+ "TestReport.teardown.action.operation": "TestReport.setup.action.operation",
49
+ "TestReport.test.action.assert": "TestReport.setup.action.assert",
50
+ "TestReport.test.action.operation": "TestReport.setup.action.operation",
51
+ "TestScript.teardown.action.operation": "TestScript.setup.action.operation",
52
+ "TestScript.test.action.assert": "TestScript.setup.action.assert",
53
+ "TestScript.test.action.operation": "TestScript.setup.action.operation",
54
+ "ValueSet.compose.exclude": "ValueSet.compose.include",
55
+ "ValueSet.expansion.contains.contains": "ValueSet.expansion.contains",
56
+ "ValueSet.expansion.contains.designation": "ValueSet.compose.include.concept.designation"
57
+ }
@@ -0,0 +1,211 @@
1
+ {
2
+ "Account": "DomainResource",
3
+ "ActivityDefinition": "DomainResource",
4
+ "Address": "Element",
5
+ "AdverseEvent": "DomainResource",
6
+ "Age": "Quantity",
7
+ "AllergyIntolerance": "DomainResource",
8
+ "Annotation": "Element",
9
+ "Appointment": "DomainResource",
10
+ "AppointmentResponse": "DomainResource",
11
+ "Attachment": "Element",
12
+ "AuditEvent": "DomainResource",
13
+ "BackboneElement": "Element",
14
+ "Basic": "DomainResource",
15
+ "Binary": "Resource",
16
+ "BiologicallyDerivedProduct": "DomainResource",
17
+ "BodyStructure": "DomainResource",
18
+ "Bundle": "Resource",
19
+ "CapabilityStatement": "DomainResource",
20
+ "CarePlan": "DomainResource",
21
+ "CareTeam": "DomainResource",
22
+ "CatalogEntry": "DomainResource",
23
+ "ChargeItem": "DomainResource",
24
+ "ChargeItemDefinition": "DomainResource",
25
+ "Claim": "DomainResource",
26
+ "ClaimResponse": "DomainResource",
27
+ "ClinicalImpression": "DomainResource",
28
+ "CodeSystem": "DomainResource",
29
+ "CodeableConcept": "Element",
30
+ "Coding": "Element",
31
+ "Communication": "DomainResource",
32
+ "CommunicationRequest": "DomainResource",
33
+ "CompartmentDefinition": "DomainResource",
34
+ "Composition": "DomainResource",
35
+ "ConceptMap": "DomainResource",
36
+ "Condition": "DomainResource",
37
+ "Consent": "DomainResource",
38
+ "ContactDetail": "Element",
39
+ "ContactPoint": "Element",
40
+ "Contract": "DomainResource",
41
+ "Contributor": "Element",
42
+ "Count": "Quantity",
43
+ "Coverage": "DomainResource",
44
+ "CoverageEligibilityRequest": "DomainResource",
45
+ "CoverageEligibilityResponse": "DomainResource",
46
+ "DataRequirement": "Element",
47
+ "DetectedIssue": "DomainResource",
48
+ "Device": "DomainResource",
49
+ "DeviceDefinition": "DomainResource",
50
+ "DeviceMetric": "DomainResource",
51
+ "DeviceRequest": "DomainResource",
52
+ "DeviceUseStatement": "DomainResource",
53
+ "DiagnosticReport": "DomainResource",
54
+ "Distance": "Quantity",
55
+ "DocumentManifest": "DomainResource",
56
+ "DocumentReference": "DomainResource",
57
+ "DomainResource": "Resource",
58
+ "Dosage": "BackboneElement",
59
+ "Duration": "Quantity",
60
+ "EffectEvidenceSynthesis": "DomainResource",
61
+ "ElementDefinition": "BackboneElement",
62
+ "Encounter": "DomainResource",
63
+ "Endpoint": "DomainResource",
64
+ "EnrollmentRequest": "DomainResource",
65
+ "EnrollmentResponse": "DomainResource",
66
+ "EpisodeOfCare": "DomainResource",
67
+ "EventDefinition": "DomainResource",
68
+ "Evidence": "DomainResource",
69
+ "EvidenceVariable": "DomainResource",
70
+ "ExampleScenario": "DomainResource",
71
+ "ExplanationOfBenefit": "DomainResource",
72
+ "Expression": "Element",
73
+ "Extension": "Element",
74
+ "FamilyMemberHistory": "DomainResource",
75
+ "Flag": "DomainResource",
76
+ "Goal": "DomainResource",
77
+ "GraphDefinition": "DomainResource",
78
+ "Group": "DomainResource",
79
+ "GuidanceResponse": "DomainResource",
80
+ "HealthcareService": "DomainResource",
81
+ "HumanName": "Element",
82
+ "Identifier": "Element",
83
+ "ImagingStudy": "DomainResource",
84
+ "Immunization": "DomainResource",
85
+ "ImmunizationEvaluation": "DomainResource",
86
+ "ImmunizationRecommendation": "DomainResource",
87
+ "ImplementationGuide": "DomainResource",
88
+ "InsurancePlan": "DomainResource",
89
+ "Invoice": "DomainResource",
90
+ "Library": "DomainResource",
91
+ "Linkage": "DomainResource",
92
+ "List": "DomainResource",
93
+ "Location": "DomainResource",
94
+ "MarketingStatus": "BackboneElement",
95
+ "Measure": "DomainResource",
96
+ "MeasureReport": "DomainResource",
97
+ "Media": "DomainResource",
98
+ "Medication": "DomainResource",
99
+ "MedicationAdministration": "DomainResource",
100
+ "MedicationDispense": "DomainResource",
101
+ "MedicationKnowledge": "DomainResource",
102
+ "MedicationRequest": "DomainResource",
103
+ "MedicationStatement": "DomainResource",
104
+ "MedicinalProduct": "DomainResource",
105
+ "MedicinalProductAuthorization": "DomainResource",
106
+ "MedicinalProductContraindication": "DomainResource",
107
+ "MedicinalProductIndication": "DomainResource",
108
+ "MedicinalProductIngredient": "DomainResource",
109
+ "MedicinalProductInteraction": "DomainResource",
110
+ "MedicinalProductManufactured": "DomainResource",
111
+ "MedicinalProductPackaged": "DomainResource",
112
+ "MedicinalProductPharmaceutical": "DomainResource",
113
+ "MedicinalProductUndesirableEffect": "DomainResource",
114
+ "MessageDefinition": "DomainResource",
115
+ "MessageHeader": "DomainResource",
116
+ "Meta": "Element",
117
+ "MolecularSequence": "DomainResource",
118
+ "Money": "Element",
119
+ "MoneyQuantity": "Quantity",
120
+ "NamingSystem": "DomainResource",
121
+ "Narrative": "Element",
122
+ "NutritionOrder": "DomainResource",
123
+ "Observation": "DomainResource",
124
+ "ObservationDefinition": "DomainResource",
125
+ "OperationDefinition": "DomainResource",
126
+ "OperationOutcome": "DomainResource",
127
+ "Organization": "DomainResource",
128
+ "OrganizationAffiliation": "DomainResource",
129
+ "ParameterDefinition": "Element",
130
+ "Parameters": "Resource",
131
+ "Patient": "DomainResource",
132
+ "PaymentNotice": "DomainResource",
133
+ "PaymentReconciliation": "DomainResource",
134
+ "Period": "Element",
135
+ "Person": "DomainResource",
136
+ "PlanDefinition": "DomainResource",
137
+ "Population": "BackboneElement",
138
+ "Practitioner": "DomainResource",
139
+ "PractitionerRole": "DomainResource",
140
+ "Procedure": "DomainResource",
141
+ "ProdCharacteristic": "BackboneElement",
142
+ "ProductShelfLife": "BackboneElement",
143
+ "Provenance": "DomainResource",
144
+ "Quantity": "Element",
145
+ "Questionnaire": "DomainResource",
146
+ "QuestionnaireResponse": "DomainResource",
147
+ "Range": "Element",
148
+ "Ratio": "Element",
149
+ "Reference": "Element",
150
+ "RelatedArtifact": "Element",
151
+ "RelatedPerson": "DomainResource",
152
+ "RequestGroup": "DomainResource",
153
+ "ResearchDefinition": "DomainResource",
154
+ "ResearchElementDefinition": "DomainResource",
155
+ "ResearchStudy": "DomainResource",
156
+ "ResearchSubject": "DomainResource",
157
+ "RiskAssessment": "DomainResource",
158
+ "RiskEvidenceSynthesis": "DomainResource",
159
+ "SampledData": "Element",
160
+ "Schedule": "DomainResource",
161
+ "SearchParameter": "DomainResource",
162
+ "ServiceRequest": "DomainResource",
163
+ "Signature": "Element",
164
+ "SimpleQuantity": "Quantity",
165
+ "Slot": "DomainResource",
166
+ "Specimen": "DomainResource",
167
+ "SpecimenDefinition": "DomainResource",
168
+ "StructureDefinition": "DomainResource",
169
+ "StructureMap": "DomainResource",
170
+ "Subscription": "DomainResource",
171
+ "Substance": "DomainResource",
172
+ "SubstanceAmount": "BackboneElement",
173
+ "SubstanceNucleicAcid": "DomainResource",
174
+ "SubstancePolymer": "DomainResource",
175
+ "SubstanceProtein": "DomainResource",
176
+ "SubstanceReferenceInformation": "DomainResource",
177
+ "SubstanceSourceMaterial": "DomainResource",
178
+ "SubstanceSpecification": "DomainResource",
179
+ "SupplyDelivery": "DomainResource",
180
+ "SupplyRequest": "DomainResource",
181
+ "Task": "DomainResource",
182
+ "TerminologyCapabilities": "DomainResource",
183
+ "TestReport": "DomainResource",
184
+ "TestScript": "DomainResource",
185
+ "Timing": "BackboneElement",
186
+ "TriggerDefinition": "Element",
187
+ "UsageContext": "Element",
188
+ "ValueSet": "DomainResource",
189
+ "VerificationResult": "DomainResource",
190
+ "VisionPrescription": "DomainResource",
191
+ "base64Binary": "Element",
192
+ "boolean": "Element",
193
+ "canonical": "uri",
194
+ "code": "string",
195
+ "date": "Element",
196
+ "dateTime": "Element",
197
+ "decimal": "Element",
198
+ "id": "string",
199
+ "instant": "Element",
200
+ "integer": "Element",
201
+ "markdown": "string",
202
+ "oid": "uri",
203
+ "positiveInt": "integer",
204
+ "string": "Element",
205
+ "time": "Element",
206
+ "unsignedInt": "integer",
207
+ "uri": "Element",
208
+ "url": "uri",
209
+ "uuid": "uri",
210
+ "xhtml": "Element"
211
+ }