@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.
- package/README.md +32 -26
- package/dist/cjs/index.js +1769 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/index.min.js +16 -0
- package/dist/cjs/index.min.js.map +1 -0
- package/dist/esm/index.js +1721 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.min.js +16 -0
- package/dist/esm/index.min.js.map +1 -0
- package/dist/{cache.d.ts → types/cache.d.ts} +1 -0
- package/dist/{client.d.ts → types/client.d.ts} +115 -61
- package/dist/{crypto.d.ts → types/crypto.d.ts} +0 -0
- package/dist/{eventtarget.d.ts → types/eventtarget.d.ts} +0 -0
- package/dist/{format.d.ts → types/format.d.ts} +1 -1
- package/dist/{index.d.ts → types/index.d.ts} +0 -2
- package/dist/types/jwt.d.ts +5 -0
- package/dist/{outcomes.d.ts → types/outcomes.d.ts} +7 -2
- package/dist/{search.d.ts → types/search.d.ts} +3 -0
- package/dist/{searchparams.d.ts → types/searchparams.d.ts} +2 -1
- package/dist/{storage.d.ts → types/storage.d.ts} +0 -0
- package/dist/{types.d.ts → types/types.d.ts} +18 -4
- package/dist/{utils.d.ts → types/utils.d.ts} +1 -1
- package/package.json +14 -9
- package/rollup.config.js +36 -0
- package/dist/cache.js +0 -38
- package/dist/cache.js.map +0 -1
- package/dist/cache.test.d.ts +0 -1
- package/dist/cache.test.js +0 -29
- package/dist/cache.test.js.map +0 -1
- package/dist/client.js +0 -530
- package/dist/client.js.map +0 -1
- package/dist/client.test.d.ts +0 -1
- package/dist/client.test.js +0 -382
- package/dist/client.test.js.map +0 -1
- package/dist/crypto.js +0 -22
- package/dist/crypto.js.map +0 -1
- package/dist/eventtarget.js +0 -39
- package/dist/eventtarget.js.map +0 -1
- package/dist/eventtarget.test.d.ts +0 -1
- package/dist/eventtarget.test.js +0 -44
- package/dist/eventtarget.test.js.map +0 -1
- package/dist/fhir/AccessPolicy.d.ts +0 -75
- package/dist/fhir/AccessPolicy.js +0 -7
- package/dist/fhir/AccessPolicy.js.map +0 -1
- package/dist/fhir/Account.d.ts +0 -247
- package/dist/fhir/Account.js +0 -7
- package/dist/fhir/Account.js.map +0 -1
- package/dist/fhir/ActivityDefinition.d.ts +0 -500
- package/dist/fhir/ActivityDefinition.js +0 -7
- package/dist/fhir/ActivityDefinition.js.map +0 -1
- package/dist/fhir/Address.d.ts +0 -75
- package/dist/fhir/Address.js +0 -7
- package/dist/fhir/Address.js.map +0 -1
- package/dist/fhir/AdverseEvent.d.ts +0 -303
- package/dist/fhir/AdverseEvent.js +0 -7
- package/dist/fhir/AdverseEvent.js.map +0 -1
- package/dist/fhir/Age.d.ts +0 -47
- package/dist/fhir/Age.js +0 -7
- package/dist/fhir/Age.js.map +0 -1
- package/dist/fhir/AllergyIntolerance.d.ts +0 -283
- package/dist/fhir/AllergyIntolerance.js +0 -7
- package/dist/fhir/AllergyIntolerance.js.map +0 -1
- package/dist/fhir/Annotation.d.ts +0 -42
- package/dist/fhir/Annotation.js +0 -7
- package/dist/fhir/Annotation.js.map +0 -1
- package/dist/fhir/Appointment.d.ts +0 -284
- package/dist/fhir/Appointment.js +0 -7
- package/dist/fhir/Appointment.js.map +0 -1
- package/dist/fhir/AppointmentResponse.d.ts +0 -131
- package/dist/fhir/AppointmentResponse.js +0 -7
- package/dist/fhir/AppointmentResponse.js.map +0 -1
- package/dist/fhir/Attachment.d.ts +0 -58
- package/dist/fhir/Attachment.js +0 -7
- package/dist/fhir/Attachment.js.map +0 -1
- package/dist/fhir/AuditEvent.d.ts +0 -458
- package/dist/fhir/AuditEvent.js +0 -7
- package/dist/fhir/AuditEvent.js.map +0 -1
- package/dist/fhir/Basic.d.ts +0 -110
- package/dist/fhir/Basic.js +0 -7
- package/dist/fhir/Basic.js.map +0 -1
- package/dist/fhir/Binary.d.ts +0 -59
- package/dist/fhir/Binary.js +0 -7
- package/dist/fhir/Binary.js.map +0 -1
- package/dist/fhir/BiologicallyDerivedProduct.d.ts +0 -358
- package/dist/fhir/BiologicallyDerivedProduct.js +0 -7
- package/dist/fhir/BiologicallyDerivedProduct.js.map +0 -1
- package/dist/fhir/BodyStructure.d.ts +0 -119
- package/dist/fhir/BodyStructure.js +0 -7
- package/dist/fhir/BodyStructure.js.map +0 -1
- package/dist/fhir/Bot.d.ts +0 -49
- package/dist/fhir/Bot.js +0 -7
- package/dist/fhir/Bot.js.map +0 -1
- package/dist/fhir/Bundle.d.ts +0 -379
- package/dist/fhir/Bundle.js +0 -7
- package/dist/fhir/Bundle.js.map +0 -1
- package/dist/fhir/CapabilityStatement.d.ts +0 -1044
- package/dist/fhir/CapabilityStatement.js +0 -7
- package/dist/fhir/CapabilityStatement.js.map +0 -1
- package/dist/fhir/CarePlan.d.ts +0 -446
- package/dist/fhir/CarePlan.js +0 -7
- package/dist/fhir/CarePlan.js.map +0 -1
- package/dist/fhir/CareTeam.d.ts +0 -211
- package/dist/fhir/CareTeam.js +0 -7
- package/dist/fhir/CareTeam.js.map +0 -1
- package/dist/fhir/CatalogEntry.d.ts +0 -195
- package/dist/fhir/CatalogEntry.js +0 -7
- package/dist/fhir/CatalogEntry.js.map +0 -1
- package/dist/fhir/ChargeItem.d.ts +0 -287
- package/dist/fhir/ChargeItem.js +0 -7
- package/dist/fhir/ChargeItem.js.map +0 -1
- package/dist/fhir/ChargeItemDefinition.d.ts +0 -401
- package/dist/fhir/ChargeItemDefinition.js +0 -7
- package/dist/fhir/ChargeItemDefinition.js.map +0 -1
- package/dist/fhir/Claim.d.ts +0 -1092
- package/dist/fhir/Claim.js +0 -7
- package/dist/fhir/Claim.js.map +0 -1
- package/dist/fhir/ClaimResponse.d.ts +0 -1040
- package/dist/fhir/ClaimResponse.js +0 -7
- package/dist/fhir/ClaimResponse.js.map +0 -1
- package/dist/fhir/ClientApplication.d.ts +0 -46
- package/dist/fhir/ClientApplication.js +0 -7
- package/dist/fhir/ClientApplication.js.map +0 -1
- package/dist/fhir/ClinicalImpression.d.ts +0 -306
- package/dist/fhir/ClinicalImpression.js +0 -7
- package/dist/fhir/ClinicalImpression.js.map +0 -1
- package/dist/fhir/CodeSystem.d.ts +0 -541
- package/dist/fhir/CodeSystem.js +0 -7
- package/dist/fhir/CodeSystem.js.map +0 -1
- package/dist/fhir/CodeableConcept.d.ts +0 -33
- package/dist/fhir/CodeableConcept.js +0 -7
- package/dist/fhir/CodeableConcept.js.map +0 -1
- package/dist/fhir/Coding.d.ts +0 -50
- package/dist/fhir/Coding.js +0 -7
- package/dist/fhir/Coding.js.map +0 -1
- package/dist/fhir/Communication.d.ts +0 -264
- package/dist/fhir/Communication.js +0 -7
- package/dist/fhir/Communication.js.map +0 -1
- package/dist/fhir/CommunicationRequest.d.ts +0 -261
- package/dist/fhir/CommunicationRequest.js +0 -7
- package/dist/fhir/CommunicationRequest.js.map +0 -1
- package/dist/fhir/CompartmentDefinition.d.ts +0 -217
- package/dist/fhir/CompartmentDefinition.js +0 -7
- package/dist/fhir/CompartmentDefinition.js.map +0 -1
- package/dist/fhir/Composition.d.ts +0 -429
- package/dist/fhir/Composition.js +0 -7
- package/dist/fhir/Composition.js.map +0 -1
- package/dist/fhir/ConceptMap.d.ts +0 -518
- package/dist/fhir/ConceptMap.js +0 -7
- package/dist/fhir/ConceptMap.js.map +0 -1
- package/dist/fhir/Condition.d.ts +0 -326
- package/dist/fhir/Condition.js +0 -7
- package/dist/fhir/Condition.js.map +0 -1
- package/dist/fhir/Consent.d.ts +0 -460
- package/dist/fhir/Consent.js +0 -7
- package/dist/fhir/Consent.js.map +0 -1
- package/dist/fhir/ContactDetail.d.ts +0 -31
- package/dist/fhir/ContactDetail.js +0 -7
- package/dist/fhir/ContactDetail.js.map +0 -1
- package/dist/fhir/ContactPoint.d.ts +0 -47
- package/dist/fhir/ContactPoint.js +0 -7
- package/dist/fhir/ContactPoint.js.map +0 -1
- package/dist/fhir/Contract.d.ts +0 -1452
- package/dist/fhir/Contract.js +0 -7
- package/dist/fhir/Contract.js.map +0 -1
- package/dist/fhir/Contributor.d.ts +0 -37
- package/dist/fhir/Contributor.js +0 -7
- package/dist/fhir/Contributor.js.map +0 -1
- package/dist/fhir/Count.d.ts +0 -49
- package/dist/fhir/Count.js +0 -7
- package/dist/fhir/Count.js.map +0 -1
- package/dist/fhir/Coverage.d.ts +0 -327
- package/dist/fhir/Coverage.js +0 -7
- package/dist/fhir/Coverage.js.map +0 -1
- package/dist/fhir/CoverageEligibilityRequest.d.ts +0 -404
- package/dist/fhir/CoverageEligibilityRequest.js +0 -7
- package/dist/fhir/CoverageEligibilityRequest.js.map +0 -1
- package/dist/fhir/CoverageEligibilityResponse.d.ts +0 -434
- package/dist/fhir/CoverageEligibilityResponse.js +0 -7
- package/dist/fhir/CoverageEligibilityResponse.js.map +0 -1
- package/dist/fhir/DataRequirement.d.ts +0 -239
- package/dist/fhir/DataRequirement.js +0 -7
- package/dist/fhir/DataRequirement.js.map +0 -1
- package/dist/fhir/DetectedIssue.d.ts +0 -252
- package/dist/fhir/DetectedIssue.js +0 -7
- package/dist/fhir/DetectedIssue.js.map +0 -1
- package/dist/fhir/Device.d.ts +0 -493
- package/dist/fhir/Device.js +0 -7
- package/dist/fhir/Device.js.map +0 -1
- package/dist/fhir/DeviceDefinition.d.ts +0 -486
- package/dist/fhir/DeviceDefinition.js +0 -7
- package/dist/fhir/DeviceDefinition.js.map +0 -1
- package/dist/fhir/DeviceMetric.d.ts +0 -199
- package/dist/fhir/DeviceMetric.js +0 -7
- package/dist/fhir/DeviceMetric.js.map +0 -1
- package/dist/fhir/DeviceRequest.d.ts +0 -296
- package/dist/fhir/DeviceRequest.js +0 -7
- package/dist/fhir/DeviceRequest.js.map +0 -1
- package/dist/fhir/DeviceUseStatement.d.ts +0 -168
- package/dist/fhir/DeviceUseStatement.js +0 -7
- package/dist/fhir/DeviceUseStatement.js.map +0 -1
- package/dist/fhir/DiagnosticReport.d.ts +0 -254
- package/dist/fhir/DiagnosticReport.js +0 -7
- package/dist/fhir/DiagnosticReport.js.map +0 -1
- package/dist/fhir/Distance.d.ts +0 -47
- package/dist/fhir/Distance.js +0 -7
- package/dist/fhir/Distance.js.map +0 -1
- package/dist/fhir/DocumentManifest.d.ts +0 -196
- package/dist/fhir/DocumentManifest.js +0 -7
- package/dist/fhir/DocumentManifest.js.map +0 -1
- package/dist/fhir/DocumentReference.d.ts +0 -349
- package/dist/fhir/DocumentReference.js +0 -7
- package/dist/fhir/DocumentReference.js.map +0 -1
- package/dist/fhir/Dosage.d.ts +0 -152
- package/dist/fhir/Dosage.js +0 -7
- package/dist/fhir/Dosage.js.map +0 -1
- package/dist/fhir/Duration.d.ts +0 -46
- package/dist/fhir/Duration.js +0 -7
- package/dist/fhir/Duration.js.map +0 -1
- package/dist/fhir/EffectEvidenceSynthesis.d.ts +0 -591
- package/dist/fhir/EffectEvidenceSynthesis.js +0 -7
- package/dist/fhir/EffectEvidenceSynthesis.js.map +0 -1
- package/dist/fhir/Element.d.ts +0 -21
- package/dist/fhir/Element.js +0 -7
- package/dist/fhir/Element.js.map +0 -1
- package/dist/fhir/ElementDefinition.d.ts +0 -2701
- package/dist/fhir/ElementDefinition.js +0 -7
- package/dist/fhir/ElementDefinition.js.map +0 -1
- package/dist/fhir/Encounter.d.ts +0 -558
- package/dist/fhir/Encounter.js +0 -7
- package/dist/fhir/Encounter.js.map +0 -1
- package/dist/fhir/Endpoint.d.ts +0 -140
- package/dist/fhir/Endpoint.js +0 -7
- package/dist/fhir/Endpoint.js.map +0 -1
- package/dist/fhir/EnrollmentRequest.d.ts +0 -113
- package/dist/fhir/EnrollmentRequest.js +0 -7
- package/dist/fhir/EnrollmentRequest.js.map +0 -1
- package/dist/fhir/EnrollmentResponse.d.ts +0 -117
- package/dist/fhir/EnrollmentResponse.js +0 -7
- package/dist/fhir/EnrollmentResponse.js.map +0 -1
- package/dist/fhir/EpisodeOfCare.d.ts +0 -246
- package/dist/fhir/EpisodeOfCare.js +0 -7
- package/dist/fhir/EpisodeOfCare.js.map +0 -1
- package/dist/fhir/EventDefinition.d.ts +0 -253
- package/dist/fhir/EventDefinition.js +0 -7
- package/dist/fhir/EventDefinition.js.map +0 -1
- package/dist/fhir/Evidence.d.ts +0 -252
- package/dist/fhir/Evidence.js +0 -7
- package/dist/fhir/Evidence.js.map +0 -1
- package/dist/fhir/EvidenceVariable.d.ts +0 -370
- package/dist/fhir/EvidenceVariable.js +0 -7
- package/dist/fhir/EvidenceVariable.js.map +0 -1
- package/dist/fhir/ExampleScenario.d.ts +0 -628
- package/dist/fhir/ExampleScenario.js +0 -7
- package/dist/fhir/ExampleScenario.js.map +0 -1
- package/dist/fhir/ExplanationOfBenefit.d.ts +0 -1841
- package/dist/fhir/ExplanationOfBenefit.js +0 -7
- package/dist/fhir/ExplanationOfBenefit.js.map +0 -1
- package/dist/fhir/Expression.d.ts +0 -45
- package/dist/fhir/Expression.js +0 -7
- package/dist/fhir/Expression.js.map +0 -1
- package/dist/fhir/Extension.d.ts +0 -306
- package/dist/fhir/Extension.js +0 -7
- package/dist/fhir/Extension.js.map +0 -1
- package/dist/fhir/FamilyMemberHistory.d.ts +0 -306
- package/dist/fhir/FamilyMemberHistory.js +0 -7
- package/dist/fhir/FamilyMemberHistory.js.map +0 -1
- package/dist/fhir/Flag.d.ts +0 -132
- package/dist/fhir/Flag.js +0 -7
- package/dist/fhir/Flag.js.map +0 -1
- package/dist/fhir/Goal.d.ts +0 -299
- package/dist/fhir/Goal.js +0 -7
- package/dist/fhir/Goal.js.map +0 -1
- package/dist/fhir/GraphDefinition.d.ts +0 -350
- package/dist/fhir/GraphDefinition.js +0 -7
- package/dist/fhir/GraphDefinition.js.map +0 -1
- package/dist/fhir/Group.d.ts +0 -271
- package/dist/fhir/Group.js +0 -7
- package/dist/fhir/Group.js.map +0 -1
- package/dist/fhir/GuidanceResponse.d.ts +0 -196
- package/dist/fhir/GuidanceResponse.js +0 -7
- package/dist/fhir/GuidanceResponse.js.map +0 -1
- package/dist/fhir/HealthcareService.d.ts +0 -356
- package/dist/fhir/HealthcareService.js +0 -7
- package/dist/fhir/HealthcareService.js.map +0 -1
- package/dist/fhir/HumanName.d.ts +0 -58
- package/dist/fhir/HumanName.js +0 -7
- package/dist/fhir/HumanName.js.map +0 -1
- package/dist/fhir/Identifier.d.ts +0 -53
- package/dist/fhir/Identifier.js +0 -7
- package/dist/fhir/Identifier.js.map +0 -1
- package/dist/fhir/ImagingStudy.d.ts +0 -407
- package/dist/fhir/ImagingStudy.js +0 -7
- package/dist/fhir/ImagingStudy.js.map +0 -1
- package/dist/fhir/Immunization.d.ts +0 -444
- package/dist/fhir/Immunization.js +0 -7
- package/dist/fhir/Immunization.js.map +0 -1
- package/dist/fhir/ImmunizationEvaluation.d.ts +0 -149
- package/dist/fhir/ImmunizationEvaluation.js +0 -7
- package/dist/fhir/ImmunizationEvaluation.js.map +0 -1
- package/dist/fhir/ImmunizationRecommendation.d.ts +0 -254
- package/dist/fhir/ImmunizationRecommendation.js +0 -7
- package/dist/fhir/ImmunizationRecommendation.js.map +0 -1
- package/dist/fhir/ImplementationGuide.d.ts +0 -824
- package/dist/fhir/ImplementationGuide.js +0 -7
- package/dist/fhir/ImplementationGuide.js.map +0 -1
- package/dist/fhir/InsurancePlan.d.ts +0 -624
- package/dist/fhir/InsurancePlan.js +0 -7
- package/dist/fhir/InsurancePlan.js.map +0 -1
- package/dist/fhir/Invoice.d.ts +0 -346
- package/dist/fhir/Invoice.js +0 -7
- package/dist/fhir/Invoice.js.map +0 -1
- package/dist/fhir/JsonWebKey.d.ts +0 -99
- package/dist/fhir/JsonWebKey.js +0 -7
- package/dist/fhir/JsonWebKey.js.map +0 -1
- package/dist/fhir/Library.d.ts +0 -277
- package/dist/fhir/Library.js +0 -7
- package/dist/fhir/Library.js.map +0 -1
- package/dist/fhir/Linkage.d.ts +0 -146
- package/dist/fhir/Linkage.js +0 -7
- package/dist/fhir/Linkage.js.map +0 -1
- package/dist/fhir/List.d.ts +0 -200
- package/dist/fhir/List.js +0 -7
- package/dist/fhir/List.js.map +0 -1
- package/dist/fhir/Location.d.ts +0 -277
- package/dist/fhir/Location.js +0 -7
- package/dist/fhir/Location.js.map +0 -1
- package/dist/fhir/Login.d.ts +0 -119
- package/dist/fhir/Login.js +0 -7
- package/dist/fhir/Login.js.map +0 -1
- package/dist/fhir/MarketingStatus.d.ts +0 -82
- package/dist/fhir/MarketingStatus.js +0 -7
- package/dist/fhir/MarketingStatus.js.map +0 -1
- package/dist/fhir/Measure.d.ts +0 -620
- package/dist/fhir/Measure.js +0 -7
- package/dist/fhir/Measure.js.map +0 -1
- package/dist/fhir/MeasureReport.d.ts +0 -463
- package/dist/fhir/MeasureReport.js +0 -7
- package/dist/fhir/MeasureReport.js.map +0 -1
- package/dist/fhir/Media.d.ts +0 -205
- package/dist/fhir/Media.js +0 -7
- package/dist/fhir/Media.js.map +0 -1
- package/dist/fhir/Medication.d.ts +0 -230
- package/dist/fhir/Medication.js +0 -7
- package/dist/fhir/Medication.js.map +0 -1
- package/dist/fhir/MedicationAdministration.d.ts +0 -352
- package/dist/fhir/MedicationAdministration.js +0 -7
- package/dist/fhir/MedicationAdministration.js.map +0 -1
- package/dist/fhir/MedicationDispense.d.ts +0 -343
- package/dist/fhir/MedicationDispense.js +0 -7
- package/dist/fhir/MedicationDispense.js.map +0 -1
- package/dist/fhir/MedicationKnowledge.d.ts +0 -992
- package/dist/fhir/MedicationKnowledge.js +0 -7
- package/dist/fhir/MedicationKnowledge.js.map +0 -1
- package/dist/fhir/MedicationRequest.d.ts +0 -481
- package/dist/fhir/MedicationRequest.js +0 -7
- package/dist/fhir/MedicationRequest.js.map +0 -1
- package/dist/fhir/MedicationStatement.d.ts +0 -228
- package/dist/fhir/MedicationStatement.js +0 -7
- package/dist/fhir/MedicationStatement.js.map +0 -1
- package/dist/fhir/MedicinalProduct.d.ts +0 -453
- package/dist/fhir/MedicinalProduct.js +0 -7
- package/dist/fhir/MedicinalProduct.js.map +0 -1
- package/dist/fhir/MedicinalProductAuthorization.d.ts +0 -271
- package/dist/fhir/MedicinalProductAuthorization.js +0 -7
- package/dist/fhir/MedicinalProductAuthorization.js.map +0 -1
- package/dist/fhir/MedicinalProductContraindication.d.ts +0 -170
- package/dist/fhir/MedicinalProductContraindication.js +0 -7
- package/dist/fhir/MedicinalProductContraindication.js.map +0 -1
- package/dist/fhir/MedicinalProductIndication.d.ts +0 -179
- package/dist/fhir/MedicinalProductIndication.js +0 -7
- package/dist/fhir/MedicinalProductIndication.js.map +0 -1
- package/dist/fhir/MedicinalProductIngredient.d.ts +0 -336
- package/dist/fhir/MedicinalProductIngredient.js +0 -7
- package/dist/fhir/MedicinalProductIngredient.js.map +0 -1
- package/dist/fhir/MedicinalProductInteraction.d.ts +0 -158
- package/dist/fhir/MedicinalProductInteraction.js +0 -7
- package/dist/fhir/MedicinalProductInteraction.js.map +0 -1
- package/dist/fhir/MedicinalProductManufactured.d.ts +0 -113
- package/dist/fhir/MedicinalProductManufactured.js +0 -7
- package/dist/fhir/MedicinalProductManufactured.js.map +0 -1
- package/dist/fhir/MedicinalProductPackaged.d.ts +0 -259
- package/dist/fhir/MedicinalProductPackaged.js +0 -7
- package/dist/fhir/MedicinalProductPackaged.js.map +0 -1
- package/dist/fhir/MedicinalProductPharmaceutical.d.ts +0 -331
- package/dist/fhir/MedicinalProductPharmaceutical.js +0 -7
- package/dist/fhir/MedicinalProductPharmaceutical.js.map +0 -1
- package/dist/fhir/MedicinalProductUndesirableEffect.d.ts +0 -101
- package/dist/fhir/MedicinalProductUndesirableEffect.js +0 -7
- package/dist/fhir/MedicinalProductUndesirableEffect.js.map +0 -1
- package/dist/fhir/MessageDefinition.d.ts +0 -330
- package/dist/fhir/MessageDefinition.js +0 -7
- package/dist/fhir/MessageDefinition.js.map +0 -1
- package/dist/fhir/MessageHeader.d.ts +0 -323
- package/dist/fhir/MessageHeader.js +0 -7
- package/dist/fhir/MessageHeader.js.map +0 -1
- package/dist/fhir/Meta.d.ts +0 -75
- package/dist/fhir/Meta.js +0 -7
- package/dist/fhir/Meta.js.map +0 -1
- package/dist/fhir/MolecularSequence.d.ts +0 -760
- package/dist/fhir/MolecularSequence.js +0 -7
- package/dist/fhir/MolecularSequence.js.map +0 -1
- package/dist/fhir/Money.d.ts +0 -29
- package/dist/fhir/Money.js +0 -7
- package/dist/fhir/Money.js.map +0 -1
- package/dist/fhir/NamingSystem.d.ts +0 -218
- package/dist/fhir/NamingSystem.js +0 -7
- package/dist/fhir/NamingSystem.js.map +0 -1
- package/dist/fhir/Narrative.d.ts +0 -32
- package/dist/fhir/Narrative.js +0 -7
- package/dist/fhir/Narrative.js.map +0 -1
- package/dist/fhir/NutritionOrder.d.ts +0 -566
- package/dist/fhir/NutritionOrder.js +0 -7
- package/dist/fhir/NutritionOrder.js.map +0 -1
- package/dist/fhir/Observation.d.ts +0 -520
- package/dist/fhir/Observation.js +0 -7
- package/dist/fhir/Observation.js.map +0 -1
- package/dist/fhir/ObservationDefinition.d.ts +0 -278
- package/dist/fhir/ObservationDefinition.js +0 -7
- package/dist/fhir/ObservationDefinition.js.map +0 -1
- package/dist/fhir/OperationDefinition.d.ts +0 -468
- package/dist/fhir/OperationDefinition.js +0 -7
- package/dist/fhir/OperationDefinition.js.map +0 -1
- package/dist/fhir/OperationOutcome.d.ts +0 -160
- package/dist/fhir/OperationOutcome.js +0 -7
- package/dist/fhir/OperationOutcome.js.map +0 -1
- package/dist/fhir/Organization.d.ts +0 -184
- package/dist/fhir/Organization.js +0 -7
- package/dist/fhir/Organization.js.map +0 -1
- package/dist/fhir/OrganizationAffiliation.d.ts +0 -145
- package/dist/fhir/OrganizationAffiliation.js +0 -7
- package/dist/fhir/OrganizationAffiliation.js.map +0 -1
- package/dist/fhir/ParameterDefinition.d.ts +0 -57
- package/dist/fhir/ParameterDefinition.js +0 -7
- package/dist/fhir/ParameterDefinition.js.map +0 -1
- package/dist/fhir/Parameters.d.ts +0 -319
- package/dist/fhir/Parameters.js +0 -7
- package/dist/fhir/Parameters.js.map +0 -1
- package/dist/fhir/PasswordChangeRequest.d.ts +0 -51
- package/dist/fhir/PasswordChangeRequest.js +0 -7
- package/dist/fhir/PasswordChangeRequest.js.map +0 -1
- package/dist/fhir/Patient.d.ts +0 -342
- package/dist/fhir/Patient.js +0 -7
- package/dist/fhir/Patient.js.map +0 -1
- package/dist/fhir/PaymentNotice.d.ts +0 -135
- package/dist/fhir/PaymentNotice.js +0 -7
- package/dist/fhir/PaymentNotice.js.map +0 -1
- package/dist/fhir/PaymentReconciliation.d.ts +0 -280
- package/dist/fhir/PaymentReconciliation.js +0 -7
- package/dist/fhir/PaymentReconciliation.js.map +0 -1
- package/dist/fhir/Period.d.ts +0 -32
- package/dist/fhir/Period.js +0 -7
- package/dist/fhir/Period.js.map +0 -1
- package/dist/fhir/Person.d.ts +0 -175
- package/dist/fhir/Person.js +0 -7
- package/dist/fhir/Person.js.map +0 -1
- package/dist/fhir/PlanDefinition.d.ts +0 -837
- package/dist/fhir/PlanDefinition.js +0 -7
- package/dist/fhir/PlanDefinition.js.map +0 -1
- package/dist/fhir/Population.d.ts +0 -62
- package/dist/fhir/Population.js +0 -7
- package/dist/fhir/Population.js.map +0 -1
- package/dist/fhir/Practitioner.d.ts +0 -191
- package/dist/fhir/Practitioner.js +0 -7
- package/dist/fhir/Practitioner.js.map +0 -1
- package/dist/fhir/PractitionerRole.d.ts +0 -259
- package/dist/fhir/PractitionerRole.js +0 -7
- package/dist/fhir/PractitionerRole.js.map +0 -1
- package/dist/fhir/Procedure.d.ts +0 -372
- package/dist/fhir/Procedure.js +0 -7
- package/dist/fhir/Procedure.js.map +0 -1
- package/dist/fhir/ProdCharacteristic.d.ts +0 -112
- package/dist/fhir/ProdCharacteristic.js +0 -7
- package/dist/fhir/ProdCharacteristic.js.map +0 -1
- package/dist/fhir/ProductShelfLife.d.ts +0 -70
- package/dist/fhir/ProductShelfLife.js +0 -7
- package/dist/fhir/ProductShelfLife.js.map +0 -1
- package/dist/fhir/Project.d.ts +0 -43
- package/dist/fhir/Project.js +0 -7
- package/dist/fhir/Project.js.map +0 -1
- package/dist/fhir/ProjectMembership.d.ts +0 -66
- package/dist/fhir/ProjectMembership.js +0 -7
- package/dist/fhir/ProjectMembership.js.map +0 -1
- package/dist/fhir/Provenance.d.ts +0 -258
- package/dist/fhir/Provenance.js +0 -7
- package/dist/fhir/Provenance.js.map +0 -1
- package/dist/fhir/Quantity.d.ts +0 -46
- package/dist/fhir/Quantity.js +0 -7
- package/dist/fhir/Quantity.js.map +0 -1
- package/dist/fhir/Questionnaire.d.ts +0 -603
- package/dist/fhir/Questionnaire.js +0 -7
- package/dist/fhir/Questionnaire.js.map +0 -1
- package/dist/fhir/QuestionnaireResponse.d.ts +0 -313
- package/dist/fhir/QuestionnaireResponse.js +0 -7
- package/dist/fhir/QuestionnaireResponse.js.map +0 -1
- package/dist/fhir/Range.d.ts +0 -30
- package/dist/fhir/Range.js +0 -7
- package/dist/fhir/Range.js.map +0 -1
- package/dist/fhir/Ratio.d.ts +0 -30
- package/dist/fhir/Ratio.js +0 -7
- package/dist/fhir/Ratio.js.map +0 -1
- package/dist/fhir/Reference.d.ts +0 -67
- package/dist/fhir/Reference.js +0 -7
- package/dist/fhir/Reference.js.map +0 -1
- package/dist/fhir/RefreshToken.d.ts +0 -45
- package/dist/fhir/RefreshToken.js +0 -7
- package/dist/fhir/RefreshToken.js.map +0 -1
- package/dist/fhir/RelatedArtifact.d.ts +0 -57
- package/dist/fhir/RelatedArtifact.js +0 -7
- package/dist/fhir/RelatedArtifact.js.map +0 -1
- package/dist/fhir/RelatedPerson.d.ts +0 -190
- package/dist/fhir/RelatedPerson.js +0 -7
- package/dist/fhir/RelatedPerson.js.map +0 -1
- package/dist/fhir/RequestGroup.d.ts +0 -434
- package/dist/fhir/RequestGroup.js +0 -7
- package/dist/fhir/RequestGroup.js.map +0 -1
- package/dist/fhir/ResearchDefinition.d.ts +0 -291
- package/dist/fhir/ResearchDefinition.js +0 -7
- package/dist/fhir/ResearchDefinition.js.map +0 -1
- package/dist/fhir/ResearchElementDefinition.d.ts +0 -431
- package/dist/fhir/ResearchElementDefinition.js +0 -7
- package/dist/fhir/ResearchElementDefinition.js.map +0 -1
- package/dist/fhir/ResearchStudy.d.ts +0 -318
- package/dist/fhir/ResearchStudy.js +0 -7
- package/dist/fhir/ResearchStudy.js.map +0 -1
- package/dist/fhir/ResearchSubject.d.ts +0 -119
- package/dist/fhir/ResearchSubject.js +0 -7
- package/dist/fhir/ResearchSubject.js.map +0 -1
- package/dist/fhir/Resource.d.ts +0 -156
- package/dist/fhir/Resource.js +0 -7
- package/dist/fhir/Resource.js.map +0 -1
- package/dist/fhir/RiskAssessment.d.ts +0 -246
- package/dist/fhir/RiskAssessment.js +0 -7
- package/dist/fhir/RiskAssessment.js.map +0 -1
- package/dist/fhir/RiskEvidenceSynthesis.d.ts +0 -530
- package/dist/fhir/RiskEvidenceSynthesis.js +0 -7
- package/dist/fhir/RiskEvidenceSynthesis.js.map +0 -1
- package/dist/fhir/SampledData.d.ts +0 -62
- package/dist/fhir/SampledData.js +0 -7
- package/dist/fhir/SampledData.js.map +0 -1
- package/dist/fhir/Schedule.d.ts +0 -129
- package/dist/fhir/Schedule.js +0 -7
- package/dist/fhir/Schedule.js.map +0 -1
- package/dist/fhir/SearchParameter.d.ts +0 -277
- package/dist/fhir/SearchParameter.js +0 -7
- package/dist/fhir/SearchParameter.js.map +0 -1
- package/dist/fhir/ServiceRequest.d.ts +0 -309
- package/dist/fhir/ServiceRequest.js +0 -7
- package/dist/fhir/ServiceRequest.js.map +0 -1
- package/dist/fhir/Signature.d.ts +0 -71
- package/dist/fhir/Signature.js +0 -7
- package/dist/fhir/Signature.js.map +0 -1
- package/dist/fhir/Slot.d.ts +0 -134
- package/dist/fhir/Slot.js +0 -7
- package/dist/fhir/Slot.js.map +0 -1
- package/dist/fhir/Specimen.d.ts +0 -366
- package/dist/fhir/Specimen.js +0 -7
- package/dist/fhir/Specimen.js.map +0 -1
- package/dist/fhir/SpecimenDefinition.d.ts +0 -363
- package/dist/fhir/SpecimenDefinition.js +0 -7
- package/dist/fhir/SpecimenDefinition.js.map +0 -1
- package/dist/fhir/StructureDefinition.d.ts +0 -438
- package/dist/fhir/StructureDefinition.js +0 -7
- package/dist/fhir/StructureDefinition.js.map +0 -1
- package/dist/fhir/StructureMap.d.ts +0 -904
- package/dist/fhir/StructureMap.js +0 -7
- package/dist/fhir/StructureMap.js.map +0 -1
- package/dist/fhir/Subscription.d.ts +0 -172
- package/dist/fhir/Subscription.js +0 -7
- package/dist/fhir/Subscription.js.map +0 -1
- package/dist/fhir/Substance.d.ts +0 -213
- package/dist/fhir/Substance.js +0 -7
- package/dist/fhir/Substance.js.map +0 -1
- package/dist/fhir/SubstanceAmount.d.ts +0 -115
- package/dist/fhir/SubstanceAmount.js +0 -7
- package/dist/fhir/SubstanceAmount.js.map +0 -1
- package/dist/fhir/SubstanceNucleicAcid.d.ts +0 -309
- package/dist/fhir/SubstanceNucleicAcid.js +0 -7
- package/dist/fhir/SubstanceNucleicAcid.js.map +0 -1
- package/dist/fhir/SubstancePolymer.d.ts +0 -405
- package/dist/fhir/SubstancePolymer.js +0 -7
- package/dist/fhir/SubstancePolymer.js.map +0 -1
- package/dist/fhir/SubstanceProtein.d.ts +0 -218
- package/dist/fhir/SubstanceProtein.js +0 -7
- package/dist/fhir/SubstanceProtein.js.map +0 -1
- package/dist/fhir/SubstanceReferenceInformation.d.ts +0 -330
- package/dist/fhir/SubstanceReferenceInformation.js +0 -7
- package/dist/fhir/SubstanceReferenceInformation.js.map +0 -1
- package/dist/fhir/SubstanceSourceMaterial.d.ts +0 -521
- package/dist/fhir/SubstanceSourceMaterial.js +0 -7
- package/dist/fhir/SubstanceSourceMaterial.js.map +0 -1
- package/dist/fhir/SubstanceSpecification.d.ts +0 -827
- package/dist/fhir/SubstanceSpecification.js +0 -7
- package/dist/fhir/SubstanceSpecification.js.map +0 -1
- package/dist/fhir/SupplyDelivery.d.ts +0 -205
- package/dist/fhir/SupplyDelivery.js +0 -7
- package/dist/fhir/SupplyDelivery.js.map +0 -1
- package/dist/fhir/SupplyRequest.d.ts +0 -237
- package/dist/fhir/SupplyRequest.js +0 -7
- package/dist/fhir/SupplyRequest.js.map +0 -1
- package/dist/fhir/Task.d.ts +0 -807
- package/dist/fhir/Task.js +0 -7
- package/dist/fhir/Task.js.map +0 -1
- package/dist/fhir/TerminologyCapabilities.d.ts +0 -716
- package/dist/fhir/TerminologyCapabilities.js +0 -7
- package/dist/fhir/TerminologyCapabilities.js.map +0 -1
- package/dist/fhir/TestReport.d.ts +0 -549
- package/dist/fhir/TestReport.js +0 -7
- package/dist/fhir/TestReport.js.map +0 -1
- package/dist/fhir/TestScript.d.ts +0 -1184
- package/dist/fhir/TestScript.js +0 -7
- package/dist/fhir/TestScript.js.map +0 -1
- package/dist/fhir/Timing.d.ts +0 -178
- package/dist/fhir/Timing.js +0 -7
- package/dist/fhir/Timing.js.map +0 -1
- package/dist/fhir/TriggerDefinition.d.ts +0 -65
- package/dist/fhir/TriggerDefinition.js +0 -7
- package/dist/fhir/TriggerDefinition.js.map +0 -1
- package/dist/fhir/UsageContext.d.ts +0 -61
- package/dist/fhir/UsageContext.js +0 -7
- package/dist/fhir/UsageContext.js.map +0 -1
- package/dist/fhir/User.d.ts +0 -45
- package/dist/fhir/User.js +0 -7
- package/dist/fhir/User.js.map +0 -1
- package/dist/fhir/ValueSet.d.ts +0 -725
- package/dist/fhir/ValueSet.js +0 -7
- package/dist/fhir/ValueSet.js.map +0 -1
- package/dist/fhir/VerificationResult.d.ts +0 -340
- package/dist/fhir/VerificationResult.js +0 -7
- package/dist/fhir/VerificationResult.js.map +0 -1
- package/dist/fhir/VisionPrescription.d.ts +0 -264
- package/dist/fhir/VisionPrescription.js +0 -7
- package/dist/fhir/VisionPrescription.js.map +0 -1
- package/dist/fhir/index.d.ts +0 -196
- package/dist/fhir/index.js +0 -213
- package/dist/fhir/index.js.map +0 -1
- package/dist/fhirpath/functions.d.ts +0 -6
- package/dist/fhirpath/functions.js +0 -349
- package/dist/fhirpath/functions.js.map +0 -1
- package/dist/fhirpath/functions.test.d.ts +0 -1
- package/dist/fhirpath/functions.test.js +0 -162
- package/dist/fhirpath/functions.test.js.map +0 -1
- package/dist/fhirpath/index.d.ts +0 -2
- package/dist/fhirpath/index.js +0 -15
- package/dist/fhirpath/index.js.map +0 -1
- package/dist/fhirpath/parse.d.ts +0 -10
- package/dist/fhirpath/parse.js +0 -285
- package/dist/fhirpath/parse.js.map +0 -1
- package/dist/fhirpath/parse.test.d.ts +0 -1
- package/dist/fhirpath/parse.test.js +0 -239
- package/dist/fhirpath/parse.test.js.map +0 -1
- package/dist/fhirpath/tokenize.d.ts +0 -13
- package/dist/fhirpath/tokenize.js +0 -43
- package/dist/fhirpath/tokenize.js.map +0 -1
- package/dist/fhirpath/tokenize.test.d.ts +0 -1
- package/dist/fhirpath/tokenize.test.js +0 -69
- package/dist/fhirpath/tokenize.test.js.map +0 -1
- package/dist/fhirpath/utils.d.ts +0 -13
- package/dist/fhirpath/utils.js +0 -34
- package/dist/fhirpath/utils.js.map +0 -1
- package/dist/fhirpath/utils.test.d.ts +0 -1
- package/dist/fhirpath/utils.test.js +0 -22
- package/dist/fhirpath/utils.test.js.map +0 -1
- package/dist/format.js +0 -56
- package/dist/format.js.map +0 -1
- package/dist/format.test.d.ts +0 -1
- package/dist/format.test.js +0 -127
- package/dist/format.test.js.map +0 -1
- package/dist/index.js +0 -22
- package/dist/index.js.map +0 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/index.test.js +0 -11
- package/dist/index.test.js.map +0 -1
- package/dist/jwt.d.ts +0 -5
- package/dist/jwt.js +0 -28
- package/dist/jwt.js.map +0 -1
- package/dist/outcomes.js +0 -140
- package/dist/outcomes.js.map +0 -1
- package/dist/outcomes.test.d.ts +0 -1
- package/dist/outcomes.test.js +0 -38
- package/dist/outcomes.test.js.map +0 -1
- package/dist/search.js +0 -120
- package/dist/search.js.map +0 -1
- package/dist/search.test.d.ts +0 -1
- package/dist/search.test.js +0 -72
- package/dist/search.test.js.map +0 -1
- package/dist/searchparams.js +0 -127
- package/dist/searchparams.js.map +0 -1
- package/dist/searchparams.test.d.ts +0 -1
- package/dist/searchparams.test.js +0 -129
- package/dist/searchparams.test.js.map +0 -1
- package/dist/storage.js +0 -91
- package/dist/storage.js.map +0 -1
- package/dist/storage.test.d.ts +0 -1
- package/dist/storage.test.js +0 -50
- package/dist/storage.test.js.map +0 -1
- package/dist/types.js +0 -169
- package/dist/types.js.map +0 -1
- package/dist/utils.js +0 -234
- package/dist/utils.js.map +0 -1
- package/dist/utils.test.d.ts +0 -1
- package/dist/utils.test.js +0 -148
- 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"]}
|
package/dist/fhirpath/index.d.ts
DELETED
package/dist/fhirpath/index.js
DELETED
|
@@ -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"]}
|
package/dist/fhirpath/parse.d.ts
DELETED
|
@@ -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;
|
package/dist/fhirpath/parse.js
DELETED
|
@@ -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 {};
|