@medplum/core 0.2.0 → 0.4.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 (702) hide show
  1. package/README.md +32 -26
  2. package/dist/cjs/index.js +1769 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/index.min.js +16 -0
  5. package/dist/cjs/index.min.js.map +1 -0
  6. package/dist/esm/index.js +1721 -0
  7. package/dist/esm/index.js.map +1 -0
  8. package/dist/esm/index.min.js +16 -0
  9. package/dist/esm/index.min.js.map +1 -0
  10. package/dist/{cache.d.ts → types/cache.d.ts} +1 -0
  11. package/dist/{client.d.ts → types/client.d.ts} +115 -61
  12. package/dist/{crypto.d.ts → types/crypto.d.ts} +0 -0
  13. package/dist/{eventtarget.d.ts → types/eventtarget.d.ts} +0 -0
  14. package/dist/{format.d.ts → types/format.d.ts} +1 -1
  15. package/dist/{index.d.ts → types/index.d.ts} +0 -2
  16. package/dist/types/jwt.d.ts +5 -0
  17. package/dist/{outcomes.d.ts → types/outcomes.d.ts} +7 -2
  18. package/dist/{search.d.ts → types/search.d.ts} +3 -0
  19. package/dist/{searchparams.d.ts → types/searchparams.d.ts} +2 -1
  20. package/dist/{storage.d.ts → types/storage.d.ts} +0 -0
  21. package/dist/{types.d.ts → types/types.d.ts} +18 -4
  22. package/dist/{utils.d.ts → types/utils.d.ts} +1 -1
  23. package/package.json +14 -9
  24. package/rollup.config.js +36 -0
  25. package/dist/cache.js +0 -38
  26. package/dist/cache.js.map +0 -1
  27. package/dist/cache.test.d.ts +0 -1
  28. package/dist/cache.test.js +0 -29
  29. package/dist/cache.test.js.map +0 -1
  30. package/dist/client.js +0 -530
  31. package/dist/client.js.map +0 -1
  32. package/dist/client.test.d.ts +0 -1
  33. package/dist/client.test.js +0 -382
  34. package/dist/client.test.js.map +0 -1
  35. package/dist/crypto.js +0 -22
  36. package/dist/crypto.js.map +0 -1
  37. package/dist/eventtarget.js +0 -39
  38. package/dist/eventtarget.js.map +0 -1
  39. package/dist/eventtarget.test.d.ts +0 -1
  40. package/dist/eventtarget.test.js +0 -44
  41. package/dist/eventtarget.test.js.map +0 -1
  42. package/dist/fhir/AccessPolicy.d.ts +0 -75
  43. package/dist/fhir/AccessPolicy.js +0 -7
  44. package/dist/fhir/AccessPolicy.js.map +0 -1
  45. package/dist/fhir/Account.d.ts +0 -247
  46. package/dist/fhir/Account.js +0 -7
  47. package/dist/fhir/Account.js.map +0 -1
  48. package/dist/fhir/ActivityDefinition.d.ts +0 -500
  49. package/dist/fhir/ActivityDefinition.js +0 -7
  50. package/dist/fhir/ActivityDefinition.js.map +0 -1
  51. package/dist/fhir/Address.d.ts +0 -75
  52. package/dist/fhir/Address.js +0 -7
  53. package/dist/fhir/Address.js.map +0 -1
  54. package/dist/fhir/AdverseEvent.d.ts +0 -303
  55. package/dist/fhir/AdverseEvent.js +0 -7
  56. package/dist/fhir/AdverseEvent.js.map +0 -1
  57. package/dist/fhir/Age.d.ts +0 -47
  58. package/dist/fhir/Age.js +0 -7
  59. package/dist/fhir/Age.js.map +0 -1
  60. package/dist/fhir/AllergyIntolerance.d.ts +0 -283
  61. package/dist/fhir/AllergyIntolerance.js +0 -7
  62. package/dist/fhir/AllergyIntolerance.js.map +0 -1
  63. package/dist/fhir/Annotation.d.ts +0 -42
  64. package/dist/fhir/Annotation.js +0 -7
  65. package/dist/fhir/Annotation.js.map +0 -1
  66. package/dist/fhir/Appointment.d.ts +0 -284
  67. package/dist/fhir/Appointment.js +0 -7
  68. package/dist/fhir/Appointment.js.map +0 -1
  69. package/dist/fhir/AppointmentResponse.d.ts +0 -131
  70. package/dist/fhir/AppointmentResponse.js +0 -7
  71. package/dist/fhir/AppointmentResponse.js.map +0 -1
  72. package/dist/fhir/Attachment.d.ts +0 -58
  73. package/dist/fhir/Attachment.js +0 -7
  74. package/dist/fhir/Attachment.js.map +0 -1
  75. package/dist/fhir/AuditEvent.d.ts +0 -458
  76. package/dist/fhir/AuditEvent.js +0 -7
  77. package/dist/fhir/AuditEvent.js.map +0 -1
  78. package/dist/fhir/Basic.d.ts +0 -110
  79. package/dist/fhir/Basic.js +0 -7
  80. package/dist/fhir/Basic.js.map +0 -1
  81. package/dist/fhir/Binary.d.ts +0 -59
  82. package/dist/fhir/Binary.js +0 -7
  83. package/dist/fhir/Binary.js.map +0 -1
  84. package/dist/fhir/BiologicallyDerivedProduct.d.ts +0 -358
  85. package/dist/fhir/BiologicallyDerivedProduct.js +0 -7
  86. package/dist/fhir/BiologicallyDerivedProduct.js.map +0 -1
  87. package/dist/fhir/BodyStructure.d.ts +0 -119
  88. package/dist/fhir/BodyStructure.js +0 -7
  89. package/dist/fhir/BodyStructure.js.map +0 -1
  90. package/dist/fhir/Bot.d.ts +0 -49
  91. package/dist/fhir/Bot.js +0 -7
  92. package/dist/fhir/Bot.js.map +0 -1
  93. package/dist/fhir/Bundle.d.ts +0 -379
  94. package/dist/fhir/Bundle.js +0 -7
  95. package/dist/fhir/Bundle.js.map +0 -1
  96. package/dist/fhir/CapabilityStatement.d.ts +0 -1044
  97. package/dist/fhir/CapabilityStatement.js +0 -7
  98. package/dist/fhir/CapabilityStatement.js.map +0 -1
  99. package/dist/fhir/CarePlan.d.ts +0 -446
  100. package/dist/fhir/CarePlan.js +0 -7
  101. package/dist/fhir/CarePlan.js.map +0 -1
  102. package/dist/fhir/CareTeam.d.ts +0 -211
  103. package/dist/fhir/CareTeam.js +0 -7
  104. package/dist/fhir/CareTeam.js.map +0 -1
  105. package/dist/fhir/CatalogEntry.d.ts +0 -195
  106. package/dist/fhir/CatalogEntry.js +0 -7
  107. package/dist/fhir/CatalogEntry.js.map +0 -1
  108. package/dist/fhir/ChargeItem.d.ts +0 -287
  109. package/dist/fhir/ChargeItem.js +0 -7
  110. package/dist/fhir/ChargeItem.js.map +0 -1
  111. package/dist/fhir/ChargeItemDefinition.d.ts +0 -401
  112. package/dist/fhir/ChargeItemDefinition.js +0 -7
  113. package/dist/fhir/ChargeItemDefinition.js.map +0 -1
  114. package/dist/fhir/Claim.d.ts +0 -1092
  115. package/dist/fhir/Claim.js +0 -7
  116. package/dist/fhir/Claim.js.map +0 -1
  117. package/dist/fhir/ClaimResponse.d.ts +0 -1040
  118. package/dist/fhir/ClaimResponse.js +0 -7
  119. package/dist/fhir/ClaimResponse.js.map +0 -1
  120. package/dist/fhir/ClientApplication.d.ts +0 -46
  121. package/dist/fhir/ClientApplication.js +0 -7
  122. package/dist/fhir/ClientApplication.js.map +0 -1
  123. package/dist/fhir/ClinicalImpression.d.ts +0 -306
  124. package/dist/fhir/ClinicalImpression.js +0 -7
  125. package/dist/fhir/ClinicalImpression.js.map +0 -1
  126. package/dist/fhir/CodeSystem.d.ts +0 -541
  127. package/dist/fhir/CodeSystem.js +0 -7
  128. package/dist/fhir/CodeSystem.js.map +0 -1
  129. package/dist/fhir/CodeableConcept.d.ts +0 -33
  130. package/dist/fhir/CodeableConcept.js +0 -7
  131. package/dist/fhir/CodeableConcept.js.map +0 -1
  132. package/dist/fhir/Coding.d.ts +0 -50
  133. package/dist/fhir/Coding.js +0 -7
  134. package/dist/fhir/Coding.js.map +0 -1
  135. package/dist/fhir/Communication.d.ts +0 -264
  136. package/dist/fhir/Communication.js +0 -7
  137. package/dist/fhir/Communication.js.map +0 -1
  138. package/dist/fhir/CommunicationRequest.d.ts +0 -261
  139. package/dist/fhir/CommunicationRequest.js +0 -7
  140. package/dist/fhir/CommunicationRequest.js.map +0 -1
  141. package/dist/fhir/CompartmentDefinition.d.ts +0 -217
  142. package/dist/fhir/CompartmentDefinition.js +0 -7
  143. package/dist/fhir/CompartmentDefinition.js.map +0 -1
  144. package/dist/fhir/Composition.d.ts +0 -429
  145. package/dist/fhir/Composition.js +0 -7
  146. package/dist/fhir/Composition.js.map +0 -1
  147. package/dist/fhir/ConceptMap.d.ts +0 -518
  148. package/dist/fhir/ConceptMap.js +0 -7
  149. package/dist/fhir/ConceptMap.js.map +0 -1
  150. package/dist/fhir/Condition.d.ts +0 -326
  151. package/dist/fhir/Condition.js +0 -7
  152. package/dist/fhir/Condition.js.map +0 -1
  153. package/dist/fhir/Consent.d.ts +0 -460
  154. package/dist/fhir/Consent.js +0 -7
  155. package/dist/fhir/Consent.js.map +0 -1
  156. package/dist/fhir/ContactDetail.d.ts +0 -31
  157. package/dist/fhir/ContactDetail.js +0 -7
  158. package/dist/fhir/ContactDetail.js.map +0 -1
  159. package/dist/fhir/ContactPoint.d.ts +0 -47
  160. package/dist/fhir/ContactPoint.js +0 -7
  161. package/dist/fhir/ContactPoint.js.map +0 -1
  162. package/dist/fhir/Contract.d.ts +0 -1452
  163. package/dist/fhir/Contract.js +0 -7
  164. package/dist/fhir/Contract.js.map +0 -1
  165. package/dist/fhir/Contributor.d.ts +0 -37
  166. package/dist/fhir/Contributor.js +0 -7
  167. package/dist/fhir/Contributor.js.map +0 -1
  168. package/dist/fhir/Count.d.ts +0 -49
  169. package/dist/fhir/Count.js +0 -7
  170. package/dist/fhir/Count.js.map +0 -1
  171. package/dist/fhir/Coverage.d.ts +0 -327
  172. package/dist/fhir/Coverage.js +0 -7
  173. package/dist/fhir/Coverage.js.map +0 -1
  174. package/dist/fhir/CoverageEligibilityRequest.d.ts +0 -404
  175. package/dist/fhir/CoverageEligibilityRequest.js +0 -7
  176. package/dist/fhir/CoverageEligibilityRequest.js.map +0 -1
  177. package/dist/fhir/CoverageEligibilityResponse.d.ts +0 -434
  178. package/dist/fhir/CoverageEligibilityResponse.js +0 -7
  179. package/dist/fhir/CoverageEligibilityResponse.js.map +0 -1
  180. package/dist/fhir/DataRequirement.d.ts +0 -239
  181. package/dist/fhir/DataRequirement.js +0 -7
  182. package/dist/fhir/DataRequirement.js.map +0 -1
  183. package/dist/fhir/DetectedIssue.d.ts +0 -252
  184. package/dist/fhir/DetectedIssue.js +0 -7
  185. package/dist/fhir/DetectedIssue.js.map +0 -1
  186. package/dist/fhir/Device.d.ts +0 -493
  187. package/dist/fhir/Device.js +0 -7
  188. package/dist/fhir/Device.js.map +0 -1
  189. package/dist/fhir/DeviceDefinition.d.ts +0 -486
  190. package/dist/fhir/DeviceDefinition.js +0 -7
  191. package/dist/fhir/DeviceDefinition.js.map +0 -1
  192. package/dist/fhir/DeviceMetric.d.ts +0 -199
  193. package/dist/fhir/DeviceMetric.js +0 -7
  194. package/dist/fhir/DeviceMetric.js.map +0 -1
  195. package/dist/fhir/DeviceRequest.d.ts +0 -296
  196. package/dist/fhir/DeviceRequest.js +0 -7
  197. package/dist/fhir/DeviceRequest.js.map +0 -1
  198. package/dist/fhir/DeviceUseStatement.d.ts +0 -168
  199. package/dist/fhir/DeviceUseStatement.js +0 -7
  200. package/dist/fhir/DeviceUseStatement.js.map +0 -1
  201. package/dist/fhir/DiagnosticReport.d.ts +0 -254
  202. package/dist/fhir/DiagnosticReport.js +0 -7
  203. package/dist/fhir/DiagnosticReport.js.map +0 -1
  204. package/dist/fhir/Distance.d.ts +0 -47
  205. package/dist/fhir/Distance.js +0 -7
  206. package/dist/fhir/Distance.js.map +0 -1
  207. package/dist/fhir/DocumentManifest.d.ts +0 -196
  208. package/dist/fhir/DocumentManifest.js +0 -7
  209. package/dist/fhir/DocumentManifest.js.map +0 -1
  210. package/dist/fhir/DocumentReference.d.ts +0 -349
  211. package/dist/fhir/DocumentReference.js +0 -7
  212. package/dist/fhir/DocumentReference.js.map +0 -1
  213. package/dist/fhir/Dosage.d.ts +0 -152
  214. package/dist/fhir/Dosage.js +0 -7
  215. package/dist/fhir/Dosage.js.map +0 -1
  216. package/dist/fhir/Duration.d.ts +0 -46
  217. package/dist/fhir/Duration.js +0 -7
  218. package/dist/fhir/Duration.js.map +0 -1
  219. package/dist/fhir/EffectEvidenceSynthesis.d.ts +0 -591
  220. package/dist/fhir/EffectEvidenceSynthesis.js +0 -7
  221. package/dist/fhir/EffectEvidenceSynthesis.js.map +0 -1
  222. package/dist/fhir/Element.d.ts +0 -21
  223. package/dist/fhir/Element.js +0 -7
  224. package/dist/fhir/Element.js.map +0 -1
  225. package/dist/fhir/ElementDefinition.d.ts +0 -2701
  226. package/dist/fhir/ElementDefinition.js +0 -7
  227. package/dist/fhir/ElementDefinition.js.map +0 -1
  228. package/dist/fhir/Encounter.d.ts +0 -558
  229. package/dist/fhir/Encounter.js +0 -7
  230. package/dist/fhir/Encounter.js.map +0 -1
  231. package/dist/fhir/Endpoint.d.ts +0 -140
  232. package/dist/fhir/Endpoint.js +0 -7
  233. package/dist/fhir/Endpoint.js.map +0 -1
  234. package/dist/fhir/EnrollmentRequest.d.ts +0 -113
  235. package/dist/fhir/EnrollmentRequest.js +0 -7
  236. package/dist/fhir/EnrollmentRequest.js.map +0 -1
  237. package/dist/fhir/EnrollmentResponse.d.ts +0 -117
  238. package/dist/fhir/EnrollmentResponse.js +0 -7
  239. package/dist/fhir/EnrollmentResponse.js.map +0 -1
  240. package/dist/fhir/EpisodeOfCare.d.ts +0 -246
  241. package/dist/fhir/EpisodeOfCare.js +0 -7
  242. package/dist/fhir/EpisodeOfCare.js.map +0 -1
  243. package/dist/fhir/EventDefinition.d.ts +0 -253
  244. package/dist/fhir/EventDefinition.js +0 -7
  245. package/dist/fhir/EventDefinition.js.map +0 -1
  246. package/dist/fhir/Evidence.d.ts +0 -252
  247. package/dist/fhir/Evidence.js +0 -7
  248. package/dist/fhir/Evidence.js.map +0 -1
  249. package/dist/fhir/EvidenceVariable.d.ts +0 -370
  250. package/dist/fhir/EvidenceVariable.js +0 -7
  251. package/dist/fhir/EvidenceVariable.js.map +0 -1
  252. package/dist/fhir/ExampleScenario.d.ts +0 -628
  253. package/dist/fhir/ExampleScenario.js +0 -7
  254. package/dist/fhir/ExampleScenario.js.map +0 -1
  255. package/dist/fhir/ExplanationOfBenefit.d.ts +0 -1841
  256. package/dist/fhir/ExplanationOfBenefit.js +0 -7
  257. package/dist/fhir/ExplanationOfBenefit.js.map +0 -1
  258. package/dist/fhir/Expression.d.ts +0 -45
  259. package/dist/fhir/Expression.js +0 -7
  260. package/dist/fhir/Expression.js.map +0 -1
  261. package/dist/fhir/Extension.d.ts +0 -306
  262. package/dist/fhir/Extension.js +0 -7
  263. package/dist/fhir/Extension.js.map +0 -1
  264. package/dist/fhir/FamilyMemberHistory.d.ts +0 -306
  265. package/dist/fhir/FamilyMemberHistory.js +0 -7
  266. package/dist/fhir/FamilyMemberHistory.js.map +0 -1
  267. package/dist/fhir/Flag.d.ts +0 -132
  268. package/dist/fhir/Flag.js +0 -7
  269. package/dist/fhir/Flag.js.map +0 -1
  270. package/dist/fhir/Goal.d.ts +0 -299
  271. package/dist/fhir/Goal.js +0 -7
  272. package/dist/fhir/Goal.js.map +0 -1
  273. package/dist/fhir/GraphDefinition.d.ts +0 -350
  274. package/dist/fhir/GraphDefinition.js +0 -7
  275. package/dist/fhir/GraphDefinition.js.map +0 -1
  276. package/dist/fhir/Group.d.ts +0 -271
  277. package/dist/fhir/Group.js +0 -7
  278. package/dist/fhir/Group.js.map +0 -1
  279. package/dist/fhir/GuidanceResponse.d.ts +0 -196
  280. package/dist/fhir/GuidanceResponse.js +0 -7
  281. package/dist/fhir/GuidanceResponse.js.map +0 -1
  282. package/dist/fhir/HealthcareService.d.ts +0 -356
  283. package/dist/fhir/HealthcareService.js +0 -7
  284. package/dist/fhir/HealthcareService.js.map +0 -1
  285. package/dist/fhir/HumanName.d.ts +0 -58
  286. package/dist/fhir/HumanName.js +0 -7
  287. package/dist/fhir/HumanName.js.map +0 -1
  288. package/dist/fhir/Identifier.d.ts +0 -53
  289. package/dist/fhir/Identifier.js +0 -7
  290. package/dist/fhir/Identifier.js.map +0 -1
  291. package/dist/fhir/ImagingStudy.d.ts +0 -407
  292. package/dist/fhir/ImagingStudy.js +0 -7
  293. package/dist/fhir/ImagingStudy.js.map +0 -1
  294. package/dist/fhir/Immunization.d.ts +0 -444
  295. package/dist/fhir/Immunization.js +0 -7
  296. package/dist/fhir/Immunization.js.map +0 -1
  297. package/dist/fhir/ImmunizationEvaluation.d.ts +0 -149
  298. package/dist/fhir/ImmunizationEvaluation.js +0 -7
  299. package/dist/fhir/ImmunizationEvaluation.js.map +0 -1
  300. package/dist/fhir/ImmunizationRecommendation.d.ts +0 -254
  301. package/dist/fhir/ImmunizationRecommendation.js +0 -7
  302. package/dist/fhir/ImmunizationRecommendation.js.map +0 -1
  303. package/dist/fhir/ImplementationGuide.d.ts +0 -824
  304. package/dist/fhir/ImplementationGuide.js +0 -7
  305. package/dist/fhir/ImplementationGuide.js.map +0 -1
  306. package/dist/fhir/InsurancePlan.d.ts +0 -624
  307. package/dist/fhir/InsurancePlan.js +0 -7
  308. package/dist/fhir/InsurancePlan.js.map +0 -1
  309. package/dist/fhir/Invoice.d.ts +0 -346
  310. package/dist/fhir/Invoice.js +0 -7
  311. package/dist/fhir/Invoice.js.map +0 -1
  312. package/dist/fhir/JsonWebKey.d.ts +0 -99
  313. package/dist/fhir/JsonWebKey.js +0 -7
  314. package/dist/fhir/JsonWebKey.js.map +0 -1
  315. package/dist/fhir/Library.d.ts +0 -277
  316. package/dist/fhir/Library.js +0 -7
  317. package/dist/fhir/Library.js.map +0 -1
  318. package/dist/fhir/Linkage.d.ts +0 -146
  319. package/dist/fhir/Linkage.js +0 -7
  320. package/dist/fhir/Linkage.js.map +0 -1
  321. package/dist/fhir/List.d.ts +0 -200
  322. package/dist/fhir/List.js +0 -7
  323. package/dist/fhir/List.js.map +0 -1
  324. package/dist/fhir/Location.d.ts +0 -277
  325. package/dist/fhir/Location.js +0 -7
  326. package/dist/fhir/Location.js.map +0 -1
  327. package/dist/fhir/Login.d.ts +0 -119
  328. package/dist/fhir/Login.js +0 -7
  329. package/dist/fhir/Login.js.map +0 -1
  330. package/dist/fhir/MarketingStatus.d.ts +0 -82
  331. package/dist/fhir/MarketingStatus.js +0 -7
  332. package/dist/fhir/MarketingStatus.js.map +0 -1
  333. package/dist/fhir/Measure.d.ts +0 -620
  334. package/dist/fhir/Measure.js +0 -7
  335. package/dist/fhir/Measure.js.map +0 -1
  336. package/dist/fhir/MeasureReport.d.ts +0 -463
  337. package/dist/fhir/MeasureReport.js +0 -7
  338. package/dist/fhir/MeasureReport.js.map +0 -1
  339. package/dist/fhir/Media.d.ts +0 -205
  340. package/dist/fhir/Media.js +0 -7
  341. package/dist/fhir/Media.js.map +0 -1
  342. package/dist/fhir/Medication.d.ts +0 -230
  343. package/dist/fhir/Medication.js +0 -7
  344. package/dist/fhir/Medication.js.map +0 -1
  345. package/dist/fhir/MedicationAdministration.d.ts +0 -352
  346. package/dist/fhir/MedicationAdministration.js +0 -7
  347. package/dist/fhir/MedicationAdministration.js.map +0 -1
  348. package/dist/fhir/MedicationDispense.d.ts +0 -343
  349. package/dist/fhir/MedicationDispense.js +0 -7
  350. package/dist/fhir/MedicationDispense.js.map +0 -1
  351. package/dist/fhir/MedicationKnowledge.d.ts +0 -992
  352. package/dist/fhir/MedicationKnowledge.js +0 -7
  353. package/dist/fhir/MedicationKnowledge.js.map +0 -1
  354. package/dist/fhir/MedicationRequest.d.ts +0 -481
  355. package/dist/fhir/MedicationRequest.js +0 -7
  356. package/dist/fhir/MedicationRequest.js.map +0 -1
  357. package/dist/fhir/MedicationStatement.d.ts +0 -228
  358. package/dist/fhir/MedicationStatement.js +0 -7
  359. package/dist/fhir/MedicationStatement.js.map +0 -1
  360. package/dist/fhir/MedicinalProduct.d.ts +0 -453
  361. package/dist/fhir/MedicinalProduct.js +0 -7
  362. package/dist/fhir/MedicinalProduct.js.map +0 -1
  363. package/dist/fhir/MedicinalProductAuthorization.d.ts +0 -271
  364. package/dist/fhir/MedicinalProductAuthorization.js +0 -7
  365. package/dist/fhir/MedicinalProductAuthorization.js.map +0 -1
  366. package/dist/fhir/MedicinalProductContraindication.d.ts +0 -170
  367. package/dist/fhir/MedicinalProductContraindication.js +0 -7
  368. package/dist/fhir/MedicinalProductContraindication.js.map +0 -1
  369. package/dist/fhir/MedicinalProductIndication.d.ts +0 -179
  370. package/dist/fhir/MedicinalProductIndication.js +0 -7
  371. package/dist/fhir/MedicinalProductIndication.js.map +0 -1
  372. package/dist/fhir/MedicinalProductIngredient.d.ts +0 -336
  373. package/dist/fhir/MedicinalProductIngredient.js +0 -7
  374. package/dist/fhir/MedicinalProductIngredient.js.map +0 -1
  375. package/dist/fhir/MedicinalProductInteraction.d.ts +0 -158
  376. package/dist/fhir/MedicinalProductInteraction.js +0 -7
  377. package/dist/fhir/MedicinalProductInteraction.js.map +0 -1
  378. package/dist/fhir/MedicinalProductManufactured.d.ts +0 -113
  379. package/dist/fhir/MedicinalProductManufactured.js +0 -7
  380. package/dist/fhir/MedicinalProductManufactured.js.map +0 -1
  381. package/dist/fhir/MedicinalProductPackaged.d.ts +0 -259
  382. package/dist/fhir/MedicinalProductPackaged.js +0 -7
  383. package/dist/fhir/MedicinalProductPackaged.js.map +0 -1
  384. package/dist/fhir/MedicinalProductPharmaceutical.d.ts +0 -331
  385. package/dist/fhir/MedicinalProductPharmaceutical.js +0 -7
  386. package/dist/fhir/MedicinalProductPharmaceutical.js.map +0 -1
  387. package/dist/fhir/MedicinalProductUndesirableEffect.d.ts +0 -101
  388. package/dist/fhir/MedicinalProductUndesirableEffect.js +0 -7
  389. package/dist/fhir/MedicinalProductUndesirableEffect.js.map +0 -1
  390. package/dist/fhir/MessageDefinition.d.ts +0 -330
  391. package/dist/fhir/MessageDefinition.js +0 -7
  392. package/dist/fhir/MessageDefinition.js.map +0 -1
  393. package/dist/fhir/MessageHeader.d.ts +0 -323
  394. package/dist/fhir/MessageHeader.js +0 -7
  395. package/dist/fhir/MessageHeader.js.map +0 -1
  396. package/dist/fhir/Meta.d.ts +0 -75
  397. package/dist/fhir/Meta.js +0 -7
  398. package/dist/fhir/Meta.js.map +0 -1
  399. package/dist/fhir/MolecularSequence.d.ts +0 -760
  400. package/dist/fhir/MolecularSequence.js +0 -7
  401. package/dist/fhir/MolecularSequence.js.map +0 -1
  402. package/dist/fhir/Money.d.ts +0 -29
  403. package/dist/fhir/Money.js +0 -7
  404. package/dist/fhir/Money.js.map +0 -1
  405. package/dist/fhir/NamingSystem.d.ts +0 -218
  406. package/dist/fhir/NamingSystem.js +0 -7
  407. package/dist/fhir/NamingSystem.js.map +0 -1
  408. package/dist/fhir/Narrative.d.ts +0 -32
  409. package/dist/fhir/Narrative.js +0 -7
  410. package/dist/fhir/Narrative.js.map +0 -1
  411. package/dist/fhir/NutritionOrder.d.ts +0 -566
  412. package/dist/fhir/NutritionOrder.js +0 -7
  413. package/dist/fhir/NutritionOrder.js.map +0 -1
  414. package/dist/fhir/Observation.d.ts +0 -520
  415. package/dist/fhir/Observation.js +0 -7
  416. package/dist/fhir/Observation.js.map +0 -1
  417. package/dist/fhir/ObservationDefinition.d.ts +0 -278
  418. package/dist/fhir/ObservationDefinition.js +0 -7
  419. package/dist/fhir/ObservationDefinition.js.map +0 -1
  420. package/dist/fhir/OperationDefinition.d.ts +0 -468
  421. package/dist/fhir/OperationDefinition.js +0 -7
  422. package/dist/fhir/OperationDefinition.js.map +0 -1
  423. package/dist/fhir/OperationOutcome.d.ts +0 -160
  424. package/dist/fhir/OperationOutcome.js +0 -7
  425. package/dist/fhir/OperationOutcome.js.map +0 -1
  426. package/dist/fhir/Organization.d.ts +0 -184
  427. package/dist/fhir/Organization.js +0 -7
  428. package/dist/fhir/Organization.js.map +0 -1
  429. package/dist/fhir/OrganizationAffiliation.d.ts +0 -145
  430. package/dist/fhir/OrganizationAffiliation.js +0 -7
  431. package/dist/fhir/OrganizationAffiliation.js.map +0 -1
  432. package/dist/fhir/ParameterDefinition.d.ts +0 -57
  433. package/dist/fhir/ParameterDefinition.js +0 -7
  434. package/dist/fhir/ParameterDefinition.js.map +0 -1
  435. package/dist/fhir/Parameters.d.ts +0 -319
  436. package/dist/fhir/Parameters.js +0 -7
  437. package/dist/fhir/Parameters.js.map +0 -1
  438. package/dist/fhir/PasswordChangeRequest.d.ts +0 -51
  439. package/dist/fhir/PasswordChangeRequest.js +0 -7
  440. package/dist/fhir/PasswordChangeRequest.js.map +0 -1
  441. package/dist/fhir/Patient.d.ts +0 -342
  442. package/dist/fhir/Patient.js +0 -7
  443. package/dist/fhir/Patient.js.map +0 -1
  444. package/dist/fhir/PaymentNotice.d.ts +0 -135
  445. package/dist/fhir/PaymentNotice.js +0 -7
  446. package/dist/fhir/PaymentNotice.js.map +0 -1
  447. package/dist/fhir/PaymentReconciliation.d.ts +0 -280
  448. package/dist/fhir/PaymentReconciliation.js +0 -7
  449. package/dist/fhir/PaymentReconciliation.js.map +0 -1
  450. package/dist/fhir/Period.d.ts +0 -32
  451. package/dist/fhir/Period.js +0 -7
  452. package/dist/fhir/Period.js.map +0 -1
  453. package/dist/fhir/Person.d.ts +0 -175
  454. package/dist/fhir/Person.js +0 -7
  455. package/dist/fhir/Person.js.map +0 -1
  456. package/dist/fhir/PlanDefinition.d.ts +0 -837
  457. package/dist/fhir/PlanDefinition.js +0 -7
  458. package/dist/fhir/PlanDefinition.js.map +0 -1
  459. package/dist/fhir/Population.d.ts +0 -62
  460. package/dist/fhir/Population.js +0 -7
  461. package/dist/fhir/Population.js.map +0 -1
  462. package/dist/fhir/Practitioner.d.ts +0 -191
  463. package/dist/fhir/Practitioner.js +0 -7
  464. package/dist/fhir/Practitioner.js.map +0 -1
  465. package/dist/fhir/PractitionerRole.d.ts +0 -259
  466. package/dist/fhir/PractitionerRole.js +0 -7
  467. package/dist/fhir/PractitionerRole.js.map +0 -1
  468. package/dist/fhir/Procedure.d.ts +0 -372
  469. package/dist/fhir/Procedure.js +0 -7
  470. package/dist/fhir/Procedure.js.map +0 -1
  471. package/dist/fhir/ProdCharacteristic.d.ts +0 -112
  472. package/dist/fhir/ProdCharacteristic.js +0 -7
  473. package/dist/fhir/ProdCharacteristic.js.map +0 -1
  474. package/dist/fhir/ProductShelfLife.d.ts +0 -70
  475. package/dist/fhir/ProductShelfLife.js +0 -7
  476. package/dist/fhir/ProductShelfLife.js.map +0 -1
  477. package/dist/fhir/Project.d.ts +0 -43
  478. package/dist/fhir/Project.js +0 -7
  479. package/dist/fhir/Project.js.map +0 -1
  480. package/dist/fhir/ProjectMembership.d.ts +0 -66
  481. package/dist/fhir/ProjectMembership.js +0 -7
  482. package/dist/fhir/ProjectMembership.js.map +0 -1
  483. package/dist/fhir/Provenance.d.ts +0 -258
  484. package/dist/fhir/Provenance.js +0 -7
  485. package/dist/fhir/Provenance.js.map +0 -1
  486. package/dist/fhir/Quantity.d.ts +0 -46
  487. package/dist/fhir/Quantity.js +0 -7
  488. package/dist/fhir/Quantity.js.map +0 -1
  489. package/dist/fhir/Questionnaire.d.ts +0 -603
  490. package/dist/fhir/Questionnaire.js +0 -7
  491. package/dist/fhir/Questionnaire.js.map +0 -1
  492. package/dist/fhir/QuestionnaireResponse.d.ts +0 -313
  493. package/dist/fhir/QuestionnaireResponse.js +0 -7
  494. package/dist/fhir/QuestionnaireResponse.js.map +0 -1
  495. package/dist/fhir/Range.d.ts +0 -30
  496. package/dist/fhir/Range.js +0 -7
  497. package/dist/fhir/Range.js.map +0 -1
  498. package/dist/fhir/Ratio.d.ts +0 -30
  499. package/dist/fhir/Ratio.js +0 -7
  500. package/dist/fhir/Ratio.js.map +0 -1
  501. package/dist/fhir/Reference.d.ts +0 -67
  502. package/dist/fhir/Reference.js +0 -7
  503. package/dist/fhir/Reference.js.map +0 -1
  504. package/dist/fhir/RefreshToken.d.ts +0 -45
  505. package/dist/fhir/RefreshToken.js +0 -7
  506. package/dist/fhir/RefreshToken.js.map +0 -1
  507. package/dist/fhir/RelatedArtifact.d.ts +0 -57
  508. package/dist/fhir/RelatedArtifact.js +0 -7
  509. package/dist/fhir/RelatedArtifact.js.map +0 -1
  510. package/dist/fhir/RelatedPerson.d.ts +0 -190
  511. package/dist/fhir/RelatedPerson.js +0 -7
  512. package/dist/fhir/RelatedPerson.js.map +0 -1
  513. package/dist/fhir/RequestGroup.d.ts +0 -434
  514. package/dist/fhir/RequestGroup.js +0 -7
  515. package/dist/fhir/RequestGroup.js.map +0 -1
  516. package/dist/fhir/ResearchDefinition.d.ts +0 -291
  517. package/dist/fhir/ResearchDefinition.js +0 -7
  518. package/dist/fhir/ResearchDefinition.js.map +0 -1
  519. package/dist/fhir/ResearchElementDefinition.d.ts +0 -431
  520. package/dist/fhir/ResearchElementDefinition.js +0 -7
  521. package/dist/fhir/ResearchElementDefinition.js.map +0 -1
  522. package/dist/fhir/ResearchStudy.d.ts +0 -318
  523. package/dist/fhir/ResearchStudy.js +0 -7
  524. package/dist/fhir/ResearchStudy.js.map +0 -1
  525. package/dist/fhir/ResearchSubject.d.ts +0 -119
  526. package/dist/fhir/ResearchSubject.js +0 -7
  527. package/dist/fhir/ResearchSubject.js.map +0 -1
  528. package/dist/fhir/Resource.d.ts +0 -156
  529. package/dist/fhir/Resource.js +0 -7
  530. package/dist/fhir/Resource.js.map +0 -1
  531. package/dist/fhir/RiskAssessment.d.ts +0 -246
  532. package/dist/fhir/RiskAssessment.js +0 -7
  533. package/dist/fhir/RiskAssessment.js.map +0 -1
  534. package/dist/fhir/RiskEvidenceSynthesis.d.ts +0 -530
  535. package/dist/fhir/RiskEvidenceSynthesis.js +0 -7
  536. package/dist/fhir/RiskEvidenceSynthesis.js.map +0 -1
  537. package/dist/fhir/SampledData.d.ts +0 -62
  538. package/dist/fhir/SampledData.js +0 -7
  539. package/dist/fhir/SampledData.js.map +0 -1
  540. package/dist/fhir/Schedule.d.ts +0 -129
  541. package/dist/fhir/Schedule.js +0 -7
  542. package/dist/fhir/Schedule.js.map +0 -1
  543. package/dist/fhir/SearchParameter.d.ts +0 -277
  544. package/dist/fhir/SearchParameter.js +0 -7
  545. package/dist/fhir/SearchParameter.js.map +0 -1
  546. package/dist/fhir/ServiceRequest.d.ts +0 -309
  547. package/dist/fhir/ServiceRequest.js +0 -7
  548. package/dist/fhir/ServiceRequest.js.map +0 -1
  549. package/dist/fhir/Signature.d.ts +0 -71
  550. package/dist/fhir/Signature.js +0 -7
  551. package/dist/fhir/Signature.js.map +0 -1
  552. package/dist/fhir/Slot.d.ts +0 -134
  553. package/dist/fhir/Slot.js +0 -7
  554. package/dist/fhir/Slot.js.map +0 -1
  555. package/dist/fhir/Specimen.d.ts +0 -366
  556. package/dist/fhir/Specimen.js +0 -7
  557. package/dist/fhir/Specimen.js.map +0 -1
  558. package/dist/fhir/SpecimenDefinition.d.ts +0 -363
  559. package/dist/fhir/SpecimenDefinition.js +0 -7
  560. package/dist/fhir/SpecimenDefinition.js.map +0 -1
  561. package/dist/fhir/StructureDefinition.d.ts +0 -438
  562. package/dist/fhir/StructureDefinition.js +0 -7
  563. package/dist/fhir/StructureDefinition.js.map +0 -1
  564. package/dist/fhir/StructureMap.d.ts +0 -904
  565. package/dist/fhir/StructureMap.js +0 -7
  566. package/dist/fhir/StructureMap.js.map +0 -1
  567. package/dist/fhir/Subscription.d.ts +0 -172
  568. package/dist/fhir/Subscription.js +0 -7
  569. package/dist/fhir/Subscription.js.map +0 -1
  570. package/dist/fhir/Substance.d.ts +0 -213
  571. package/dist/fhir/Substance.js +0 -7
  572. package/dist/fhir/Substance.js.map +0 -1
  573. package/dist/fhir/SubstanceAmount.d.ts +0 -115
  574. package/dist/fhir/SubstanceAmount.js +0 -7
  575. package/dist/fhir/SubstanceAmount.js.map +0 -1
  576. package/dist/fhir/SubstanceNucleicAcid.d.ts +0 -309
  577. package/dist/fhir/SubstanceNucleicAcid.js +0 -7
  578. package/dist/fhir/SubstanceNucleicAcid.js.map +0 -1
  579. package/dist/fhir/SubstancePolymer.d.ts +0 -405
  580. package/dist/fhir/SubstancePolymer.js +0 -7
  581. package/dist/fhir/SubstancePolymer.js.map +0 -1
  582. package/dist/fhir/SubstanceProtein.d.ts +0 -218
  583. package/dist/fhir/SubstanceProtein.js +0 -7
  584. package/dist/fhir/SubstanceProtein.js.map +0 -1
  585. package/dist/fhir/SubstanceReferenceInformation.d.ts +0 -330
  586. package/dist/fhir/SubstanceReferenceInformation.js +0 -7
  587. package/dist/fhir/SubstanceReferenceInformation.js.map +0 -1
  588. package/dist/fhir/SubstanceSourceMaterial.d.ts +0 -521
  589. package/dist/fhir/SubstanceSourceMaterial.js +0 -7
  590. package/dist/fhir/SubstanceSourceMaterial.js.map +0 -1
  591. package/dist/fhir/SubstanceSpecification.d.ts +0 -827
  592. package/dist/fhir/SubstanceSpecification.js +0 -7
  593. package/dist/fhir/SubstanceSpecification.js.map +0 -1
  594. package/dist/fhir/SupplyDelivery.d.ts +0 -205
  595. package/dist/fhir/SupplyDelivery.js +0 -7
  596. package/dist/fhir/SupplyDelivery.js.map +0 -1
  597. package/dist/fhir/SupplyRequest.d.ts +0 -237
  598. package/dist/fhir/SupplyRequest.js +0 -7
  599. package/dist/fhir/SupplyRequest.js.map +0 -1
  600. package/dist/fhir/Task.d.ts +0 -807
  601. package/dist/fhir/Task.js +0 -7
  602. package/dist/fhir/Task.js.map +0 -1
  603. package/dist/fhir/TerminologyCapabilities.d.ts +0 -716
  604. package/dist/fhir/TerminologyCapabilities.js +0 -7
  605. package/dist/fhir/TerminologyCapabilities.js.map +0 -1
  606. package/dist/fhir/TestReport.d.ts +0 -549
  607. package/dist/fhir/TestReport.js +0 -7
  608. package/dist/fhir/TestReport.js.map +0 -1
  609. package/dist/fhir/TestScript.d.ts +0 -1184
  610. package/dist/fhir/TestScript.js +0 -7
  611. package/dist/fhir/TestScript.js.map +0 -1
  612. package/dist/fhir/Timing.d.ts +0 -178
  613. package/dist/fhir/Timing.js +0 -7
  614. package/dist/fhir/Timing.js.map +0 -1
  615. package/dist/fhir/TriggerDefinition.d.ts +0 -65
  616. package/dist/fhir/TriggerDefinition.js +0 -7
  617. package/dist/fhir/TriggerDefinition.js.map +0 -1
  618. package/dist/fhir/UsageContext.d.ts +0 -61
  619. package/dist/fhir/UsageContext.js +0 -7
  620. package/dist/fhir/UsageContext.js.map +0 -1
  621. package/dist/fhir/User.d.ts +0 -45
  622. package/dist/fhir/User.js +0 -7
  623. package/dist/fhir/User.js.map +0 -1
  624. package/dist/fhir/ValueSet.d.ts +0 -725
  625. package/dist/fhir/ValueSet.js +0 -7
  626. package/dist/fhir/ValueSet.js.map +0 -1
  627. package/dist/fhir/VerificationResult.d.ts +0 -340
  628. package/dist/fhir/VerificationResult.js +0 -7
  629. package/dist/fhir/VerificationResult.js.map +0 -1
  630. package/dist/fhir/VisionPrescription.d.ts +0 -264
  631. package/dist/fhir/VisionPrescription.js +0 -7
  632. package/dist/fhir/VisionPrescription.js.map +0 -1
  633. package/dist/fhir/index.d.ts +0 -196
  634. package/dist/fhir/index.js +0 -213
  635. package/dist/fhir/index.js.map +0 -1
  636. package/dist/fhirpath/functions.d.ts +0 -6
  637. package/dist/fhirpath/functions.js +0 -349
  638. package/dist/fhirpath/functions.js.map +0 -1
  639. package/dist/fhirpath/functions.test.d.ts +0 -1
  640. package/dist/fhirpath/functions.test.js +0 -162
  641. package/dist/fhirpath/functions.test.js.map +0 -1
  642. package/dist/fhirpath/index.d.ts +0 -2
  643. package/dist/fhirpath/index.js +0 -15
  644. package/dist/fhirpath/index.js.map +0 -1
  645. package/dist/fhirpath/parse.d.ts +0 -10
  646. package/dist/fhirpath/parse.js +0 -285
  647. package/dist/fhirpath/parse.js.map +0 -1
  648. package/dist/fhirpath/parse.test.d.ts +0 -1
  649. package/dist/fhirpath/parse.test.js +0 -239
  650. package/dist/fhirpath/parse.test.js.map +0 -1
  651. package/dist/fhirpath/tokenize.d.ts +0 -13
  652. package/dist/fhirpath/tokenize.js +0 -43
  653. package/dist/fhirpath/tokenize.js.map +0 -1
  654. package/dist/fhirpath/tokenize.test.d.ts +0 -1
  655. package/dist/fhirpath/tokenize.test.js +0 -69
  656. package/dist/fhirpath/tokenize.test.js.map +0 -1
  657. package/dist/fhirpath/utils.d.ts +0 -13
  658. package/dist/fhirpath/utils.js +0 -34
  659. package/dist/fhirpath/utils.js.map +0 -1
  660. package/dist/fhirpath/utils.test.d.ts +0 -1
  661. package/dist/fhirpath/utils.test.js +0 -22
  662. package/dist/fhirpath/utils.test.js.map +0 -1
  663. package/dist/format.js +0 -56
  664. package/dist/format.js.map +0 -1
  665. package/dist/format.test.d.ts +0 -1
  666. package/dist/format.test.js +0 -127
  667. package/dist/format.test.js.map +0 -1
  668. package/dist/index.js +0 -22
  669. package/dist/index.js.map +0 -1
  670. package/dist/index.test.d.ts +0 -1
  671. package/dist/index.test.js +0 -11
  672. package/dist/index.test.js.map +0 -1
  673. package/dist/jwt.d.ts +0 -5
  674. package/dist/jwt.js +0 -28
  675. package/dist/jwt.js.map +0 -1
  676. package/dist/outcomes.js +0 -140
  677. package/dist/outcomes.js.map +0 -1
  678. package/dist/outcomes.test.d.ts +0 -1
  679. package/dist/outcomes.test.js +0 -38
  680. package/dist/outcomes.test.js.map +0 -1
  681. package/dist/search.js +0 -120
  682. package/dist/search.js.map +0 -1
  683. package/dist/search.test.d.ts +0 -1
  684. package/dist/search.test.js +0 -72
  685. package/dist/search.test.js.map +0 -1
  686. package/dist/searchparams.js +0 -127
  687. package/dist/searchparams.js.map +0 -1
  688. package/dist/searchparams.test.d.ts +0 -1
  689. package/dist/searchparams.test.js +0 -129
  690. package/dist/searchparams.test.js.map +0 -1
  691. package/dist/storage.js +0 -91
  692. package/dist/storage.js.map +0 -1
  693. package/dist/storage.test.d.ts +0 -1
  694. package/dist/storage.test.js +0 -50
  695. package/dist/storage.test.js.map +0 -1
  696. package/dist/types.js +0 -169
  697. package/dist/types.js.map +0 -1
  698. package/dist/utils.js +0 -234
  699. package/dist/utils.js.map +0 -1
  700. package/dist/utils.test.d.ts +0 -1
  701. package/dist/utils.test.js +0 -148
  702. package/dist/utils.test.js.map +0 -1
@@ -1,162 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const functions_1 = require("./functions");
4
- const isEven = {
5
- eval: num => num % 2 === 0
6
- };
7
- describe('FHIRPath functions', () => {
8
- test('empty', () => {
9
- expect(functions_1.functions.empty([])).toEqual(true);
10
- expect(functions_1.functions.empty([1])).toEqual(false);
11
- expect(functions_1.functions.empty([1, 2])).toEqual(false);
12
- });
13
- test('exists', () => {
14
- expect(functions_1.functions.exists([])).toEqual(false);
15
- expect(functions_1.functions.exists([1])).toEqual(true);
16
- expect(functions_1.functions.exists([1, 2])).toEqual(true);
17
- expect(functions_1.functions.exists([], isEven)).toEqual(false);
18
- expect(functions_1.functions.exists([1], isEven)).toEqual(false);
19
- expect(functions_1.functions.exists([1, 2], isEven)).toEqual(true);
20
- });
21
- test('all', () => {
22
- expect(functions_1.functions.all([], isEven)).toEqual(true);
23
- expect(functions_1.functions.all([1], isEven)).toEqual(false);
24
- expect(functions_1.functions.all([2], isEven)).toEqual(true);
25
- expect(functions_1.functions.all([1, 2], isEven)).toEqual(false);
26
- expect(functions_1.functions.all([2, 4], isEven)).toEqual(true);
27
- });
28
- test('allTrue', () => {
29
- expect(functions_1.functions.allTrue([])).toEqual(true);
30
- expect(functions_1.functions.allTrue([true])).toEqual(true);
31
- expect(functions_1.functions.allTrue([false])).toEqual(false);
32
- expect(functions_1.functions.allTrue([true, false])).toEqual(false);
33
- expect(functions_1.functions.allTrue([true, true])).toEqual(true);
34
- expect(functions_1.functions.allTrue([false, false])).toEqual(false);
35
- });
36
- test('anyTrue', () => {
37
- expect(functions_1.functions.anyTrue([])).toEqual(false);
38
- expect(functions_1.functions.anyTrue([true])).toEqual(true);
39
- expect(functions_1.functions.anyTrue([false])).toEqual(false);
40
- expect(functions_1.functions.anyTrue([true, false])).toEqual(true);
41
- expect(functions_1.functions.anyTrue([true, true])).toEqual(true);
42
- expect(functions_1.functions.anyTrue([false, false])).toEqual(false);
43
- });
44
- test('allFalse', () => {
45
- expect(functions_1.functions.allFalse([])).toEqual(true);
46
- expect(functions_1.functions.allFalse([true])).toEqual(false);
47
- expect(functions_1.functions.allFalse([false])).toEqual(true);
48
- expect(functions_1.functions.allFalse([true, false])).toEqual(false);
49
- expect(functions_1.functions.allFalse([true, true])).toEqual(false);
50
- expect(functions_1.functions.allFalse([false, false])).toEqual(true);
51
- });
52
- test('anyFalse', () => {
53
- expect(functions_1.functions.anyFalse([])).toEqual(false);
54
- expect(functions_1.functions.anyFalse([true])).toEqual(false);
55
- expect(functions_1.functions.anyFalse([false])).toEqual(true);
56
- expect(functions_1.functions.anyFalse([true, false])).toEqual(true);
57
- expect(functions_1.functions.anyFalse([true, true])).toEqual(false);
58
- expect(functions_1.functions.anyFalse([false, false])).toEqual(true);
59
- });
60
- test('count', () => {
61
- expect(functions_1.functions.count([])).toEqual(0);
62
- expect(functions_1.functions.count([1])).toEqual(1);
63
- expect(functions_1.functions.count([1, 2])).toEqual(2);
64
- });
65
- test('distinct', () => {
66
- expect(functions_1.functions.distinct([])).toEqual([]);
67
- expect(functions_1.functions.distinct([1])).toEqual([1]);
68
- expect(functions_1.functions.distinct([1, 2])).toEqual([1, 2]);
69
- expect(functions_1.functions.distinct([1, 1])).toEqual([1]);
70
- expect(functions_1.functions.distinct(['a'])).toEqual(['a']);
71
- expect(functions_1.functions.distinct(['a', 'b'])).toEqual(['a', 'b']);
72
- expect(functions_1.functions.distinct(['a', 'a'])).toEqual(['a']);
73
- });
74
- test('isDistinct', () => {
75
- expect(functions_1.functions.isDistinct([])).toEqual(true);
76
- expect(functions_1.functions.isDistinct([1])).toEqual(true);
77
- expect(functions_1.functions.isDistinct([1, 2])).toEqual(true);
78
- expect(functions_1.functions.isDistinct([1, 1])).toEqual(false);
79
- expect(functions_1.functions.isDistinct(['a'])).toEqual(true);
80
- expect(functions_1.functions.isDistinct(['a', 'b'])).toEqual(true);
81
- expect(functions_1.functions.isDistinct(['a', 'a'])).toEqual(false);
82
- });
83
- test('where', () => {
84
- expect(functions_1.functions.where([], isEven)).toEqual([]);
85
- expect(functions_1.functions.where([1], isEven)).toEqual([]);
86
- expect(functions_1.functions.where([1, 2], isEven)).toEqual([2]);
87
- expect(functions_1.functions.where([1, 2, 3, 4], isEven)).toEqual([2, 4]);
88
- });
89
- test('single', () => {
90
- expect(functions_1.functions.single([])).toEqual([]);
91
- expect(functions_1.functions.single([1])).toEqual([1]);
92
- expect(() => functions_1.functions.single([1, 2])).toThrowError('Expected input length one for single()');
93
- });
94
- test('first', () => {
95
- expect(functions_1.functions.first([])).toEqual([]);
96
- expect(functions_1.functions.first([1])).toEqual([1]);
97
- expect(functions_1.functions.first([1, 2])).toEqual([1]);
98
- expect(functions_1.functions.first([1, 2, 3])).toEqual([1]);
99
- expect(functions_1.functions.first([1, 2, 3, 4])).toEqual([1]);
100
- });
101
- test('last', () => {
102
- expect(functions_1.functions.last([])).toEqual([]);
103
- expect(functions_1.functions.last([1])).toEqual([1]);
104
- expect(functions_1.functions.last([1, 2])).toEqual([2]);
105
- expect(functions_1.functions.last([1, 2, 3])).toEqual([3]);
106
- expect(functions_1.functions.last([1, 2, 3, 4])).toEqual([4]);
107
- });
108
- test('tail', () => {
109
- expect(functions_1.functions.tail([])).toEqual([]);
110
- expect(functions_1.functions.tail([1])).toEqual([]);
111
- expect(functions_1.functions.tail([1, 2])).toEqual([2]);
112
- expect(functions_1.functions.tail([1, 2, 3])).toEqual([2, 3]);
113
- expect(functions_1.functions.tail([1, 2, 3, 4])).toEqual([2, 3, 4]);
114
- });
115
- test('skip', () => {
116
- const nonNumber = { eval: () => 'xyz' };
117
- expect(() => functions_1.functions.skip([1, 2, 3], nonNumber)).toThrowError('Expected a number for skip(num)');
118
- const num0 = { eval: () => 0 };
119
- expect(functions_1.functions.skip([], num0)).toEqual([]);
120
- expect(functions_1.functions.skip([1], num0)).toEqual([1]);
121
- expect(functions_1.functions.skip([1, 2], num0)).toEqual([1, 2]);
122
- expect(functions_1.functions.skip([1, 2, 3], num0)).toEqual([1, 2, 3]);
123
- const num1 = { eval: () => 1 };
124
- expect(functions_1.functions.skip([], num1)).toEqual([]);
125
- expect(functions_1.functions.skip([1], num1)).toEqual([]);
126
- expect(functions_1.functions.skip([1, 2], num1)).toEqual([2]);
127
- expect(functions_1.functions.skip([1, 2, 3], num1)).toEqual([2, 3]);
128
- const num2 = { eval: () => 2 };
129
- expect(functions_1.functions.skip([], num2)).toEqual([]);
130
- expect(functions_1.functions.skip([1], num2)).toEqual([]);
131
- expect(functions_1.functions.skip([1, 2], num2)).toEqual([]);
132
- expect(functions_1.functions.skip([1, 2, 3], num2)).toEqual([3]);
133
- });
134
- test('take', () => {
135
- const nonNumber = { eval: () => 'xyz' };
136
- expect(() => functions_1.functions.take([1, 2, 3], nonNumber)).toThrowError('Expected a number for take(num)');
137
- const num0 = { eval: () => 0 };
138
- expect(functions_1.functions.take([], num0)).toEqual([]);
139
- expect(functions_1.functions.take([1], num0)).toEqual([]);
140
- expect(functions_1.functions.take([1, 2], num0)).toEqual([]);
141
- expect(functions_1.functions.take([1, 2, 3], num0)).toEqual([]);
142
- const num1 = { eval: () => 1 };
143
- expect(functions_1.functions.take([], num1)).toEqual([]);
144
- expect(functions_1.functions.take([1], num1)).toEqual([1]);
145
- expect(functions_1.functions.take([1, 2], num1)).toEqual([1]);
146
- expect(functions_1.functions.take([1, 2, 3], num1)).toEqual([1]);
147
- const num2 = { eval: () => 2 };
148
- expect(functions_1.functions.take([], num2)).toEqual([]);
149
- expect(functions_1.functions.take([1], num2)).toEqual([1]);
150
- expect(functions_1.functions.take([1, 2], num2)).toEqual([1, 2]);
151
- expect(functions_1.functions.take([1, 2, 3], num2)).toEqual([1, 2]);
152
- });
153
- test('resolve', () => {
154
- expect(functions_1.functions.resolve(['Patient/123'])).toEqual([{ resourceType: 'Patient', id: '123' }]);
155
- expect(functions_1.functions.resolve([{ reference: 'Patient/123' }])).toEqual([{ resourceType: 'Patient', id: '123' }]);
156
- expect(functions_1.functions.resolve([123])).toEqual([]);
157
- });
158
- test('as', () => {
159
- expect(functions_1.functions.as([{ resourceType: 'Patient', id: '123' }])).toEqual([{ resourceType: 'Patient', id: '123' }]);
160
- });
161
- });
162
- //# sourceMappingURL=functions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.test.js","sourceRoot":"","sources":["../../src/fhirpath/functions.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { functions } from './functions';\nimport { Atom } from './parse';\n\nconst isEven: Atom = {\n eval: num => num % 2 === 0\n};\n\ndescribe('FHIRPath functions', () => {\n\n test('empty', () => {\n expect(functions.empty([])).toEqual(true);\n expect(functions.empty([1])).toEqual(false);\n expect(functions.empty([1, 2])).toEqual(false);\n });\n\n test('exists', () => {\n expect(functions.exists([])).toEqual(false);\n expect(functions.exists([1])).toEqual(true);\n expect(functions.exists([1, 2])).toEqual(true);\n expect(functions.exists([], isEven)).toEqual(false);\n expect(functions.exists([1], isEven)).toEqual(false);\n expect(functions.exists([1, 2], isEven)).toEqual(true);\n });\n\n test('all', () => {\n expect(functions.all([], isEven)).toEqual(true);\n expect(functions.all([1], isEven)).toEqual(false);\n expect(functions.all([2], isEven)).toEqual(true);\n expect(functions.all([1, 2], isEven)).toEqual(false);\n expect(functions.all([2, 4], isEven)).toEqual(true);\n });\n\n test('allTrue', () => {\n expect(functions.allTrue([])).toEqual(true);\n expect(functions.allTrue([true])).toEqual(true);\n expect(functions.allTrue([false])).toEqual(false);\n expect(functions.allTrue([true, false])).toEqual(false);\n expect(functions.allTrue([true, true])).toEqual(true);\n expect(functions.allTrue([false, false])).toEqual(false);\n });\n\n test('anyTrue', () => {\n expect(functions.anyTrue([])).toEqual(false);\n expect(functions.anyTrue([true])).toEqual(true);\n expect(functions.anyTrue([false])).toEqual(false);\n expect(functions.anyTrue([true, false])).toEqual(true);\n expect(functions.anyTrue([true, true])).toEqual(true);\n expect(functions.anyTrue([false, false])).toEqual(false);\n });\n\n test('allFalse', () => {\n expect(functions.allFalse([])).toEqual(true);\n expect(functions.allFalse([true])).toEqual(false);\n expect(functions.allFalse([false])).toEqual(true);\n expect(functions.allFalse([true, false])).toEqual(false);\n expect(functions.allFalse([true, true])).toEqual(false);\n expect(functions.allFalse([false, false])).toEqual(true);\n });\n\n test('anyFalse', () => {\n expect(functions.anyFalse([])).toEqual(false);\n expect(functions.anyFalse([true])).toEqual(false);\n expect(functions.anyFalse([false])).toEqual(true);\n expect(functions.anyFalse([true, false])).toEqual(true);\n expect(functions.anyFalse([true, true])).toEqual(false);\n expect(functions.anyFalse([false, false])).toEqual(true);\n });\n\n test('count', () => {\n expect(functions.count([])).toEqual(0);\n expect(functions.count([1])).toEqual(1);\n expect(functions.count([1, 2])).toEqual(2);\n });\n\n test('distinct', () => {\n expect(functions.distinct([])).toEqual([]);\n expect(functions.distinct([1])).toEqual([1]);\n expect(functions.distinct([1, 2])).toEqual([1, 2]);\n expect(functions.distinct([1, 1])).toEqual([1]);\n expect(functions.distinct(['a'])).toEqual(['a']);\n expect(functions.distinct(['a', 'b'])).toEqual(['a', 'b']);\n expect(functions.distinct(['a', 'a'])).toEqual(['a']);\n });\n\n test('isDistinct', () => {\n expect(functions.isDistinct([])).toEqual(true);\n expect(functions.isDistinct([1])).toEqual(true);\n expect(functions.isDistinct([1, 2])).toEqual(true);\n expect(functions.isDistinct([1, 1])).toEqual(false);\n expect(functions.isDistinct(['a'])).toEqual(true);\n expect(functions.isDistinct(['a', 'b'])).toEqual(true);\n expect(functions.isDistinct(['a', 'a'])).toEqual(false);\n });\n\n test('where', () => {\n expect(functions.where([], isEven)).toEqual([]);\n expect(functions.where([1], isEven)).toEqual([]);\n expect(functions.where([1, 2], isEven)).toEqual([2]);\n expect(functions.where([1, 2, 3, 4], isEven)).toEqual([2, 4]);\n });\n\n test('single', () => {\n expect(functions.single([])).toEqual([]);\n expect(functions.single([1])).toEqual([1]);\n expect(() => functions.single([1, 2])).toThrowError('Expected input length one for single()');\n });\n\n test('first', () => {\n expect(functions.first([])).toEqual([]);\n expect(functions.first([1])).toEqual([1]);\n expect(functions.first([1, 2])).toEqual([1]);\n expect(functions.first([1, 2, 3])).toEqual([1]);\n expect(functions.first([1, 2, 3, 4])).toEqual([1]);\n });\n\n test('last', () => {\n expect(functions.last([])).toEqual([]);\n expect(functions.last([1])).toEqual([1]);\n expect(functions.last([1, 2])).toEqual([2]);\n expect(functions.last([1, 2, 3])).toEqual([3]);\n expect(functions.last([1, 2, 3, 4])).toEqual([4]);\n });\n\n test('tail', () => {\n expect(functions.tail([])).toEqual([]);\n expect(functions.tail([1])).toEqual([]);\n expect(functions.tail([1, 2])).toEqual([2]);\n expect(functions.tail([1, 2, 3])).toEqual([2, 3]);\n expect(functions.tail([1, 2, 3, 4])).toEqual([2, 3, 4]);\n });\n\n test('skip', () => {\n const nonNumber: Atom = { eval: () => 'xyz' };\n expect(() => functions.skip([1, 2, 3], nonNumber)).toThrowError('Expected a number for skip(num)');\n\n const num0: Atom = { eval: () => 0 };\n expect(functions.skip([], num0)).toEqual([]);\n expect(functions.skip([1], num0)).toEqual([1]);\n expect(functions.skip([1, 2], num0)).toEqual([1, 2]);\n expect(functions.skip([1, 2, 3], num0)).toEqual([1, 2, 3]);\n\n const num1: Atom = { eval: () => 1 };\n expect(functions.skip([], num1)).toEqual([]);\n expect(functions.skip([1], num1)).toEqual([]);\n expect(functions.skip([1, 2], num1)).toEqual([2]);\n expect(functions.skip([1, 2, 3], num1)).toEqual([2, 3]);\n\n const num2: Atom = { eval: () => 2 };\n expect(functions.skip([], num2)).toEqual([]);\n expect(functions.skip([1], num2)).toEqual([]);\n expect(functions.skip([1, 2], num2)).toEqual([]);\n expect(functions.skip([1, 2, 3], num2)).toEqual([3]);\n });\n\n test('take', () => {\n const nonNumber: Atom = { eval: () => 'xyz' };\n expect(() => functions.take([1, 2, 3], nonNumber)).toThrowError('Expected a number for take(num)');\n\n const num0: Atom = { eval: () => 0 };\n expect(functions.take([], num0)).toEqual([]);\n expect(functions.take([1], num0)).toEqual([]);\n expect(functions.take([1, 2], num0)).toEqual([]);\n expect(functions.take([1, 2, 3], num0)).toEqual([]);\n\n const num1: Atom = { eval: () => 1 };\n expect(functions.take([], num1)).toEqual([]);\n expect(functions.take([1], num1)).toEqual([1]);\n expect(functions.take([1, 2], num1)).toEqual([1]);\n expect(functions.take([1, 2, 3], num1)).toEqual([1]);\n\n const num2: Atom = { eval: () => 2 };\n expect(functions.take([], num2)).toEqual([]);\n expect(functions.take([1], num2)).toEqual([1]);\n expect(functions.take([1, 2], num2)).toEqual([1, 2]);\n expect(functions.take([1, 2, 3], num2)).toEqual([1, 2]);\n });\n\n test('resolve', () => {\n expect(functions.resolve(['Patient/123'])).toEqual([{ resourceType: 'Patient', id: '123' }]);\n expect(functions.resolve([{ reference: 'Patient/123' }])).toEqual([{ resourceType: 'Patient', id: '123' }]);\n expect(functions.resolve([123])).toEqual([]);\n });\n\n test('as', () => {\n expect(functions.as([{ resourceType: 'Patient', id: '123' }])).toEqual([{ resourceType: 'Patient', id: '123' }]);\n });\n\n});\n"]}
@@ -1,2 +0,0 @@
1
- export * from './parse';
2
- export * from './tokenize';
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./parse"), exports);
14
- __exportStar(require("./tokenize"), exports);
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fhirpath/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB;AACxB,6CAA2B","sourcesContent":["export * from './parse';\nexport * from './tokenize';\n"]}
@@ -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,285 +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
- prefixParselets = {};
9
- infixParselets = {};
10
- registerInfix(tokenType, parselet) {
11
- this.infixParselets[tokenType] = parselet;
12
- return this;
13
- }
14
- registerPrefix(tokenType, parselet) {
15
- this.prefixParselets[tokenType] = parselet;
16
- return this;
17
- }
18
- prefix(tokenType, precedence, builder) {
19
- return this.registerPrefix(tokenType, {
20
- parse(parser, token) {
21
- const right = parser.parse(precedence);
22
- return builder(token, right);
23
- },
24
- });
25
- }
26
- infixLeft(tokenType, precedence, builder) {
27
- return this.registerInfix(tokenType, {
28
- parse(parser, left, token) {
29
- const right = parser.parse(precedence);
30
- return builder(left, token, right);
31
- },
32
- precedence
33
- });
34
- }
35
- infixRight(tokenType, precedence, builder) {
36
- return this.registerInfix(tokenType, {
37
- parse(parser, left, token) {
38
- const right = parser.parse(precedence - 1);
39
- return builder(left, token, right);
40
- },
41
- precedence
42
- });
43
- }
44
- construct(input) {
45
- return new Parser(tokenize_1.tokenizer.tokenize(input), this.prefixParselets, this.infixParselets);
46
- }
47
- }
48
- class Parser {
49
- tokens;
50
- prefixParselets;
51
- infixParselets;
52
- constructor(tokens, prefixParselets, infixParselets) {
53
- this.tokens = tokens;
54
- this.prefixParselets = prefixParselets;
55
- this.infixParselets = infixParselets;
56
- }
57
- match(expected) {
58
- const token = this.look();
59
- if (token?.id !== expected) {
60
- return false;
61
- }
62
- this.consume();
63
- return true;
64
- }
65
- parse(precedence = 0) {
66
- const token = this.consume();
67
- const prefix = this.prefixParselets[token.id];
68
- if (!prefix) {
69
- throw Error(`Parse error at ${token.value}. No matching prefix parselet.`);
70
- }
71
- let left = prefix.parse(this, token);
72
- while (precedence < this.getPrecedence()) {
73
- const next = this.consume();
74
- const infix = this.infixParselets[next.id];
75
- left = infix.parse(this, left, next);
76
- }
77
- return left;
78
- }
79
- getPrecedence() {
80
- const nextToken = this.look();
81
- if (!nextToken) {
82
- return 0;
83
- }
84
- const parser = this.infixParselets[nextToken.id];
85
- if (parser) {
86
- return parser.precedence;
87
- }
88
- return 0;
89
- }
90
- consume() {
91
- if (!this.tokens.length) {
92
- throw Error('Cant consume any more tokens.');
93
- }
94
- return this.tokens.shift();
95
- }
96
- look() {
97
- return this.tokens.length > 0 ? this.tokens[0] : undefined;
98
- }
99
- }
100
- class FhirPathAtom {
101
- original;
102
- child;
103
- constructor(original, child) {
104
- this.original = original;
105
- this.child = child;
106
- }
107
- eval(context) {
108
- try {
109
- const result = (0, utils_1.applyMaybeArray)(context, e => this.child.eval(e));
110
- if (Array.isArray(result)) {
111
- return result.flat();
112
- }
113
- else if (result === undefined || result === null) {
114
- return [];
115
- }
116
- else {
117
- return [result];
118
- }
119
- }
120
- catch (error) {
121
- throw new Error(`FhirPathError on "${this.original}": ${error}`);
122
- }
123
- }
124
- }
125
- exports.FhirPathAtom = FhirPathAtom;
126
- class LiteralAtom {
127
- value;
128
- constructor(value) {
129
- this.value = value;
130
- }
131
- eval() {
132
- return this.value;
133
- }
134
- }
135
- class SymbolAtom {
136
- name;
137
- constructor(name) {
138
- this.name = name;
139
- }
140
- eval(context) {
141
- return (0, utils_1.applyMaybeArray)(context, e => e.resourceType === this.name ? e : e[this.name]);
142
- }
143
- }
144
- class UnaryOperatorAtom {
145
- child;
146
- impl;
147
- constructor(child, impl) {
148
- this.child = child;
149
- this.impl = impl;
150
- }
151
- eval(context) {
152
- return this.impl(this.child.eval(context));
153
- }
154
- }
155
- class BinaryOperatorAtom {
156
- left;
157
- right;
158
- impl;
159
- constructor(left, right, impl) {
160
- this.left = left;
161
- this.right = right;
162
- this.impl = impl;
163
- }
164
- eval(context) {
165
- return this.impl(this.left.eval(context), this.right.eval(context));
166
- }
167
- }
168
- class DotAtom {
169
- left;
170
- right;
171
- constructor(left, right) {
172
- this.left = left;
173
- this.right = right;
174
- }
175
- eval(context) {
176
- return this.right.eval(this.left.eval(context));
177
- }
178
- }
179
- class UnionAtom {
180
- left;
181
- right;
182
- constructor(left, right) {
183
- this.left = left;
184
- this.right = right;
185
- }
186
- eval(context) {
187
- const leftResult = this.left.eval(context);
188
- const rightResult = this.right.eval(context);
189
- if (leftResult && rightResult) {
190
- return [leftResult, rightResult].flat();
191
- }
192
- return leftResult || rightResult;
193
- }
194
- }
195
- class IsAtom {
196
- left;
197
- right;
198
- constructor(left, right) {
199
- this.left = left;
200
- this.right = right;
201
- }
202
- eval(context) {
203
- const desiredResourceType = this.right.name;
204
- return (0, utils_1.applyMaybeArray)(this.left.eval(context), e => e?.resourceType === desiredResourceType ? e : undefined);
205
- }
206
- }
207
- class FunctionAtom {
208
- name;
209
- args;
210
- impl;
211
- constructor(name, args, impl) {
212
- this.name = name;
213
- this.args = args;
214
- this.impl = impl;
215
- }
216
- eval(context) {
217
- if (context === undefined) {
218
- return undefined;
219
- }
220
- const input = Array.isArray(context) ? context : [context];
221
- return this.impl(input, ...this.args);
222
- }
223
- }
224
- const PARENTHESES_PARSELET = {
225
- parse(parser) {
226
- const expr = parser.parse();
227
- if (!parser.match(')')) {
228
- throw new Error('Parse error: expected `)`');
229
- }
230
- return expr;
231
- }
232
- };
233
- const FUNCTION_CALL_PARSELET = {
234
- parse(parser, left) {
235
- if (!(left instanceof SymbolAtom)) {
236
- throw new Error('Unexpected parentheses');
237
- }
238
- if (!(left.name in functions_1.functions)) {
239
- throw new Error('Unrecognized function: ' + left.name);
240
- }
241
- const args = [];
242
- while (!parser.match(')')) {
243
- args.push(parser.parse());
244
- }
245
- return new FunctionAtom(left.name, args, functions_1.functions[left.name]);
246
- },
247
- precedence: 8 /* FunctionCall */
248
- };
249
- const parserBuilder = new ParserBuilder()
250
- .registerPrefix('StringLiteral', { parse: (_, token) => new LiteralAtom(token.value.substring(1, token.value.length - 1)) })
251
- .registerPrefix('Number', { parse: (_, token) => new LiteralAtom(parseFloat(token.value)) })
252
- .registerPrefix('Symbol', { parse: (_, token) => new SymbolAtom(token.value) })
253
- .registerPrefix('(', PARENTHESES_PARSELET)
254
- .registerInfix('(', FUNCTION_CALL_PARSELET)
255
- .prefix('-', 6 /* Negate */, (_, right) => new UnaryOperatorAtom(right, x => -x))
256
- .infixLeft('.', 7 /* Dot */, (left, _, right) => new DotAtom(left, right))
257
- .infixRight('^', 5 /* Exp */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x ** y))
258
- .infixLeft('/', 4 /* MulDiv */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x / y))
259
- .infixLeft('*', 4 /* MulDiv */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x * y))
260
- .infixLeft('+', 3 /* AddSub */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x + y))
261
- .infixLeft('-', 3 /* AddSub */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x - y))
262
- .infixLeft('|', 1 /* Union */, (left, _, right) => new UnionAtom(left, right))
263
- .infixLeft('=', 2 /* Equals */, (left, _, right) => new BinaryOperatorAtom(left, right, (x, y) => x === y))
264
- .infixLeft('Symbol', 1 /* Union */, (left, symbol, right) => {
265
- switch (symbol.value) {
266
- case 'as':
267
- return new BinaryOperatorAtom(left, right, (x) => x);
268
- case 'is':
269
- return new IsAtom(left, right);
270
- case 'and':
271
- return new BinaryOperatorAtom(left, right, (x, y) => x && y);
272
- default:
273
- throw new Error('Cannot use ' + symbol.value + ' as infix operator');
274
- }
275
- });
276
- function parseFhirPath(input) {
277
- try {
278
- return new FhirPathAtom(input, parserBuilder.construct(input).parse());
279
- }
280
- catch (error) {
281
- throw new Error(`FhirPathError on "${input}": ${error}`);
282
- }
283
- }
284
- exports.parseFhirPath = parseFhirPath;
285
- //# sourceMappingURL=parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/fhirpath/parse.ts"],"names":[],"mappings":"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","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 +0,0 @@
1
- export {};