@medplum/core 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/README.md +29 -25
  2. package/dist/cache.d.ts +1 -0
  3. package/dist/cache.js +3 -0
  4. package/dist/cache.js.map +1 -1
  5. package/dist/client.d.ts +66 -54
  6. package/dist/client.js +153 -122
  7. package/dist/client.js.map +1 -1
  8. package/dist/eventtarget.js +1 -1
  9. package/dist/eventtarget.js.map +1 -1
  10. package/dist/format.d.ts +1 -1
  11. package/dist/format.js.map +1 -1
  12. package/dist/index.d.ts +0 -2
  13. package/dist/index.js +0 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/jwt.js.map +1 -1
  16. package/dist/outcomes.d.ts +1 -1
  17. package/dist/outcomes.js +42 -28
  18. package/dist/outcomes.js.map +1 -1
  19. package/dist/search.js +4 -4
  20. package/dist/search.js.map +1 -1
  21. package/dist/searchparams.d.ts +1 -1
  22. package/dist/searchparams.js +1 -2
  23. package/dist/searchparams.js.map +1 -1
  24. package/dist/storage.js.map +1 -1
  25. package/dist/types.d.ts +1 -1
  26. package/dist/types.js +6 -6
  27. package/dist/types.js.map +1 -1
  28. package/dist/utils.d.ts +1 -1
  29. package/dist/utils.js +11 -6
  30. package/dist/utils.js.map +1 -1
  31. package/package.json +5 -6
  32. package/dist/fhir/AccessPolicy.d.ts +0 -75
  33. package/dist/fhir/AccessPolicy.js +0 -7
  34. package/dist/fhir/AccessPolicy.js.map +0 -1
  35. package/dist/fhir/Account.d.ts +0 -247
  36. package/dist/fhir/Account.js +0 -7
  37. package/dist/fhir/Account.js.map +0 -1
  38. package/dist/fhir/ActivityDefinition.d.ts +0 -500
  39. package/dist/fhir/ActivityDefinition.js +0 -7
  40. package/dist/fhir/ActivityDefinition.js.map +0 -1
  41. package/dist/fhir/Address.d.ts +0 -75
  42. package/dist/fhir/Address.js +0 -7
  43. package/dist/fhir/Address.js.map +0 -1
  44. package/dist/fhir/AdverseEvent.d.ts +0 -303
  45. package/dist/fhir/AdverseEvent.js +0 -7
  46. package/dist/fhir/AdverseEvent.js.map +0 -1
  47. package/dist/fhir/Age.d.ts +0 -47
  48. package/dist/fhir/Age.js +0 -7
  49. package/dist/fhir/Age.js.map +0 -1
  50. package/dist/fhir/AllergyIntolerance.d.ts +0 -283
  51. package/dist/fhir/AllergyIntolerance.js +0 -7
  52. package/dist/fhir/AllergyIntolerance.js.map +0 -1
  53. package/dist/fhir/Annotation.d.ts +0 -42
  54. package/dist/fhir/Annotation.js +0 -7
  55. package/dist/fhir/Annotation.js.map +0 -1
  56. package/dist/fhir/Appointment.d.ts +0 -284
  57. package/dist/fhir/Appointment.js +0 -7
  58. package/dist/fhir/Appointment.js.map +0 -1
  59. package/dist/fhir/AppointmentResponse.d.ts +0 -131
  60. package/dist/fhir/AppointmentResponse.js +0 -7
  61. package/dist/fhir/AppointmentResponse.js.map +0 -1
  62. package/dist/fhir/Attachment.d.ts +0 -58
  63. package/dist/fhir/Attachment.js +0 -7
  64. package/dist/fhir/Attachment.js.map +0 -1
  65. package/dist/fhir/AuditEvent.d.ts +0 -458
  66. package/dist/fhir/AuditEvent.js +0 -7
  67. package/dist/fhir/AuditEvent.js.map +0 -1
  68. package/dist/fhir/Basic.d.ts +0 -110
  69. package/dist/fhir/Basic.js +0 -7
  70. package/dist/fhir/Basic.js.map +0 -1
  71. package/dist/fhir/Binary.d.ts +0 -59
  72. package/dist/fhir/Binary.js +0 -7
  73. package/dist/fhir/Binary.js.map +0 -1
  74. package/dist/fhir/BiologicallyDerivedProduct.d.ts +0 -358
  75. package/dist/fhir/BiologicallyDerivedProduct.js +0 -7
  76. package/dist/fhir/BiologicallyDerivedProduct.js.map +0 -1
  77. package/dist/fhir/BodyStructure.d.ts +0 -119
  78. package/dist/fhir/BodyStructure.js +0 -7
  79. package/dist/fhir/BodyStructure.js.map +0 -1
  80. package/dist/fhir/Bot.d.ts +0 -49
  81. package/dist/fhir/Bot.js +0 -7
  82. package/dist/fhir/Bot.js.map +0 -1
  83. package/dist/fhir/Bundle.d.ts +0 -379
  84. package/dist/fhir/Bundle.js +0 -7
  85. package/dist/fhir/Bundle.js.map +0 -1
  86. package/dist/fhir/CapabilityStatement.d.ts +0 -1044
  87. package/dist/fhir/CapabilityStatement.js +0 -7
  88. package/dist/fhir/CapabilityStatement.js.map +0 -1
  89. package/dist/fhir/CarePlan.d.ts +0 -446
  90. package/dist/fhir/CarePlan.js +0 -7
  91. package/dist/fhir/CarePlan.js.map +0 -1
  92. package/dist/fhir/CareTeam.d.ts +0 -211
  93. package/dist/fhir/CareTeam.js +0 -7
  94. package/dist/fhir/CareTeam.js.map +0 -1
  95. package/dist/fhir/CatalogEntry.d.ts +0 -195
  96. package/dist/fhir/CatalogEntry.js +0 -7
  97. package/dist/fhir/CatalogEntry.js.map +0 -1
  98. package/dist/fhir/ChargeItem.d.ts +0 -287
  99. package/dist/fhir/ChargeItem.js +0 -7
  100. package/dist/fhir/ChargeItem.js.map +0 -1
  101. package/dist/fhir/ChargeItemDefinition.d.ts +0 -401
  102. package/dist/fhir/ChargeItemDefinition.js +0 -7
  103. package/dist/fhir/ChargeItemDefinition.js.map +0 -1
  104. package/dist/fhir/Claim.d.ts +0 -1092
  105. package/dist/fhir/Claim.js +0 -7
  106. package/dist/fhir/Claim.js.map +0 -1
  107. package/dist/fhir/ClaimResponse.d.ts +0 -1040
  108. package/dist/fhir/ClaimResponse.js +0 -7
  109. package/dist/fhir/ClaimResponse.js.map +0 -1
  110. package/dist/fhir/ClientApplication.d.ts +0 -46
  111. package/dist/fhir/ClientApplication.js +0 -7
  112. package/dist/fhir/ClientApplication.js.map +0 -1
  113. package/dist/fhir/ClinicalImpression.d.ts +0 -306
  114. package/dist/fhir/ClinicalImpression.js +0 -7
  115. package/dist/fhir/ClinicalImpression.js.map +0 -1
  116. package/dist/fhir/CodeSystem.d.ts +0 -541
  117. package/dist/fhir/CodeSystem.js +0 -7
  118. package/dist/fhir/CodeSystem.js.map +0 -1
  119. package/dist/fhir/CodeableConcept.d.ts +0 -33
  120. package/dist/fhir/CodeableConcept.js +0 -7
  121. package/dist/fhir/CodeableConcept.js.map +0 -1
  122. package/dist/fhir/Coding.d.ts +0 -50
  123. package/dist/fhir/Coding.js +0 -7
  124. package/dist/fhir/Coding.js.map +0 -1
  125. package/dist/fhir/Communication.d.ts +0 -264
  126. package/dist/fhir/Communication.js +0 -7
  127. package/dist/fhir/Communication.js.map +0 -1
  128. package/dist/fhir/CommunicationRequest.d.ts +0 -261
  129. package/dist/fhir/CommunicationRequest.js +0 -7
  130. package/dist/fhir/CommunicationRequest.js.map +0 -1
  131. package/dist/fhir/CompartmentDefinition.d.ts +0 -217
  132. package/dist/fhir/CompartmentDefinition.js +0 -7
  133. package/dist/fhir/CompartmentDefinition.js.map +0 -1
  134. package/dist/fhir/Composition.d.ts +0 -429
  135. package/dist/fhir/Composition.js +0 -7
  136. package/dist/fhir/Composition.js.map +0 -1
  137. package/dist/fhir/ConceptMap.d.ts +0 -518
  138. package/dist/fhir/ConceptMap.js +0 -7
  139. package/dist/fhir/ConceptMap.js.map +0 -1
  140. package/dist/fhir/Condition.d.ts +0 -326
  141. package/dist/fhir/Condition.js +0 -7
  142. package/dist/fhir/Condition.js.map +0 -1
  143. package/dist/fhir/Consent.d.ts +0 -460
  144. package/dist/fhir/Consent.js +0 -7
  145. package/dist/fhir/Consent.js.map +0 -1
  146. package/dist/fhir/ContactDetail.d.ts +0 -31
  147. package/dist/fhir/ContactDetail.js +0 -7
  148. package/dist/fhir/ContactDetail.js.map +0 -1
  149. package/dist/fhir/ContactPoint.d.ts +0 -47
  150. package/dist/fhir/ContactPoint.js +0 -7
  151. package/dist/fhir/ContactPoint.js.map +0 -1
  152. package/dist/fhir/Contract.d.ts +0 -1452
  153. package/dist/fhir/Contract.js +0 -7
  154. package/dist/fhir/Contract.js.map +0 -1
  155. package/dist/fhir/Contributor.d.ts +0 -37
  156. package/dist/fhir/Contributor.js +0 -7
  157. package/dist/fhir/Contributor.js.map +0 -1
  158. package/dist/fhir/Count.d.ts +0 -49
  159. package/dist/fhir/Count.js +0 -7
  160. package/dist/fhir/Count.js.map +0 -1
  161. package/dist/fhir/Coverage.d.ts +0 -327
  162. package/dist/fhir/Coverage.js +0 -7
  163. package/dist/fhir/Coverage.js.map +0 -1
  164. package/dist/fhir/CoverageEligibilityRequest.d.ts +0 -404
  165. package/dist/fhir/CoverageEligibilityRequest.js +0 -7
  166. package/dist/fhir/CoverageEligibilityRequest.js.map +0 -1
  167. package/dist/fhir/CoverageEligibilityResponse.d.ts +0 -434
  168. package/dist/fhir/CoverageEligibilityResponse.js +0 -7
  169. package/dist/fhir/CoverageEligibilityResponse.js.map +0 -1
  170. package/dist/fhir/DataRequirement.d.ts +0 -239
  171. package/dist/fhir/DataRequirement.js +0 -7
  172. package/dist/fhir/DataRequirement.js.map +0 -1
  173. package/dist/fhir/DetectedIssue.d.ts +0 -252
  174. package/dist/fhir/DetectedIssue.js +0 -7
  175. package/dist/fhir/DetectedIssue.js.map +0 -1
  176. package/dist/fhir/Device.d.ts +0 -493
  177. package/dist/fhir/Device.js +0 -7
  178. package/dist/fhir/Device.js.map +0 -1
  179. package/dist/fhir/DeviceDefinition.d.ts +0 -486
  180. package/dist/fhir/DeviceDefinition.js +0 -7
  181. package/dist/fhir/DeviceDefinition.js.map +0 -1
  182. package/dist/fhir/DeviceMetric.d.ts +0 -199
  183. package/dist/fhir/DeviceMetric.js +0 -7
  184. package/dist/fhir/DeviceMetric.js.map +0 -1
  185. package/dist/fhir/DeviceRequest.d.ts +0 -296
  186. package/dist/fhir/DeviceRequest.js +0 -7
  187. package/dist/fhir/DeviceRequest.js.map +0 -1
  188. package/dist/fhir/DeviceUseStatement.d.ts +0 -168
  189. package/dist/fhir/DeviceUseStatement.js +0 -7
  190. package/dist/fhir/DeviceUseStatement.js.map +0 -1
  191. package/dist/fhir/DiagnosticReport.d.ts +0 -254
  192. package/dist/fhir/DiagnosticReport.js +0 -7
  193. package/dist/fhir/DiagnosticReport.js.map +0 -1
  194. package/dist/fhir/Distance.d.ts +0 -47
  195. package/dist/fhir/Distance.js +0 -7
  196. package/dist/fhir/Distance.js.map +0 -1
  197. package/dist/fhir/DocumentManifest.d.ts +0 -196
  198. package/dist/fhir/DocumentManifest.js +0 -7
  199. package/dist/fhir/DocumentManifest.js.map +0 -1
  200. package/dist/fhir/DocumentReference.d.ts +0 -349
  201. package/dist/fhir/DocumentReference.js +0 -7
  202. package/dist/fhir/DocumentReference.js.map +0 -1
  203. package/dist/fhir/Dosage.d.ts +0 -152
  204. package/dist/fhir/Dosage.js +0 -7
  205. package/dist/fhir/Dosage.js.map +0 -1
  206. package/dist/fhir/Duration.d.ts +0 -46
  207. package/dist/fhir/Duration.js +0 -7
  208. package/dist/fhir/Duration.js.map +0 -1
  209. package/dist/fhir/EffectEvidenceSynthesis.d.ts +0 -591
  210. package/dist/fhir/EffectEvidenceSynthesis.js +0 -7
  211. package/dist/fhir/EffectEvidenceSynthesis.js.map +0 -1
  212. package/dist/fhir/Element.d.ts +0 -21
  213. package/dist/fhir/Element.js +0 -7
  214. package/dist/fhir/Element.js.map +0 -1
  215. package/dist/fhir/ElementDefinition.d.ts +0 -2701
  216. package/dist/fhir/ElementDefinition.js +0 -7
  217. package/dist/fhir/ElementDefinition.js.map +0 -1
  218. package/dist/fhir/Encounter.d.ts +0 -558
  219. package/dist/fhir/Encounter.js +0 -7
  220. package/dist/fhir/Encounter.js.map +0 -1
  221. package/dist/fhir/Endpoint.d.ts +0 -140
  222. package/dist/fhir/Endpoint.js +0 -7
  223. package/dist/fhir/Endpoint.js.map +0 -1
  224. package/dist/fhir/EnrollmentRequest.d.ts +0 -113
  225. package/dist/fhir/EnrollmentRequest.js +0 -7
  226. package/dist/fhir/EnrollmentRequest.js.map +0 -1
  227. package/dist/fhir/EnrollmentResponse.d.ts +0 -117
  228. package/dist/fhir/EnrollmentResponse.js +0 -7
  229. package/dist/fhir/EnrollmentResponse.js.map +0 -1
  230. package/dist/fhir/EpisodeOfCare.d.ts +0 -246
  231. package/dist/fhir/EpisodeOfCare.js +0 -7
  232. package/dist/fhir/EpisodeOfCare.js.map +0 -1
  233. package/dist/fhir/EventDefinition.d.ts +0 -253
  234. package/dist/fhir/EventDefinition.js +0 -7
  235. package/dist/fhir/EventDefinition.js.map +0 -1
  236. package/dist/fhir/Evidence.d.ts +0 -252
  237. package/dist/fhir/Evidence.js +0 -7
  238. package/dist/fhir/Evidence.js.map +0 -1
  239. package/dist/fhir/EvidenceVariable.d.ts +0 -370
  240. package/dist/fhir/EvidenceVariable.js +0 -7
  241. package/dist/fhir/EvidenceVariable.js.map +0 -1
  242. package/dist/fhir/ExampleScenario.d.ts +0 -628
  243. package/dist/fhir/ExampleScenario.js +0 -7
  244. package/dist/fhir/ExampleScenario.js.map +0 -1
  245. package/dist/fhir/ExplanationOfBenefit.d.ts +0 -1841
  246. package/dist/fhir/ExplanationOfBenefit.js +0 -7
  247. package/dist/fhir/ExplanationOfBenefit.js.map +0 -1
  248. package/dist/fhir/Expression.d.ts +0 -45
  249. package/dist/fhir/Expression.js +0 -7
  250. package/dist/fhir/Expression.js.map +0 -1
  251. package/dist/fhir/Extension.d.ts +0 -306
  252. package/dist/fhir/Extension.js +0 -7
  253. package/dist/fhir/Extension.js.map +0 -1
  254. package/dist/fhir/FamilyMemberHistory.d.ts +0 -306
  255. package/dist/fhir/FamilyMemberHistory.js +0 -7
  256. package/dist/fhir/FamilyMemberHistory.js.map +0 -1
  257. package/dist/fhir/Flag.d.ts +0 -132
  258. package/dist/fhir/Flag.js +0 -7
  259. package/dist/fhir/Flag.js.map +0 -1
  260. package/dist/fhir/Goal.d.ts +0 -299
  261. package/dist/fhir/Goal.js +0 -7
  262. package/dist/fhir/Goal.js.map +0 -1
  263. package/dist/fhir/GraphDefinition.d.ts +0 -350
  264. package/dist/fhir/GraphDefinition.js +0 -7
  265. package/dist/fhir/GraphDefinition.js.map +0 -1
  266. package/dist/fhir/Group.d.ts +0 -271
  267. package/dist/fhir/Group.js +0 -7
  268. package/dist/fhir/Group.js.map +0 -1
  269. package/dist/fhir/GuidanceResponse.d.ts +0 -196
  270. package/dist/fhir/GuidanceResponse.js +0 -7
  271. package/dist/fhir/GuidanceResponse.js.map +0 -1
  272. package/dist/fhir/HealthcareService.d.ts +0 -356
  273. package/dist/fhir/HealthcareService.js +0 -7
  274. package/dist/fhir/HealthcareService.js.map +0 -1
  275. package/dist/fhir/HumanName.d.ts +0 -58
  276. package/dist/fhir/HumanName.js +0 -7
  277. package/dist/fhir/HumanName.js.map +0 -1
  278. package/dist/fhir/Identifier.d.ts +0 -53
  279. package/dist/fhir/Identifier.js +0 -7
  280. package/dist/fhir/Identifier.js.map +0 -1
  281. package/dist/fhir/ImagingStudy.d.ts +0 -407
  282. package/dist/fhir/ImagingStudy.js +0 -7
  283. package/dist/fhir/ImagingStudy.js.map +0 -1
  284. package/dist/fhir/Immunization.d.ts +0 -444
  285. package/dist/fhir/Immunization.js +0 -7
  286. package/dist/fhir/Immunization.js.map +0 -1
  287. package/dist/fhir/ImmunizationEvaluation.d.ts +0 -149
  288. package/dist/fhir/ImmunizationEvaluation.js +0 -7
  289. package/dist/fhir/ImmunizationEvaluation.js.map +0 -1
  290. package/dist/fhir/ImmunizationRecommendation.d.ts +0 -254
  291. package/dist/fhir/ImmunizationRecommendation.js +0 -7
  292. package/dist/fhir/ImmunizationRecommendation.js.map +0 -1
  293. package/dist/fhir/ImplementationGuide.d.ts +0 -824
  294. package/dist/fhir/ImplementationGuide.js +0 -7
  295. package/dist/fhir/ImplementationGuide.js.map +0 -1
  296. package/dist/fhir/InsurancePlan.d.ts +0 -624
  297. package/dist/fhir/InsurancePlan.js +0 -7
  298. package/dist/fhir/InsurancePlan.js.map +0 -1
  299. package/dist/fhir/Invoice.d.ts +0 -346
  300. package/dist/fhir/Invoice.js +0 -7
  301. package/dist/fhir/Invoice.js.map +0 -1
  302. package/dist/fhir/JsonWebKey.d.ts +0 -99
  303. package/dist/fhir/JsonWebKey.js +0 -7
  304. package/dist/fhir/JsonWebKey.js.map +0 -1
  305. package/dist/fhir/Library.d.ts +0 -277
  306. package/dist/fhir/Library.js +0 -7
  307. package/dist/fhir/Library.js.map +0 -1
  308. package/dist/fhir/Linkage.d.ts +0 -146
  309. package/dist/fhir/Linkage.js +0 -7
  310. package/dist/fhir/Linkage.js.map +0 -1
  311. package/dist/fhir/List.d.ts +0 -200
  312. package/dist/fhir/List.js +0 -7
  313. package/dist/fhir/List.js.map +0 -1
  314. package/dist/fhir/Location.d.ts +0 -277
  315. package/dist/fhir/Location.js +0 -7
  316. package/dist/fhir/Location.js.map +0 -1
  317. package/dist/fhir/Login.d.ts +0 -119
  318. package/dist/fhir/Login.js +0 -7
  319. package/dist/fhir/Login.js.map +0 -1
  320. package/dist/fhir/MarketingStatus.d.ts +0 -82
  321. package/dist/fhir/MarketingStatus.js +0 -7
  322. package/dist/fhir/MarketingStatus.js.map +0 -1
  323. package/dist/fhir/Measure.d.ts +0 -620
  324. package/dist/fhir/Measure.js +0 -7
  325. package/dist/fhir/Measure.js.map +0 -1
  326. package/dist/fhir/MeasureReport.d.ts +0 -463
  327. package/dist/fhir/MeasureReport.js +0 -7
  328. package/dist/fhir/MeasureReport.js.map +0 -1
  329. package/dist/fhir/Media.d.ts +0 -205
  330. package/dist/fhir/Media.js +0 -7
  331. package/dist/fhir/Media.js.map +0 -1
  332. package/dist/fhir/Medication.d.ts +0 -230
  333. package/dist/fhir/Medication.js +0 -7
  334. package/dist/fhir/Medication.js.map +0 -1
  335. package/dist/fhir/MedicationAdministration.d.ts +0 -352
  336. package/dist/fhir/MedicationAdministration.js +0 -7
  337. package/dist/fhir/MedicationAdministration.js.map +0 -1
  338. package/dist/fhir/MedicationDispense.d.ts +0 -343
  339. package/dist/fhir/MedicationDispense.js +0 -7
  340. package/dist/fhir/MedicationDispense.js.map +0 -1
  341. package/dist/fhir/MedicationKnowledge.d.ts +0 -992
  342. package/dist/fhir/MedicationKnowledge.js +0 -7
  343. package/dist/fhir/MedicationKnowledge.js.map +0 -1
  344. package/dist/fhir/MedicationRequest.d.ts +0 -481
  345. package/dist/fhir/MedicationRequest.js +0 -7
  346. package/dist/fhir/MedicationRequest.js.map +0 -1
  347. package/dist/fhir/MedicationStatement.d.ts +0 -228
  348. package/dist/fhir/MedicationStatement.js +0 -7
  349. package/dist/fhir/MedicationStatement.js.map +0 -1
  350. package/dist/fhir/MedicinalProduct.d.ts +0 -453
  351. package/dist/fhir/MedicinalProduct.js +0 -7
  352. package/dist/fhir/MedicinalProduct.js.map +0 -1
  353. package/dist/fhir/MedicinalProductAuthorization.d.ts +0 -271
  354. package/dist/fhir/MedicinalProductAuthorization.js +0 -7
  355. package/dist/fhir/MedicinalProductAuthorization.js.map +0 -1
  356. package/dist/fhir/MedicinalProductContraindication.d.ts +0 -170
  357. package/dist/fhir/MedicinalProductContraindication.js +0 -7
  358. package/dist/fhir/MedicinalProductContraindication.js.map +0 -1
  359. package/dist/fhir/MedicinalProductIndication.d.ts +0 -179
  360. package/dist/fhir/MedicinalProductIndication.js +0 -7
  361. package/dist/fhir/MedicinalProductIndication.js.map +0 -1
  362. package/dist/fhir/MedicinalProductIngredient.d.ts +0 -336
  363. package/dist/fhir/MedicinalProductIngredient.js +0 -7
  364. package/dist/fhir/MedicinalProductIngredient.js.map +0 -1
  365. package/dist/fhir/MedicinalProductInteraction.d.ts +0 -158
  366. package/dist/fhir/MedicinalProductInteraction.js +0 -7
  367. package/dist/fhir/MedicinalProductInteraction.js.map +0 -1
  368. package/dist/fhir/MedicinalProductManufactured.d.ts +0 -113
  369. package/dist/fhir/MedicinalProductManufactured.js +0 -7
  370. package/dist/fhir/MedicinalProductManufactured.js.map +0 -1
  371. package/dist/fhir/MedicinalProductPackaged.d.ts +0 -259
  372. package/dist/fhir/MedicinalProductPackaged.js +0 -7
  373. package/dist/fhir/MedicinalProductPackaged.js.map +0 -1
  374. package/dist/fhir/MedicinalProductPharmaceutical.d.ts +0 -331
  375. package/dist/fhir/MedicinalProductPharmaceutical.js +0 -7
  376. package/dist/fhir/MedicinalProductPharmaceutical.js.map +0 -1
  377. package/dist/fhir/MedicinalProductUndesirableEffect.d.ts +0 -101
  378. package/dist/fhir/MedicinalProductUndesirableEffect.js +0 -7
  379. package/dist/fhir/MedicinalProductUndesirableEffect.js.map +0 -1
  380. package/dist/fhir/MessageDefinition.d.ts +0 -330
  381. package/dist/fhir/MessageDefinition.js +0 -7
  382. package/dist/fhir/MessageDefinition.js.map +0 -1
  383. package/dist/fhir/MessageHeader.d.ts +0 -323
  384. package/dist/fhir/MessageHeader.js +0 -7
  385. package/dist/fhir/MessageHeader.js.map +0 -1
  386. package/dist/fhir/Meta.d.ts +0 -75
  387. package/dist/fhir/Meta.js +0 -7
  388. package/dist/fhir/Meta.js.map +0 -1
  389. package/dist/fhir/MolecularSequence.d.ts +0 -760
  390. package/dist/fhir/MolecularSequence.js +0 -7
  391. package/dist/fhir/MolecularSequence.js.map +0 -1
  392. package/dist/fhir/Money.d.ts +0 -29
  393. package/dist/fhir/Money.js +0 -7
  394. package/dist/fhir/Money.js.map +0 -1
  395. package/dist/fhir/NamingSystem.d.ts +0 -218
  396. package/dist/fhir/NamingSystem.js +0 -7
  397. package/dist/fhir/NamingSystem.js.map +0 -1
  398. package/dist/fhir/Narrative.d.ts +0 -32
  399. package/dist/fhir/Narrative.js +0 -7
  400. package/dist/fhir/Narrative.js.map +0 -1
  401. package/dist/fhir/NutritionOrder.d.ts +0 -566
  402. package/dist/fhir/NutritionOrder.js +0 -7
  403. package/dist/fhir/NutritionOrder.js.map +0 -1
  404. package/dist/fhir/Observation.d.ts +0 -520
  405. package/dist/fhir/Observation.js +0 -7
  406. package/dist/fhir/Observation.js.map +0 -1
  407. package/dist/fhir/ObservationDefinition.d.ts +0 -278
  408. package/dist/fhir/ObservationDefinition.js +0 -7
  409. package/dist/fhir/ObservationDefinition.js.map +0 -1
  410. package/dist/fhir/OperationDefinition.d.ts +0 -468
  411. package/dist/fhir/OperationDefinition.js +0 -7
  412. package/dist/fhir/OperationDefinition.js.map +0 -1
  413. package/dist/fhir/OperationOutcome.d.ts +0 -160
  414. package/dist/fhir/OperationOutcome.js +0 -7
  415. package/dist/fhir/OperationOutcome.js.map +0 -1
  416. package/dist/fhir/Organization.d.ts +0 -184
  417. package/dist/fhir/Organization.js +0 -7
  418. package/dist/fhir/Organization.js.map +0 -1
  419. package/dist/fhir/OrganizationAffiliation.d.ts +0 -145
  420. package/dist/fhir/OrganizationAffiliation.js +0 -7
  421. package/dist/fhir/OrganizationAffiliation.js.map +0 -1
  422. package/dist/fhir/ParameterDefinition.d.ts +0 -57
  423. package/dist/fhir/ParameterDefinition.js +0 -7
  424. package/dist/fhir/ParameterDefinition.js.map +0 -1
  425. package/dist/fhir/Parameters.d.ts +0 -319
  426. package/dist/fhir/Parameters.js +0 -7
  427. package/dist/fhir/Parameters.js.map +0 -1
  428. package/dist/fhir/PasswordChangeRequest.d.ts +0 -51
  429. package/dist/fhir/PasswordChangeRequest.js +0 -7
  430. package/dist/fhir/PasswordChangeRequest.js.map +0 -1
  431. package/dist/fhir/Patient.d.ts +0 -342
  432. package/dist/fhir/Patient.js +0 -7
  433. package/dist/fhir/Patient.js.map +0 -1
  434. package/dist/fhir/PaymentNotice.d.ts +0 -135
  435. package/dist/fhir/PaymentNotice.js +0 -7
  436. package/dist/fhir/PaymentNotice.js.map +0 -1
  437. package/dist/fhir/PaymentReconciliation.d.ts +0 -280
  438. package/dist/fhir/PaymentReconciliation.js +0 -7
  439. package/dist/fhir/PaymentReconciliation.js.map +0 -1
  440. package/dist/fhir/Period.d.ts +0 -32
  441. package/dist/fhir/Period.js +0 -7
  442. package/dist/fhir/Period.js.map +0 -1
  443. package/dist/fhir/Person.d.ts +0 -175
  444. package/dist/fhir/Person.js +0 -7
  445. package/dist/fhir/Person.js.map +0 -1
  446. package/dist/fhir/PlanDefinition.d.ts +0 -837
  447. package/dist/fhir/PlanDefinition.js +0 -7
  448. package/dist/fhir/PlanDefinition.js.map +0 -1
  449. package/dist/fhir/Population.d.ts +0 -62
  450. package/dist/fhir/Population.js +0 -7
  451. package/dist/fhir/Population.js.map +0 -1
  452. package/dist/fhir/Practitioner.d.ts +0 -191
  453. package/dist/fhir/Practitioner.js +0 -7
  454. package/dist/fhir/Practitioner.js.map +0 -1
  455. package/dist/fhir/PractitionerRole.d.ts +0 -259
  456. package/dist/fhir/PractitionerRole.js +0 -7
  457. package/dist/fhir/PractitionerRole.js.map +0 -1
  458. package/dist/fhir/Procedure.d.ts +0 -372
  459. package/dist/fhir/Procedure.js +0 -7
  460. package/dist/fhir/Procedure.js.map +0 -1
  461. package/dist/fhir/ProdCharacteristic.d.ts +0 -112
  462. package/dist/fhir/ProdCharacteristic.js +0 -7
  463. package/dist/fhir/ProdCharacteristic.js.map +0 -1
  464. package/dist/fhir/ProductShelfLife.d.ts +0 -70
  465. package/dist/fhir/ProductShelfLife.js +0 -7
  466. package/dist/fhir/ProductShelfLife.js.map +0 -1
  467. package/dist/fhir/Project.d.ts +0 -43
  468. package/dist/fhir/Project.js +0 -7
  469. package/dist/fhir/Project.js.map +0 -1
  470. package/dist/fhir/ProjectMembership.d.ts +0 -66
  471. package/dist/fhir/ProjectMembership.js +0 -7
  472. package/dist/fhir/ProjectMembership.js.map +0 -1
  473. package/dist/fhir/Provenance.d.ts +0 -258
  474. package/dist/fhir/Provenance.js +0 -7
  475. package/dist/fhir/Provenance.js.map +0 -1
  476. package/dist/fhir/Quantity.d.ts +0 -46
  477. package/dist/fhir/Quantity.js +0 -7
  478. package/dist/fhir/Quantity.js.map +0 -1
  479. package/dist/fhir/Questionnaire.d.ts +0 -603
  480. package/dist/fhir/Questionnaire.js +0 -7
  481. package/dist/fhir/Questionnaire.js.map +0 -1
  482. package/dist/fhir/QuestionnaireResponse.d.ts +0 -313
  483. package/dist/fhir/QuestionnaireResponse.js +0 -7
  484. package/dist/fhir/QuestionnaireResponse.js.map +0 -1
  485. package/dist/fhir/Range.d.ts +0 -30
  486. package/dist/fhir/Range.js +0 -7
  487. package/dist/fhir/Range.js.map +0 -1
  488. package/dist/fhir/Ratio.d.ts +0 -30
  489. package/dist/fhir/Ratio.js +0 -7
  490. package/dist/fhir/Ratio.js.map +0 -1
  491. package/dist/fhir/Reference.d.ts +0 -67
  492. package/dist/fhir/Reference.js +0 -7
  493. package/dist/fhir/Reference.js.map +0 -1
  494. package/dist/fhir/RefreshToken.d.ts +0 -45
  495. package/dist/fhir/RefreshToken.js +0 -7
  496. package/dist/fhir/RefreshToken.js.map +0 -1
  497. package/dist/fhir/RelatedArtifact.d.ts +0 -57
  498. package/dist/fhir/RelatedArtifact.js +0 -7
  499. package/dist/fhir/RelatedArtifact.js.map +0 -1
  500. package/dist/fhir/RelatedPerson.d.ts +0 -190
  501. package/dist/fhir/RelatedPerson.js +0 -7
  502. package/dist/fhir/RelatedPerson.js.map +0 -1
  503. package/dist/fhir/RequestGroup.d.ts +0 -434
  504. package/dist/fhir/RequestGroup.js +0 -7
  505. package/dist/fhir/RequestGroup.js.map +0 -1
  506. package/dist/fhir/ResearchDefinition.d.ts +0 -291
  507. package/dist/fhir/ResearchDefinition.js +0 -7
  508. package/dist/fhir/ResearchDefinition.js.map +0 -1
  509. package/dist/fhir/ResearchElementDefinition.d.ts +0 -431
  510. package/dist/fhir/ResearchElementDefinition.js +0 -7
  511. package/dist/fhir/ResearchElementDefinition.js.map +0 -1
  512. package/dist/fhir/ResearchStudy.d.ts +0 -318
  513. package/dist/fhir/ResearchStudy.js +0 -7
  514. package/dist/fhir/ResearchStudy.js.map +0 -1
  515. package/dist/fhir/ResearchSubject.d.ts +0 -119
  516. package/dist/fhir/ResearchSubject.js +0 -7
  517. package/dist/fhir/ResearchSubject.js.map +0 -1
  518. package/dist/fhir/Resource.d.ts +0 -156
  519. package/dist/fhir/Resource.js +0 -7
  520. package/dist/fhir/Resource.js.map +0 -1
  521. package/dist/fhir/RiskAssessment.d.ts +0 -246
  522. package/dist/fhir/RiskAssessment.js +0 -7
  523. package/dist/fhir/RiskAssessment.js.map +0 -1
  524. package/dist/fhir/RiskEvidenceSynthesis.d.ts +0 -530
  525. package/dist/fhir/RiskEvidenceSynthesis.js +0 -7
  526. package/dist/fhir/RiskEvidenceSynthesis.js.map +0 -1
  527. package/dist/fhir/SampledData.d.ts +0 -62
  528. package/dist/fhir/SampledData.js +0 -7
  529. package/dist/fhir/SampledData.js.map +0 -1
  530. package/dist/fhir/Schedule.d.ts +0 -129
  531. package/dist/fhir/Schedule.js +0 -7
  532. package/dist/fhir/Schedule.js.map +0 -1
  533. package/dist/fhir/SearchParameter.d.ts +0 -277
  534. package/dist/fhir/SearchParameter.js +0 -7
  535. package/dist/fhir/SearchParameter.js.map +0 -1
  536. package/dist/fhir/ServiceRequest.d.ts +0 -309
  537. package/dist/fhir/ServiceRequest.js +0 -7
  538. package/dist/fhir/ServiceRequest.js.map +0 -1
  539. package/dist/fhir/Signature.d.ts +0 -71
  540. package/dist/fhir/Signature.js +0 -7
  541. package/dist/fhir/Signature.js.map +0 -1
  542. package/dist/fhir/Slot.d.ts +0 -134
  543. package/dist/fhir/Slot.js +0 -7
  544. package/dist/fhir/Slot.js.map +0 -1
  545. package/dist/fhir/Specimen.d.ts +0 -366
  546. package/dist/fhir/Specimen.js +0 -7
  547. package/dist/fhir/Specimen.js.map +0 -1
  548. package/dist/fhir/SpecimenDefinition.d.ts +0 -363
  549. package/dist/fhir/SpecimenDefinition.js +0 -7
  550. package/dist/fhir/SpecimenDefinition.js.map +0 -1
  551. package/dist/fhir/StructureDefinition.d.ts +0 -438
  552. package/dist/fhir/StructureDefinition.js +0 -7
  553. package/dist/fhir/StructureDefinition.js.map +0 -1
  554. package/dist/fhir/StructureMap.d.ts +0 -904
  555. package/dist/fhir/StructureMap.js +0 -7
  556. package/dist/fhir/StructureMap.js.map +0 -1
  557. package/dist/fhir/Subscription.d.ts +0 -172
  558. package/dist/fhir/Subscription.js +0 -7
  559. package/dist/fhir/Subscription.js.map +0 -1
  560. package/dist/fhir/Substance.d.ts +0 -213
  561. package/dist/fhir/Substance.js +0 -7
  562. package/dist/fhir/Substance.js.map +0 -1
  563. package/dist/fhir/SubstanceAmount.d.ts +0 -115
  564. package/dist/fhir/SubstanceAmount.js +0 -7
  565. package/dist/fhir/SubstanceAmount.js.map +0 -1
  566. package/dist/fhir/SubstanceNucleicAcid.d.ts +0 -309
  567. package/dist/fhir/SubstanceNucleicAcid.js +0 -7
  568. package/dist/fhir/SubstanceNucleicAcid.js.map +0 -1
  569. package/dist/fhir/SubstancePolymer.d.ts +0 -405
  570. package/dist/fhir/SubstancePolymer.js +0 -7
  571. package/dist/fhir/SubstancePolymer.js.map +0 -1
  572. package/dist/fhir/SubstanceProtein.d.ts +0 -218
  573. package/dist/fhir/SubstanceProtein.js +0 -7
  574. package/dist/fhir/SubstanceProtein.js.map +0 -1
  575. package/dist/fhir/SubstanceReferenceInformation.d.ts +0 -330
  576. package/dist/fhir/SubstanceReferenceInformation.js +0 -7
  577. package/dist/fhir/SubstanceReferenceInformation.js.map +0 -1
  578. package/dist/fhir/SubstanceSourceMaterial.d.ts +0 -521
  579. package/dist/fhir/SubstanceSourceMaterial.js +0 -7
  580. package/dist/fhir/SubstanceSourceMaterial.js.map +0 -1
  581. package/dist/fhir/SubstanceSpecification.d.ts +0 -827
  582. package/dist/fhir/SubstanceSpecification.js +0 -7
  583. package/dist/fhir/SubstanceSpecification.js.map +0 -1
  584. package/dist/fhir/SupplyDelivery.d.ts +0 -205
  585. package/dist/fhir/SupplyDelivery.js +0 -7
  586. package/dist/fhir/SupplyDelivery.js.map +0 -1
  587. package/dist/fhir/SupplyRequest.d.ts +0 -237
  588. package/dist/fhir/SupplyRequest.js +0 -7
  589. package/dist/fhir/SupplyRequest.js.map +0 -1
  590. package/dist/fhir/Task.d.ts +0 -807
  591. package/dist/fhir/Task.js +0 -7
  592. package/dist/fhir/Task.js.map +0 -1
  593. package/dist/fhir/TerminologyCapabilities.d.ts +0 -716
  594. package/dist/fhir/TerminologyCapabilities.js +0 -7
  595. package/dist/fhir/TerminologyCapabilities.js.map +0 -1
  596. package/dist/fhir/TestReport.d.ts +0 -549
  597. package/dist/fhir/TestReport.js +0 -7
  598. package/dist/fhir/TestReport.js.map +0 -1
  599. package/dist/fhir/TestScript.d.ts +0 -1184
  600. package/dist/fhir/TestScript.js +0 -7
  601. package/dist/fhir/TestScript.js.map +0 -1
  602. package/dist/fhir/Timing.d.ts +0 -178
  603. package/dist/fhir/Timing.js +0 -7
  604. package/dist/fhir/Timing.js.map +0 -1
  605. package/dist/fhir/TriggerDefinition.d.ts +0 -65
  606. package/dist/fhir/TriggerDefinition.js +0 -7
  607. package/dist/fhir/TriggerDefinition.js.map +0 -1
  608. package/dist/fhir/UsageContext.d.ts +0 -61
  609. package/dist/fhir/UsageContext.js +0 -7
  610. package/dist/fhir/UsageContext.js.map +0 -1
  611. package/dist/fhir/User.d.ts +0 -45
  612. package/dist/fhir/User.js +0 -7
  613. package/dist/fhir/User.js.map +0 -1
  614. package/dist/fhir/ValueSet.d.ts +0 -725
  615. package/dist/fhir/ValueSet.js +0 -7
  616. package/dist/fhir/ValueSet.js.map +0 -1
  617. package/dist/fhir/VerificationResult.d.ts +0 -340
  618. package/dist/fhir/VerificationResult.js +0 -7
  619. package/dist/fhir/VerificationResult.js.map +0 -1
  620. package/dist/fhir/VisionPrescription.d.ts +0 -264
  621. package/dist/fhir/VisionPrescription.js +0 -7
  622. package/dist/fhir/VisionPrescription.js.map +0 -1
  623. package/dist/fhir/index.d.ts +0 -196
  624. package/dist/fhir/index.js +0 -213
  625. package/dist/fhir/index.js.map +0 -1
  626. package/dist/fhirpath/functions.d.ts +0 -6
  627. package/dist/fhirpath/functions.js +0 -349
  628. package/dist/fhirpath/functions.js.map +0 -1
  629. package/dist/fhirpath/index.d.ts +0 -2
  630. package/dist/fhirpath/index.js +0 -15
  631. package/dist/fhirpath/index.js.map +0 -1
  632. package/dist/fhirpath/parse.d.ts +0 -10
  633. package/dist/fhirpath/parse.js +0 -266
  634. package/dist/fhirpath/parse.js.map +0 -1
  635. package/dist/fhirpath/tokenize.d.ts +0 -13
  636. package/dist/fhirpath/tokenize.js +0 -39
  637. package/dist/fhirpath/tokenize.js.map +0 -1
  638. package/dist/fhirpath/utils.d.ts +0 -13
  639. package/dist/fhirpath/utils.js +0 -34
  640. package/dist/fhirpath/utils.js.map +0 -1
@@ -1,10 +0,0 @@
1
- export interface Atom {
2
- eval(context: any): any;
3
- }
4
- export declare class FhirPathAtom implements Atom {
5
- readonly original: string;
6
- readonly child: Atom;
7
- constructor(original: string, child: Atom);
8
- eval(context: any): any[];
9
- }
10
- export declare function parseFhirPath(input: string): FhirPathAtom;
@@ -1,266 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseFhirPath = exports.FhirPathAtom = void 0;
4
- const functions_1 = require("./functions");
5
- const tokenize_1 = require("./tokenize");
6
- const utils_1 = require("./utils");
7
- class ParserBuilder {
8
- constructor() {
9
- this.prefixParselets = {};
10
- this.infixParselets = {};
11
- }
12
- registerInfix(tokenType, parselet) {
13
- this.infixParselets[tokenType] = parselet;
14
- return this;
15
- }
16
- registerPrefix(tokenType, parselet) {
17
- this.prefixParselets[tokenType] = parselet;
18
- return this;
19
- }
20
- prefix(tokenType, precedence, builder) {
21
- return this.registerPrefix(tokenType, {
22
- parse(parser, token) {
23
- const right = parser.parse(precedence);
24
- return builder(token, right);
25
- },
26
- });
27
- }
28
- infixLeft(tokenType, precedence, builder) {
29
- return this.registerInfix(tokenType, {
30
- parse(parser, left, token) {
31
- const right = parser.parse(precedence);
32
- return builder(left, token, right);
33
- },
34
- precedence
35
- });
36
- }
37
- infixRight(tokenType, precedence, builder) {
38
- return this.registerInfix(tokenType, {
39
- parse(parser, left, token) {
40
- const right = parser.parse(precedence - 1);
41
- return builder(left, token, right);
42
- },
43
- precedence
44
- });
45
- }
46
- construct(input) {
47
- return new Parser(tokenize_1.tokenizer.tokenize(input), this.prefixParselets, this.infixParselets);
48
- }
49
- }
50
- class Parser {
51
- constructor(tokens, prefixParselets, infixParselets) {
52
- this.tokens = tokens;
53
- this.prefixParselets = prefixParselets;
54
- this.infixParselets = infixParselets;
55
- }
56
- match(expected) {
57
- const token = this.look();
58
- if ((token === null || token === void 0 ? void 0 : token.id) !== expected) {
59
- return false;
60
- }
61
- this.consume();
62
- return true;
63
- }
64
- parse(precedence = 0) {
65
- const token = this.consume();
66
- const prefix = this.prefixParselets[token.id];
67
- if (!prefix) {
68
- throw Error(`Parse error at ${token.value}. No matching prefix parselet.`);
69
- }
70
- let left = prefix.parse(this, token);
71
- while (precedence < this.getPrecedence()) {
72
- const next = this.consume();
73
- const infix = this.infixParselets[next.id];
74
- left = infix.parse(this, left, next);
75
- }
76
- return left;
77
- }
78
- getPrecedence() {
79
- const nextToken = this.look();
80
- if (!nextToken) {
81
- return 0;
82
- }
83
- const parser = this.infixParselets[nextToken.id];
84
- if (parser) {
85
- return parser.precedence;
86
- }
87
- return 0;
88
- }
89
- consume() {
90
- if (!this.tokens.length) {
91
- throw Error('Cant consume any more tokens.');
92
- }
93
- return this.tokens.shift();
94
- }
95
- look() {
96
- return this.tokens.length > 0 ? this.tokens[0] : undefined;
97
- }
98
- }
99
- class FhirPathAtom {
100
- constructor(original, child) {
101
- this.original = original;
102
- this.child = child;
103
- }
104
- eval(context) {
105
- try {
106
- const result = (0, utils_1.applyMaybeArray)(context, e => this.child.eval(e));
107
- if (Array.isArray(result)) {
108
- return result.flat();
109
- }
110
- else if (result === undefined || result === null) {
111
- return [];
112
- }
113
- else {
114
- return [result];
115
- }
116
- }
117
- catch (error) {
118
- throw new Error(`FhirPathError on "${this.original}": ${error}`);
119
- }
120
- }
121
- }
122
- exports.FhirPathAtom = FhirPathAtom;
123
- class LiteralAtom {
124
- constructor(value) {
125
- this.value = value;
126
- }
127
- eval() {
128
- return this.value;
129
- }
130
- }
131
- class SymbolAtom {
132
- constructor(name) {
133
- this.name = name;
134
- }
135
- eval(context) {
136
- return (0, utils_1.applyMaybeArray)(context, e => e.resourceType === this.name ? e : e[this.name]);
137
- }
138
- }
139
- class UnaryOperatorAtom {
140
- constructor(child, impl) {
141
- this.child = child;
142
- this.impl = impl;
143
- }
144
- eval(context) {
145
- return this.impl(this.child.eval(context));
146
- }
147
- }
148
- class BinaryOperatorAtom {
149
- constructor(left, right, impl) {
150
- this.left = left;
151
- this.right = right;
152
- this.impl = impl;
153
- }
154
- eval(context) {
155
- return this.impl(this.left.eval(context), this.right.eval(context));
156
- }
157
- }
158
- class DotAtom {
159
- constructor(left, right) {
160
- this.left = left;
161
- this.right = right;
162
- }
163
- eval(context) {
164
- return this.right.eval(this.left.eval(context));
165
- }
166
- }
167
- class UnionAtom {
168
- constructor(left, right) {
169
- this.left = left;
170
- this.right = right;
171
- }
172
- eval(context) {
173
- const leftResult = this.left.eval(context);
174
- const rightResult = this.right.eval(context);
175
- if (leftResult && rightResult) {
176
- return [leftResult, rightResult].flat();
177
- }
178
- return leftResult || rightResult;
179
- }
180
- }
181
- class IsAtom {
182
- constructor(left, right) {
183
- this.left = left;
184
- this.right = right;
185
- }
186
- eval(context) {
187
- const desiredResourceType = this.right.name;
188
- return (0, utils_1.applyMaybeArray)(this.left.eval(context), e => (e === null || e === void 0 ? void 0 : e.resourceType) === desiredResourceType ? e : undefined);
189
- }
190
- }
191
- class FunctionAtom {
192
- constructor(name, args, impl) {
193
- this.name = name;
194
- this.args = args;
195
- this.impl = impl;
196
- }
197
- eval(context) {
198
- if (context === undefined) {
199
- return undefined;
200
- }
201
- const input = Array.isArray(context) ? context : [context];
202
- return this.impl(input, ...this.args);
203
- }
204
- }
205
- const PARENTHESES_PARSELET = {
206
- parse(parser) {
207
- const expr = parser.parse();
208
- if (!parser.match(')')) {
209
- throw new Error('Parse error: expected `)`');
210
- }
211
- return expr;
212
- }
213
- };
214
- const FUNCTION_CALL_PARSELET = {
215
- parse(parser, left) {
216
- if (!(left instanceof SymbolAtom)) {
217
- throw new Error('Unexpected parentheses');
218
- }
219
- if (!(left.name in functions_1.functions)) {
220
- throw new Error('Unrecognized function: ' + left.name);
221
- }
222
- const args = [];
223
- while (!parser.match(')')) {
224
- args.push(parser.parse());
225
- }
226
- return new FunctionAtom(left.name, args, functions_1.functions[left.name]);
227
- },
228
- precedence: 8 /* FunctionCall */
229
- };
230
- const parserBuilder = new ParserBuilder()
231
- .registerPrefix('StringLiteral', { parse: (_, token) => new LiteralAtom(token.value.substring(1, token.value.length - 1)) })
232
- .registerPrefix('Number', { parse: (_, token) => new LiteralAtom(parseFloat(token.value)) })
233
- .registerPrefix('Symbol', { parse: (_, token) => new SymbolAtom(token.value) })
234
- .registerPrefix('(', PARENTHESES_PARSELET)
235
- .registerInfix('(', FUNCTION_CALL_PARSELET)
236
- .prefix('-', 6 /* Negate */, (_, right) => new UnaryOperatorAtom(right, x => -x))
237
- .infixLeft('.', 7 /* Dot */, (left, _, right) => new DotAtom(left, right))
238
- .infixRight('^', 5 /* Exp */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => Math.pow(x, y)))
239
- .infixLeft('/', 4 /* MulDiv */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x / y))
240
- .infixLeft('*', 4 /* MulDiv */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x * y))
241
- .infixLeft('+', 3 /* AddSub */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x + y))
242
- .infixLeft('-', 3 /* AddSub */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x - y))
243
- .infixLeft('|', 1 /* Union */, (left, _, right) => new UnionAtom(left, right))
244
- .infixLeft('=', 2 /* Equals */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x === y))
245
- .infixLeft('Symbol', 1 /* Union */, (left, symbol, right) => {
246
- switch (symbol.value) {
247
- case 'as':
248
- return new BinaryOperatorAtom(left, right, (x) => x);
249
- case 'is':
250
- return new IsAtom(left, right);
251
- case 'and':
252
- return new BinaryOperatorAtom(left, right, (x, y) => x && y);
253
- default:
254
- throw new Error('Cannot use ' + symbol.value + ' as infix operator');
255
- }
256
- });
257
- function parseFhirPath(input) {
258
- try {
259
- return new FhirPathAtom(input, parserBuilder.construct(input).parse());
260
- }
261
- catch (error) {
262
- throw new Error(`FhirPathError on "${input}": ${error}`);
263
- }
264
- }
265
- exports.parseFhirPath = parseFhirPath;
266
- //# sourceMappingURL=parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/fhirpath/parse.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,yCAA8C;AAC9C,mCAA0C;AAe1C,MAAM,aAAa;IAAnB;QACmB,oBAAe,GAAmC,EAAE,CAAC;QACrD,mBAAc,GAAkC,EAAE,CAAC;IA4CtE,CAAC;IA1CQ,aAAa,CAAC,SAAiB,EAAE,QAAuB;QAC7D,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,cAAc,CAAC,SAAiB,EAAE,QAAwB;QAC/D,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAA4C;QAC/F,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YACpC,KAAK,CAAC,MAAM,EAAE,KAAK;gBACjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBACtC,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC9B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAAwD;QAC9G,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YACnC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK;gBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBACtC,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACpC,CAAC;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAEM,UAAU,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAAwD;QAC/G,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YACnC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK;gBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;gBAC1C,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACpC,CAAC;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CAAC,KAAa;QAC5B,OAAO,IAAI,MAAM,CAAC,oBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,MAAM;IACV,YACU,MAAe,EACf,eAA+C,EAC/C,cAA6C;QAF7C,WAAM,GAAN,MAAM,CAAS;QACf,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAA+B;IACnD,CAAC;IAEE,KAAK,CAAC,QAAgB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,MAAK,QAAQ,EAAE;YAC1B,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,UAAU,GAAG,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,gCAAgC,CAAC,CAAA;SAC3E;QAED,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAErC,OAAO,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACtC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,CAAC,CAAC;SACV;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,UAAU,CAAC;SAC1B;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACvB,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAW,CAAC;IACtC,CAAC;IAEO,IAAI;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;CACF;AAaD,MAAa,YAAY;IACvB,YACkB,QAAgB,EAChB,KAAW;QADX,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAM;IAAI,CAAC;IAElC,IAAI,CAAC,OAAY;QACf,IAAI;YACF,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;aACtB;iBAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;gBAClD,OAAO,EAAE,CAAC;aACX;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,CAAC;aACjB;SACF;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,QAAQ,MAAM,KAAK,EAAE,CAAC,CAAC;SAClE;IACH,CAAC;CACF;AAnBD,oCAmBC;AAED,MAAM,WAAW;IACf,YAA4B,KAAU;QAAV,UAAK,GAAL,KAAK,CAAK;IAAI,CAAC;IAC3C,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU;IACd,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAI,CAAC;IAC7C,IAAI,CAAC,OAAY;QACf,OAAO,IAAA,uBAAe,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;CACF;AAED,MAAM,iBAAiB;IACrB,YACkB,KAAW,EACX,IAAqB;QADrB,UAAK,GAAL,KAAK,CAAM;QACX,SAAI,GAAJ,IAAI,CAAiB;IAAI,CAAC;IAE5C,IAAI,CAAC,OAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,kBAAkB;IACtB,YACkB,IAAU,EACV,KAAW,EACX,IAA6B;QAF7B,SAAI,GAAJ,IAAI,CAAM;QACV,UAAK,GAAL,KAAK,CAAM;QACX,SAAI,GAAJ,IAAI,CAAyB;IAAI,CAAC;IAEpD,IAAI,CAAC,OAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;CACF;AAED,MAAM,OAAO;IACX,YAA4B,IAAU,EAAkB,KAAW;QAAvC,SAAI,GAAJ,IAAI,CAAM;QAAkB,UAAK,GAAL,KAAK,CAAM;IAAI,CAAC;IACxE,IAAI,CAAC,OAAY;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,SAAS;IACb,YAA4B,IAAU,EAAkB,KAAW;QAAvC,SAAI,GAAJ,IAAI,CAAM;QAAkB,UAAK,GAAL,KAAK,CAAM;IAAI,CAAC;IACxE,IAAI,CAAC,OAAY;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,UAAU,IAAI,WAAW,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;SACzC;QACD,OAAO,UAAU,IAAI,WAAW,CAAC;IACnC,CAAC;CACF;AAED,MAAM,MAAM;IACV,YACkB,IAAU,EACV,KAAW;QADX,SAAI,GAAJ,IAAI,CAAM;QACV,UAAK,GAAL,KAAK,CAAM;IAAI,CAAC;IAElC,IAAI,CAAC,OAAY;QACf,MAAM,mBAAmB,GAAI,IAAI,CAAC,KAAoB,CAAC,IAAI,CAAC;QAC5D,OAAO,IAAA,uBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,YAAY,MAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChH,CAAC;CACF;AAED,MAAM,YAAY;IAChB,YACkB,IAAY,EACZ,IAAY,EACZ,IAA6C;QAF7C,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAyC;IAC3D,CAAC;IACL,IAAI,CAAC,OAAY;QACf,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,oBAAoB,GAAmB;IAC3C,KAAK,CAAC,MAAc;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,MAAM,sBAAsB,GAAkB;IAC5C,KAAK,CAAC,MAAc,EAAE,IAAU;QAC9B,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,qBAAS,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;SACxD;QAED,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SAC3B;QAED,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,UAAU,sBAAyB;CACpC,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE;KACtC,cAAc,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3H,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;KAC3F,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;KAC9E,cAAc,CAAC,GAAG,EAAE,oBAAoB,CAAC;KACzC,aAAa,CAAC,GAAG,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,GAAG,kBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACnF,SAAS,CAAC,GAAG,eAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC5E,UAAU,CAAC,GAAG,eAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAA,CAAC,EAAI,CAAC,CAAA,CAAC,CAAC;KAC1G,SAAS,CAAC,GAAG,kBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3G,SAAS,CAAC,GAAG,kBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3G,SAAS,CAAC,GAAG,kBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3G,SAAS,CAAC,GAAG,kBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3G,SAAS,CAAC,GAAG,iBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAChF,SAAS,CAAC,GAAG,kBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7G,SAAS,CAAC,QAAQ,iBAAoB,CAAC,IAAU,EAAE,MAAa,EAAE,KAAW,EAAE,EAAE;IAChF,QAAQ,MAAM,CAAC,KAAK,EAAE;QACpB,KAAK,IAAI;YACP,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,KAAK,IAAI;YACP,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,KAAK,KAAK;YACR,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D;YACE,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,GAAG,oBAAoB,CAAC,CAAC;KACxE;AACH,CAAC,CAAC,CAAC;AAEL,SAAgB,aAAa,CAAC,KAAa;IACzC,IAAI;QACF,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;KACxE;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,MAAM,KAAK,EAAE,CAAC,CAAC;KAC1D;AACH,CAAC;AAND,sCAMC","sourcesContent":["import { functions } from './functions';\nimport { Token, tokenizer } from './tokenize';\nimport { applyMaybeArray } from './utils';\n\nexport interface Atom {\n eval(context: any): any;\n}\n\ninterface PrefixParselet {\n parse(parser: Parser, token: Token): Atom;\n}\n\ninterface InfixParselet {\n precedence: number;\n parse(parser: Parser, left: Atom, token: Token): Atom;\n}\n\nclass ParserBuilder {\n private readonly prefixParselets: Record<string, PrefixParselet> = {};\n private readonly infixParselets: Record<string, InfixParselet> = {};\n\n public registerInfix(tokenType: string, parselet: InfixParselet): ParserBuilder {\n this.infixParselets[tokenType] = parselet;\n return this;\n }\n\n public registerPrefix(tokenType: string, parselet: PrefixParselet): ParserBuilder {\n this.prefixParselets[tokenType] = parselet;\n return this;\n }\n\n public prefix(tokenType: string, precedence: number, builder: (token: Token, right: Atom) => Atom): ParserBuilder {\n return this.registerPrefix(tokenType, {\n parse(parser, token) {\n const right = parser.parse(precedence)\n return builder(token, right)\n },\n });\n }\n\n public infixLeft(tokenType: string, precedence: number, builder: (left: Atom, token: Token, right: Atom) => Atom): ParserBuilder {\n return this.registerInfix(tokenType, {\n parse(parser, left, token) {\n const right = parser.parse(precedence)\n return builder(left, token, right)\n },\n precedence\n });\n }\n\n public infixRight(tokenType: string, precedence: number, builder: (left: Atom, token: Token, right: Atom) => Atom): ParserBuilder {\n return this.registerInfix(tokenType, {\n parse(parser, left, token) {\n const right = parser.parse(precedence - 1)\n return builder(left, token, right)\n },\n precedence\n });\n }\n\n public construct(input: string): Parser {\n return new Parser(tokenizer.tokenize(input), this.prefixParselets, this.infixParselets);\n }\n}\n\nclass Parser {\n constructor(\n private tokens: Token[],\n private prefixParselets: Record<string, PrefixParselet>,\n private infixParselets: Record<string, InfixParselet>,\n ) { }\n\n public match(expected: string): boolean {\n const token = this.look();\n if (token?.id !== expected) {\n return false;\n }\n\n this.consume();\n return true;\n }\n\n public parse(precedence = 0): Atom {\n const token = this.consume();\n const prefix = this.prefixParselets[token.id];\n if (!prefix) {\n throw Error(`Parse error at ${token.value}. No matching prefix parselet.`)\n }\n\n let left = prefix.parse(this, token);\n\n while (precedence < this.getPrecedence()) {\n const next = this.consume();\n const infix = this.infixParselets[next.id];\n left = infix.parse(this, left, next);\n }\n\n return left;\n }\n\n private getPrecedence(): number {\n const nextToken = this.look();\n if (!nextToken) {\n return 0;\n }\n const parser = this.infixParselets[nextToken.id];\n if (parser) {\n return parser.precedence;\n }\n return 0;\n }\n\n private consume(): Token {\n if (!this.tokens.length) {\n throw Error('Cant consume any more tokens.');\n }\n return this.tokens.shift() as Token;\n }\n\n private look(): Token | undefined {\n return this.tokens.length > 0 ? this.tokens[0] : undefined;\n }\n}\n\nconst enum Precedence {\n Union = 1,\n Equals = 2,\n AddSub = 3,\n MulDiv = 4,\n Exp = 5,\n Negate = 6,\n Dot = 7,\n FunctionCall = 8\n}\n\nexport class FhirPathAtom implements Atom {\n constructor(\n public readonly original: string,\n public readonly child: Atom) { }\n\n eval(context: any): any[] {\n try {\n const result = applyMaybeArray(context, e => this.child.eval(e));\n if (Array.isArray(result)) {\n return result.flat();\n } else if (result === undefined || result === null) {\n return [];\n } else {\n return [result];\n }\n } catch (error) {\n throw new Error(`FhirPathError on \"${this.original}\": ${error}`);\n }\n }\n}\n\nclass LiteralAtom implements Atom {\n constructor(public readonly value: any) { }\n eval(): any {\n return this.value;\n }\n}\n\nclass SymbolAtom implements Atom {\n constructor(public readonly name: string) { }\n eval(context: any): any {\n return applyMaybeArray(context, e => e.resourceType === this.name ? e : e[this.name]);\n }\n}\n\nclass UnaryOperatorAtom implements Atom {\n constructor(\n public readonly child: Atom,\n public readonly impl: (x: any) => any) { }\n\n eval(context: any): any {\n return this.impl(this.child.eval(context));\n }\n}\n\nclass BinaryOperatorAtom implements Atom {\n constructor(\n public readonly left: Atom,\n public readonly right: Atom,\n public readonly impl: (x: any, y: any) => any) { }\n\n eval(context: any): any {\n return this.impl(this.left.eval(context), this.right.eval(context));\n }\n}\n\nclass DotAtom implements Atom {\n constructor(public readonly left: Atom, public readonly right: Atom) { }\n eval(context: any): Atom {\n return this.right.eval(this.left.eval(context));\n }\n}\n\nclass UnionAtom implements Atom {\n constructor(public readonly left: Atom, public readonly right: Atom) { }\n eval(context: any): any {\n const leftResult = this.left.eval(context);\n const rightResult = this.right.eval(context);\n if (leftResult && rightResult) {\n return [leftResult, rightResult].flat();\n }\n return leftResult || rightResult;\n }\n}\n\nclass IsAtom implements Atom {\n constructor(\n public readonly left: Atom,\n public readonly right: Atom) { }\n\n eval(context: any): any {\n const desiredResourceType = (this.right as SymbolAtom).name;\n return applyMaybeArray(this.left.eval(context), e => e?.resourceType === desiredResourceType ? e : undefined);\n }\n}\n\nclass FunctionAtom implements Atom {\n constructor(\n public readonly name: string,\n public readonly args: Atom[],\n public readonly impl: (context: any[], ...a: Atom[]) => any[]\n ) { }\n eval(context: any): any {\n if (context === undefined) {\n return undefined;\n }\n const input = Array.isArray(context) ? context : [context];\n return this.impl(input, ...this.args);\n }\n}\n\nconst PARENTHESES_PARSELET: PrefixParselet = {\n parse(parser: Parser) {\n const expr = parser.parse();\n if (!parser.match(')')) {\n throw new Error('Parse error: expected `)`');\n }\n return expr;\n }\n};\n\nconst FUNCTION_CALL_PARSELET: InfixParselet = {\n parse(parser: Parser, left: Atom) {\n if (!(left instanceof SymbolAtom)) {\n throw new Error('Unexpected parentheses');\n }\n\n if (!(left.name in functions)) {\n throw new Error('Unrecognized function: ' + left.name);\n }\n\n const args = [];\n while (!parser.match(')')) {\n args.push(parser.parse());\n }\n\n return new FunctionAtom(left.name, args, functions[left.name]);\n },\n precedence: Precedence.FunctionCall\n};\n\nconst parserBuilder = new ParserBuilder()\n .registerPrefix('StringLiteral', { parse: (_, token) => new LiteralAtom(token.value.substring(1, token.value.length - 1)) })\n .registerPrefix('Number', { parse: (_, token) => new LiteralAtom(parseFloat(token.value)) })\n .registerPrefix('Symbol', { parse: (_, token) => new SymbolAtom(token.value) })\n .registerPrefix('(', PARENTHESES_PARSELET)\n .registerInfix('(', FUNCTION_CALL_PARSELET)\n .prefix('-', Precedence.Negate, (_, right) => new UnaryOperatorAtom(right, x => -x))\n .infixLeft('.', Precedence.Dot, (left, _, right) => new DotAtom(left, right))\n .infixRight('^', Precedence.Exp, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x ** y))\n .infixLeft('/', Precedence.MulDiv, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x / y))\n .infixLeft('*', Precedence.MulDiv, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x * y))\n .infixLeft('+', Precedence.AddSub, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x + y))\n .infixLeft('-', Precedence.AddSub, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x - y))\n .infixLeft('|', Precedence.Union, (left, _, right) => new UnionAtom(left, right))\n .infixLeft('=', Precedence.Equals, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x === y))\n .infixLeft('Symbol', Precedence.Union, (left: Atom, symbol: Token, right: Atom) => {\n switch (symbol.value) {\n case 'as':\n return new BinaryOperatorAtom(left, right, (x) => x);\n case 'is':\n return new IsAtom(left, right);\n case 'and':\n return new BinaryOperatorAtom(left, right, (x, y) => x && y);\n default:\n throw new Error('Cannot use ' + symbol.value + ' as infix operator');\n }\n });\n\nexport function parseFhirPath(input: string): FhirPathAtom {\n try {\n return new FhirPathAtom(input, parserBuilder.construct(input).parse());\n } catch (error) {\n throw new Error(`FhirPathError on \"${input}\": ${error}`);\n }\n}\n"]}
@@ -1,13 +0,0 @@
1
- export interface TokenMatcher {
2
- id: string;
3
- pattern: RegExp;
4
- }
5
- export interface Token extends TokenMatcher {
6
- value: string;
7
- }
8
- export declare class Tokenizer {
9
- private matchAll;
10
- constructor();
11
- tokenize(str: string): Token[];
12
- }
13
- export declare const tokenizer: Tokenizer;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tokenizer = exports.Tokenizer = void 0;
4
- const matchers = [
5
- { id: 'Comment', pattern: /\/\/.*$/ },
6
- { id: 'StringLiteral', pattern: /'[^']*'/ },
7
- { id: '(', pattern: /\(/ },
8
- { id: ')', pattern: /\)/ },
9
- { id: '*', pattern: /\*/ },
10
- { id: '/', pattern: /\// },
11
- { id: '+', pattern: /\+/ },
12
- { id: '-', pattern: /-/ },
13
- { id: '^', pattern: /\^/ },
14
- { id: '!', pattern: /!/ },
15
- { id: '.', pattern: /\./ },
16
- { id: '|', pattern: /\|/ },
17
- { id: '=', pattern: /=/ },
18
- { id: 'Number', pattern: /\d+/ },
19
- { id: 'Symbol', pattern: /\w+/ },
20
- ];
21
- class Tokenizer {
22
- constructor() {
23
- this.matchAll = new RegExp(matchers.map(matcher => matcher.pattern.source).join('|'), 'g');
24
- }
25
- tokenize(str) {
26
- // Double-execing the RegExp is actually not that slow. Faster than my attempted alternative implementation.
27
- // https://jsperf.com/tokenization-strategies-jkearl-pratt/1
28
- const tokens = str.match(this.matchAll);
29
- if (!tokens) {
30
- throw new Error('Could not tokenize');
31
- }
32
- return tokens.map(value => {
33
- return Object.assign(Object.assign({}, matchers.find(matcher => matcher.pattern.test(value))), { value });
34
- });
35
- }
36
- }
37
- exports.Tokenizer = Tokenizer;
38
- exports.tokenizer = new Tokenizer();
39
- //# sourceMappingURL=tokenize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../src/fhirpath/tokenize.ts"],"names":[],"mappings":";;;AAUA,MAAM,QAAQ,GAAmB;IAC/B,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;IACrC,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE;IAC3C,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IACzB,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IACzB,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IACzB,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;IAChC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;CACjC,CAAC;AAEF,MAAa,SAAS;IAGpB;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC;IAEM,QAAQ,CAAC,GAAW;QACzB,4GAA4G;QAC5G,4DAA4D;QAE5D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxB,uCACM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAkB,KAC1E,KAAK,IACL;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAvBD,8BAuBC;AAEY,QAAA,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC","sourcesContent":["\nexport interface TokenMatcher {\n id: string;\n pattern: RegExp;\n}\n\nexport interface Token extends TokenMatcher {\n value: string\n}\n\nconst matchers: TokenMatcher[] = [\n { id: 'Comment', pattern: /\\/\\/.*$/ },\n { id: 'StringLiteral', pattern: /'[^']*'/ },\n { id: '(', pattern: /\\(/ },\n { id: ')', pattern: /\\)/ },\n { id: '*', pattern: /\\*/ },\n { id: '/', pattern: /\\// },\n { id: '+', pattern: /\\+/ },\n { id: '-', pattern: /-/ },\n { id: '^', pattern: /\\^/ },\n { id: '!', pattern: /!/ },\n { id: '.', pattern: /\\./ },\n { id: '|', pattern: /\\|/ },\n { id: '=', pattern: /=/ },\n { id: 'Number', pattern: /\\d+/ },\n { id: 'Symbol', pattern: /\\w+/ },\n];\n\nexport class Tokenizer {\n private matchAll: RegExp\n\n public constructor() {\n this.matchAll = new RegExp(matchers.map(matcher => matcher.pattern.source).join('|'), 'g');\n }\n\n public tokenize(str: string): Token[] {\n // Double-execing the RegExp is actually not that slow. Faster than my attempted alternative implementation.\n // https://jsperf.com/tokenization-strategies-jkearl-pratt/1\n\n const tokens = str.match(this.matchAll);\n if (!tokens) {\n throw new Error('Could not tokenize');\n }\n\n return tokens.map(value => {\n return {\n ...(matchers.find(matcher => matcher.pattern.test(value)) as TokenMatcher),\n value\n };\n });\n }\n}\n\nexport const tokenizer = new Tokenizer();\n"]}
@@ -1,13 +0,0 @@
1
- /**
2
- * Applies a function to single value or an array of values.
3
- * @param context The context which will be passed to the function.
4
- * @param fn The function to apply.
5
- * @returns The result of the function.
6
- */
7
- export declare function applyMaybeArray(context: any, fn: (context: any) => any): any;
8
- /**
9
- * Converts any object into a boolean.
10
- * @param obj Any value or array of values.
11
- * @returns The converted boolean value according to FHIRPath rules.
12
- */
13
- export declare function toBoolean(obj: any): boolean;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBoolean = exports.applyMaybeArray = void 0;
4
- /**
5
- * Applies a function to single value or an array of values.
6
- * @param context The context which will be passed to the function.
7
- * @param fn The function to apply.
8
- * @returns The result of the function.
9
- */
10
- function applyMaybeArray(context, fn) {
11
- if (context === undefined) {
12
- return undefined;
13
- }
14
- if (Array.isArray(context)) {
15
- return context.map(e => fn(e)).filter(e => !!e).flat();
16
- }
17
- else {
18
- return fn(context);
19
- }
20
- }
21
- exports.applyMaybeArray = applyMaybeArray;
22
- /**
23
- * Converts any object into a boolean.
24
- * @param obj Any value or array of values.
25
- * @returns The converted boolean value according to FHIRPath rules.
26
- */
27
- function toBoolean(obj) {
28
- if (Array.isArray(obj) && obj.length === 0) {
29
- return false;
30
- }
31
- return !!obj;
32
- }
33
- exports.toBoolean = toBoolean;
34
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/fhirpath/utils.ts"],"names":[],"mappings":";;;AACA;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,OAAY,EAAE,EAAyB;IACrE,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACxD;SAAM;QACL,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;KACpB;AACH,CAAC;AATD,0CASC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,GAAQ;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1C,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,CAAC,GAAG,CAAC;AACf,CAAC;AALD,8BAKC","sourcesContent":["\n/**\n * Applies a function to single value or an array of values.\n * @param context The context which will be passed to the function.\n * @param fn The function to apply.\n * @returns The result of the function.\n */\nexport function applyMaybeArray(context: any, fn: (context: any) => any): any {\n if (context === undefined) {\n return undefined;\n }\n if (Array.isArray(context)) {\n return context.map(e => fn(e)).filter(e => !!e).flat();\n } else {\n return fn(context);\n }\n}\n\n/**\n * Converts any object into a boolean.\n * @param obj Any value or array of values.\n * @returns The converted boolean value according to FHIRPath rules.\n */\nexport function toBoolean(obj: any): boolean {\n if (Array.isArray(obj) && obj.length === 0) {\n return false;\n }\n return !!obj;\n}\n"]}