@medplum/core 2.0.27 → 2.0.28

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.
@@ -1,6 +1,6 @@
1
1
  var He="ok",We="created",Ge="gone",ze="not-modified",Ke="not-found",Ct="unauthorized",wt="forbidden",kt="too-many-requests",me="accepted",Oi={resourceType:"OperationOutcome",id:He,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Vi={resourceType:"OperationOutcome",id:We,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Ui={resourceType:"OperationOutcome",id:ze,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Dt={resourceType:"OperationOutcome",id:Ke,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Li={resourceType:"OperationOutcome",id:Ct,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},_i={resourceType:"OperationOutcome",id:wt,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ni={resourceType:"OperationOutcome",id:Ge,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Mi={resourceType:"OperationOutcome",id:kt,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Bi(r){return{resourceType:"OperationOutcome",id:me,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function k(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function B(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function It(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function he(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Je(r){return r.id===He||r.id===We||r.id===ze||r.id===me}function Fi(r){return r.id===me}function qi(r){return r.id===Ke}function $i(r){return r.id===Ge}function ji(r){return r.id===He?200:r.id===We?201:r.id===me?202:r.id===ze?304:r.id===Ct?401:r.id===wt?403:r.id===Ke?404:r.id===Ge?410:r.id===kt?429:400}function Qi(r,e){if(!Je(r)||e===void 0)throw new m(r)}var m=class extends Error{constructor(t,n){super(Ot(t));this.outcome=t,this.cause=n}};function Ye(r){return r instanceof m?r.outcome:he(r)?r:k(Vr(r))}function Vr(r){return r?typeof r=="string"?r:r instanceof Error?r.message:he(r)?Ot(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Ot(r){let e=r.issue?.map(Ur)??[];return e.length>0?e.join("; "):"Unknown error"}function Ur(r){let e=r.details?.text??r.diagnostics??"Unknown error";return r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}var Vt={types:{Element:{display:"Element",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]}}},BackboneElement:{display:"BackboneElement",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]}}},Address:{display:"Address",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:"*",type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{display:"Age",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{display:"Annotation",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{display:"Attachment",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{display:"CodeableConcept",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},coding:{max:"*",type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{display:"Coding",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{display:"ContactDetail",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:"*",type:[{code:"ContactPoint"}]}}},ContactPoint:{display:"ContactPoint",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{display:"Contributor",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:"*",type:[{code:"ContactDetail"}]}}},Count:{display:"Count",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{display:"DataRequirement",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:"*",type:[{code:"string"}]},codeFilter:{max:"*",type:[{code:"Element"}]},dateFilter:{max:"*",type:[{code:"Element"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:"*",type:[{code:"Element"}]}}},DataRequirementCodeFilter:{display:"DataRequirementCodeFilter",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:"*",type:[{code:"Coding"}]}}},DataRequirementDateFilter:{display:"DataRequirementDateFilter",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{display:"DataRequirementSort",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{display:"Distance",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{display:"Dosage",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:"*",type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:"*",type:[{code:"Element"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},DosageDoseAndRate:{display:"DosageDoseAndRate",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{type:[{code:"CodeableConcept"}]},"dose[x]":{type:[{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},"rate[x]":{type:[{code:"Ratio"},{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{display:"Duration",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{display:"ElementDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:"*",type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:"*",type:[{code:"Coding"}]},slicing:{type:[{code:"Element"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:"*",type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"Element"}]},contentReference:{type:[{code:"uri"}]},type:{max:"*",type:[{code:"Element"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:"*",type:[{code:"Element"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:"*",type:[{code:"id"}]},constraint:{max:"*",type:[{code:"Element"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"Element"}]},mapping:{max:"*",type:[{code:"Element"}]}}},ElementDefinitionSlicing:{display:"ElementDefinitionSlicing",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},discriminator:{max:"*",type:[{code:"Element"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionSlicingDiscriminator:{display:"ElementDefinitionSlicingDiscriminator",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionBase:{display:"ElementDefinitionBase",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{display:"ElementDefinitionType",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:"*",type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{display:"ElementDefinitionExample",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},label:{min:1,type:[{code:"string"}]},"value[x]":{min:1,type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},ElementDefinitionConstraint:{display:"ElementDefinitionConstraint",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},key:{min:1,type:[{code:"id"}]},requirements:{type:[{code:"string"}]},severity:{min:1,type:[{code:"code"}]},human:{min:1,type:[{code:"string"}]},expression:{type:[{code:"string"}]},xpath:{type:[{code:"string"}]},source:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},ElementDefinitionBinding:{display:"ElementDefinitionBinding",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},strength:{min:1,type:[{code:"code"}]},description:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]}}},ElementDefinitionMapping:{display:"ElementDefinitionMapping",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{display:"Expression",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{display:"Extension",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},url:{min:1,type:[{code:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{display:"HumanName",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:"*",type:[{code:"string"}]},prefix:{max:"*",type:[{code:"string"}]},suffix:{max:"*",type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{display:"Identifier",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{display:"MarketingStatus",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{display:"Meta",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:"*",type:[{code:"Coding"}]},tag:{max:"*",type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:"*",type:[{code:"Reference"}]}}},Money:{display:"Money",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{display:"Narrative",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{display:"ParameterDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{display:"Period",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{display:"Population",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{display:"ProdCharacteristic",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:"*",type:[{code:"string"}]},imprint:{max:"*",type:[{code:"string"}]},image:{max:"*",type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{display:"ProductShelfLife",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:"*",type:[{code:"CodeableConcept"}]}}},Quantity:{display:"Quantity",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:"0",type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{display:"Range",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{display:"Ratio",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{display:"Reference",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{display:"RelatedArtifact",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{display:"SampledData",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{display:"Signature",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,max:"*",type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{display:"SubstanceAmount",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"Element"}]}}},SubstanceAmountReferenceRange:{display:"SubstanceAmountReferenceRange",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{display:"Timing",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},event:{max:"*",type:[{code:"dateTime"}]},repeat:{type:[{code:"Element"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{display:"TimingRepeat",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},"bounds[x]":{type:[{code:"Duration"},{code:"Range"},{code:"Period"}]},count:{type:[{code:"positiveInt"}]},countMax:{type:[{code:"positiveInt"}]},duration:{type:[{code:"decimal"}]},durationMax:{type:[{code:"decimal"}]},durationUnit:{type:[{code:"code"}]},frequency:{type:[{code:"positiveInt"}]},frequencyMax:{type:[{code:"positiveInt"}]},period:{type:[{code:"decimal"}]},periodMax:{type:[{code:"decimal"}]},periodUnit:{type:[{code:"code"}]},dayOfWeek:{max:"*",type:[{code:"code"}]},timeOfDay:{max:"*",type:[{code:"time"}]},when:{max:"*",type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{display:"TriggerDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:"*",type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{display:"UsageContext",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MetadataResource:{display:"MetadataResource",properties:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:"*",type:[{code:"Resource"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:"*",type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:"*",type:[{code:"UsageContext"}]},jurisdiction:{max:"*",type:[{code:"CodeableConcept"}]}}},IdentityProvider:{display:"IdentityProvider",properties:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},useSubject:{type:[{code:"boolean"}]}}}}};function zi(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ut(r,e){let t=[];return r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(" ").trim()}function Ki(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Ji(r){return r.family??""}function Ze(r){return r instanceof Date&&!isNaN(r.getTime())}function Yi(r,e,t){if(!r)return"";let n=new Date(r);return Ze(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function _r(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Ze(n)?n.toLocaleTimeString(e,t):""}function Xe(r,e,t){if(!r)return"";let n=new Date(r);return Ze(n)?n.toLocaleString(e,t):""}function Xi(r,e,t){return!r||!r.start&&!r.end?"":Xe(r.start,e,t)+" - "+Xe(r.end,e,t)}var Nr={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Mr={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Br={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Zi(r){if(!r)return"";let e=[];if(r.repeat?.periodUnit){let t=r.repeat.frequency??1,n=r.repeat.period??1,i=r.repeat.periodUnit;t===1&&n===1?e.push(Nr[i]):(t===1?e.push("once"):e.push(t+" times"),n===1?e.push("per "+Mr[i]):e.push("per "+n+" "+Br[i])),r.repeat.dayOfWeek&&e.push("on "+r.repeat.dayOfWeek.map(S).join(", ")),r.repeat.timeOfDay&&e.push("at "+r.repeat.timeOfDay.map(o=>_r(o)).join(", "))}return r.event&&e.push(r.event.map(t=>Xe(t)).join(", ")),S(e.join(" ").trim())}function eo(r,e,t=!1){if(t&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=r?.low&&{...r.low,comparator:void 0},i=r?.high&&{...r.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?t&&e!==void 0?(n.value=Qr(n.value,e),`> ${W(n,e)}`):`>= ${W(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=jr(i.value,e),`< ${W(i,e)}`):`<= ${W(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${W(n,e)} - ${W(i,e)}`)}function W(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function to(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Fr(r){return r?r.text?r.text:r.coding?r.coding.map(e=>qr(e)).join(", "):"":""}function qr(r){return r?.display??r?.code??""}function $r(r){return r?"component"in r?r.component.map(e=>$r(e)).join(" / "):r.valueQuantity?W(r.valueQuantity):r.valueCodeableConcept?Fr(r.valueCodeableConcept):r.valueString?r.valueString:"":""}function jr(r,e,t=1){return(Lt(r,e)+t)*Math.pow(10,-e)}function Qr(r,e,t=1){return(Lt(r,e)-t)*Math.pow(10,-e)}function Lt(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function te(r){let e=Nt(r),t=Wr(r);return t===e?{reference:e}:{reference:e,display:t}}function Nt(r){return r.resourceType+"/"+r.id}function io(r){return r?.reference?.split("/")[1]}function Hr(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Wr(r){if(Hr(r)){let e=Gr(r);if(e)return e}if(r.resourceType==="Device"){let e=zr(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:Nt(r)}function Gr(r){let e=r.name;if(e&&e.length>0)return Ut(e[0])}function zr(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function oo(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=_t(t);if(n)return n}else return _t(e)}function _t(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function so(r){return r?new Date(r):void 0}function ye(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),f=n.getUTCDate(),p=a-i;(c<o||c===o&&f<s)&&p--;let ee=a*12+c-(i*12+o);f<s&&ee--;let fe=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:ee,days:fe}}function ao(r,e){let{years:t,months:n,days:i}=ye(r,e);return t>=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function co(r){let e={};return Mt(r.item,e),e}function Mt(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Mt(t.item,e)}function uo(r,e){let t=r.identifier;if(!t)return;let n=Array.isArray(t)?t:[t];for(let i of n)if(i.system===e)return i.value}function Bt(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function lo(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function Ft(r,e){return JSON.stringify(r,Kr,e?2:void 0)}function Kr(r,e){return!Jr(r)&&v(e)?void 0:e}function Jr(r){return!!/\d+$/.exec(r)}function v(r){if(r==null)return!0;let e=typeof r;return e==="string"&&r===""||e==="object"&&Object.keys(r).length===0}function ge(r,e,t){return r===e||v(r)&&v(e)?!0:v(r)||v(e)?!1:Array.isArray(r)&&Array.isArray(e)?Yr(r,e):Array.isArray(r)||Array.isArray(e)?!1:F(r)&&F(e)?Xr(r,e,t):(F(r)||F(e),!1)}function Yr(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ge(r[t],e[t]))return!1;return!0}function Xr(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!ge(o,s,i))return!1}return!0}function xe(r,e){return v(r)?!0:v(e)?!1:Array.isArray(r)&&Array.isArray(e)?Zr(r,e):Array.isArray(r)||Array.isArray(e)?!1:F(r)&&F(e)?en(r,e):F(r)||F(e)?!1:r===e}function Zr(r,e){return r.every(t=>e.some(n=>xe(t,n)))}function en(r,e){return Object.entries(r).every(([t,n])=>t in e&&xe(n,e[t]))}function po(r){return JSON.parse(JSON.stringify(r))}function fo(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function F(r){return r!==null&&typeof r=="object"}function qt(r){return r.every(e=>typeof e=="string")}var $t=[];for(let r=0;r<256;r++)$t.push(r.toString(16).padStart(2,"0"));function jt(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=$t[e[n]];return t.join("")}function Qt(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function S(r){return r.charAt(0).toUpperCase()+r.substring(1)}function Te(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function et(r,e){return r.coding?.find(t=>t.system===e)?.code}function mo(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function ho(r,e,t,n){return r.qualifiedInterval?.find(i=>Ht(i,e)&&nn(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function yo(r,e,t){return r.qualifiedInterval?.find(n=>Ht(n,e)&&t.includes(n.condition))}function Ht(r,e){return tn(r,e)&&rn(r,e)}function tn(r,e){return!r.gender||r.gender===e.gender}function rn(r,e){return!r.age||Wt(ye(e.birthDate).years,r.age)}function nn(r,e,t){return!!r.range&&Wt(e,r.range,t)}function Wt(r,e,t){return(e.low?.value===void 0||sn(r,e.low.value,t))&&(e.high?.value===void 0||on(r,e.high.value,t))}function go(r,e){return parseFloat(r.toFixed(e))}function xo(r,e,t){return D(r,t)===D(e,t)}function To(r,e,t){return D(r,t)<D(e,t)}function vo(r,e,t){return D(r,t)>D(e,t)}function on(r,e,t){return D(r,t)<=D(e,t)}function sn(r,e,t){return D(r,t)>=D(e,t)}function D(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function bo(r,e,t){return r.find(n=>typeof e=="string"?et(n.code||{},t)===e:et(n.code||{},t)===et(e,t))}function Gt(r){if(r)return Array.isArray(r)?r:[r]}var tt=r=>new Promise(e=>{setTimeout(e,r)});var q=(u=>(u.Address="Address",u.Age="Age",u.Annotation="Annotation",u.Attachment="Attachment",u.BackboneElement="BackboneElement",u.CodeableConcept="CodeableConcept",u.Coding="Coding",u.ContactDetail="ContactDetail",u.ContactPoint="ContactPoint",u.Contributor="Contributor",u.Count="Count",u.DataRequirement="DataRequirement",u.Distance="Distance",u.Dosage="Dosage",u.Duration="Duration",u.Expression="Expression",u.Extension="Extension",u.HumanName="HumanName",u.Identifier="Identifier",u.MarketingStatus="MarketingStatus",u.Meta="Meta",u.Money="Money",u.Narrative="Narrative",u.ParameterDefinition="ParameterDefinition",u.Period="Period",u.Population="Population",u.ProdCharacteristic="ProdCharacteristic",u.ProductShelfLife="ProductShelfLife",u.Quantity="Quantity",u.Range="Range",u.Ratio="Ratio",u.Reference="Reference",u.RelatedArtifact="RelatedArtifact",u.SampledData="SampledData",u.Signature="Signature",u.SubstanceAmount="SubstanceAmount",u.SystemString="http://hl7.org/fhirpath/System.String",u.Timing="Timing",u.TriggerDefinition="TriggerDefinition",u.UsageContext="UsageContext",u.base64Binary="base64Binary",u.boolean="boolean",u.canonical="canonical",u.code="code",u.date="date",u.dateTime="dateTime",u.decimal="decimal",u.id="id",u.instant="instant",u.integer="integer",u.markdown="markdown",u.oid="oid",u.positiveInt="positiveInt",u.string="string",u.time="time",u.unsignedInt="unsignedInt",u.uri="uri",u.url="url",u.uuid="uuid",u))(q||{});function Eo(r){for(let e of r.entry){let t=e.resource;t.resourceType==="StructureDefinition"&&rt(t)}}function rt(r){if(!r.name)return;let t=r.snapshot?.element;t&&(t.forEach(n=>an(r,n)),t.forEach(n=>cn(r,n)))}function an(r,e){let t=e.path,n=e.type?.[0]?.code;if(n!==void 0&&n!=="Element"&&n!=="BackboneElement")return;let i=t.split(".");i[0]=r.name;let o=U(i),s=y.types[o];s||(y.types[o]=s={}),s.parentType=s.parentType??U(i.slice(0,i.length-1)),s.display=s.display??o,s.structureDefinition=s.structureDefinition??r,s.elementDefinition=s.elementDefinition??e,s.description=s.description??e.definition,s.properties=s.properties??{}}function cn(r,e){let n=e.path.split(".");if(n.length===1)return;n[0]=r.name;let i=U(n.slice(0,n.length-1)),o=y.types[i];if(!o)return;let s=n[n.length-1];o.properties[s]=e}function Po(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&nt(t)}}function nt(r){for(let e of r.base??[]){let t=y.types[e];t&&(t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r)}}function Co(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?U(r.path?.split(".")):e}function U(r){return r.length===1?r[0]:r.map(S).join("")}function un(r){let e=r.structureDefinition;return e&&e.name===r.elementDefinition.path&&e.kind==="resource"&&!e.abstract}function wo(){let r=[];for(let[e,t]of Object.entries(y.types))un(t)&&r.push(e);return r}function ko(r){return y.types[r]}function Do(r){return y.types[r].searchParams}function Io(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(ln).join(" ").replace("_"," ").replace(/\s+/g," ")}var dn=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function ln(r){let e=r.toUpperCase();return dn.has(e)?e:e.charAt(0)+r.slice(1)}function re(r,e){let t=y.types[r];if(!t)return;let n=t.properties[e]??t.properties[e+"[x]"];if(n){if(n.contentReference){let i=n.contentReference.substring(1).split("."),o=i.pop(),s=U(i);return re(s,o)}return n}}function L(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function Oo(r){return!!(r&&typeof r=="object"&&"reference"in r)}var y=Vt;var _o=20,pn=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(pn||{}),Jt={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},it={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function No(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return Zt(r,t)}function Yt(r){let e=r.pathname.split("/").filter(Boolean).pop();return Zt(e,r.searchParams.entries())}function Mo(r){return Yt(new URL(r,"https://example.com/"))}function Xt(r){return Yt(new URL(r,"https://api.medplum.com/"))}function Zt(r,e){let t={resourceType:r};for(let[n,i]of e)fn(t,n,i);return t}function fn(r,e,t){let n,i,o=e.indexOf(":");switch(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n){case"_sort":mn(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":r.total="accurate",r.count=0;break;case"_include":{let s=zt(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=zt(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":r.fields=t.split(",");break;default:{let s=y.types[r.resourceType]?.searchParams?.[n];s?hn(r,s,i,t):Tn(r,n,i,t)}}}function mn(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function hn(r,e,t,n){if(t==="missing"){ne(r,{code:e.code,operator:"missing",value:n});return}switch(e.type){case"number":case"date":yn(r,e,n);break;case"reference":case"string":case"token":case"uri":gn(r,e,t,n);break;case"quantity":xn(r,e,n);break;default:break}}function yn(r,e,t){let{operator:n,value:i}=er(t);ne(r,{code:e.code,operator:n,value:i})}function gn(r,e,t,n){ne(r,{code:e.code,operator:vn(t),value:n})}function xn(r,e,t){let[n,i,o]=t.split("|"),{operator:s,value:a}=er(n);ne(r,{code:e.code,operator:s,value:a,unitSystem:i,unitCode:o})}function Tn(r,e,t,n){let i="eq";if(t)i=t;else if(n.length>=2){let o=n.substring(0,2);o in it&&(n.length===2||n.at(2)?.match(/\d/))&&(i=o,n=n.substring(o.length))}ne(r,{code:e,operator:i,value:n})}function er(r){let e=r.substring(0,2),t=it[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function vn(r){return Jt[r]??"eq"}function zt(r){let e=r.split(":");if(e.forEach(t=>{if(t==="*")throw new m(k("'*' is not supported as a value for search inclusion parameters"))}),e.length===1)throw new m(k(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new m(k(`Invalid include value '${r}'`))}function ne(r,e){r.filters?r.filters.push(e):r.filters=[e]}function Bo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(bn(t))),r.sortRules&&r.sortRules.length>0&&e.push(Sn(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(Kt("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Kt("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function bn(r){let e=r.operator in Jt?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in it?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Sn(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Kt(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}var ve=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},$=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},be=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new ot(e,this.prefixParselets,this.infixParselets)}},ot=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var Rn=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],j=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
2
2
  `))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&An(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
3
- `?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function An(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Rn.includes(r.value)))}function J(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}function d(r){return[{type:"boolean",value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:"integer",value:r}:typeof r=="number"?{type:"decimal",value:r}:typeof r=="boolean"?{type:"boolean",value:r}:typeof r=="string"?{type:"string",value:r}:R(r)?{type:"Quantity",value:r}:L(r)?{type:r.resourceType,value:r}:{type:"BackboneElement",value:r}}function _(r){return r.length===0?!1:!!r[0].value}function I(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function E(r,e){if(!r.value)return;let t=re(r.type,e);return t?En(r,e,t):Pn(r,e)}function En(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let s of n){let a=e.replace("[x]","")+S(s.code);if(a in r.value){i=r.value[a],o=s.code;break}}if(!v(i))return(o==="Element"||o==="BackboneElement")&&(o=U(t.path?.split("."))),Array.isArray(i)?i.map(s=>tr(s,o)):tr(i,o)}function tr(r,e){return e==="Resource"&&L(r)&&(e=r.resourceType),{type:e,value:r}}function Pn(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in q){let o=e+S(i);if(o in t){n=t[o];break}}if(!v(n))return Array.isArray(n)?n.map(x):x(n)}function Se(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(_(ir(t,i))){n=!0;break}n||e.push(t)}return e}function st(r){return d(!_(r))}function at(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>_(ir(t,e[n]))))}function ir(r,e){let t=r.value,n=e.value;return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):R(t)&&R(n)?d(or(t,n)):d(typeof t=="object"&&typeof n=="object"?ut(r,e):t===n)}function ct(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(rr),e.sort(rr),d(r.every((t,n)=>_(Cn(t,e[n])))))}function Cn(r,e){let t=r.value,n=e.value;return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<.01):R(t)&&R(n)?d(or(t,n)):d(typeof t=="object"&&typeof n=="object"?ut(t,n):typeof t=="string"&&typeof n=="string"?t.toLowerCase()===n.toLowerCase():t===n)}function rr(r,e){let t=r.value,n=e.value;return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function Re(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return wn(t);case"Quantity":return R(t);default:return typeof t=="object"&&t?.resourceType===e}}function wn(r){return!!(r&&typeof r=="object"&&"start"in r)}function R(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function or(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function ut(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(nr(o)&&nr(s)){if(!ut(o,s))return!1}else if(o!==s)return!1}return!0}function nr(r){return r!==null&&typeof r=="object"}var ie=()=>[],b={empty:(r,e)=>d(e.length===0),exists:(r,e,t)=>t?d(e.filter(n=>_(t.eval(r,[n]))).length>0):d(e.length>0),all:(r,e,t)=>d(e.every(n=>_(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:ie,supersetOf:ie,count:(r,e)=>[{type:"integer",value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===b.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>_(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:ie,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Se([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return _(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);if(typeof t=="boolean")return[{type:"boolean",value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(b.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="number"?[{type:"integer",value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:"integer",value:parseInt(t,10)}]:typeof t=="boolean"?[{type:"integer",value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(b.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:"date",value:J(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(b.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:"dateTime",value:J(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(b.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="number"?[{type:"decimal",value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:"decimal",value:parseFloat(t)}]:typeof t=="boolean"?[{type:"decimal",value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(b.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return R(t)?[{type:"Quantity",value:t}]:typeof t=="number"?[{type:"Quantity",value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:"Quantity",value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:"Quantity",value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(b.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return t==null?[]:R(t)?[{type:"string",value:`${t.value} '${t.unit}'`}]:[{type:"string",value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(b.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:"time",value:J("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(b.toTime(r,e).length===1),indexOf:(r,e,t)=>P((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>P((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>P((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>P((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>P((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>P(t=>t.toUpperCase(),r,e),lower:(r,e)=>P(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>P((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>P((n,i)=>!!n.match(i),r,e,t),replaceMatches:(r,e,t,n)=>P((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>P(t=>t.length,r,e),toChars:(r,e)=>P(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>O(Math.abs,r,e),ceiling:(r,e)=>O(Math.ceil,r,e),exp:(r,e)=>O(Math.exp,r,e),floor:(r,e)=>O(Math.floor,r,e),ln:(r,e)=>O(Math.log,r,e),log:(r,e,t)=>O((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>O(Math.pow,r,e,t),round:(r,e)=>O(Math.round,r,e),sqrt:(r,e)=>O(Math.sqrt,r,e),truncate:(r,e)=>O(t=>t|0,r,e),children:ie,descendants:ie,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:"dateTime",value:new Date().toISOString()}],timeOfDay:()=>[{type:"time",value:new Date().toISOString().substring(11)}],today:()=>[{type:"date",value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=b.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=b.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=ye(o[0].value,s[0].value);return[{type:"Quantity",value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof N?n=t.name:t instanceof Q&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:"boolean",value:Re(i,n)})):[]},not:(r,e)=>b.toBoolean(r,e).map(t=>({type:"boolean",value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:"BackboneElement",value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:"BackboneElement",value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:"BackboneElement",value:{namespace:"System",name:"Integer"}}:L(t)?{type:"BackboneElement",value:{namespace:"FHIR",name:t.resourceType}}:{type:"BackboneElement",value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:"boolean",value:o.value?.resourceType===i}))}};function P(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=V(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function O(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=V(t,1),o=R(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?"Quantity":t[0].type,f=o?{...i,value:a}:a;return[{type:c,value:f}]}function V(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Ae=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},w=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},N=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return L(t)&&t.resourceType===this.name?e:E(e,this.name)}toString(){return this.name}},Ee=class{eval(){return[]}toString(){return"{}"}},Pe=class extends ve{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},G=class extends ${constructor(e,t){super("as",e,t)}eval(e,t){return b.ofType(e,this.left.eval(e,t),this.right)}},T=class extends ${},A=class extends T{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=R(s)?s.value:s,f=R(a)?a.value:a,p=this.impl(c,f);return typeof p=="boolean"?d(p):R(s)?[{type:"Quantity",value:{...s,value:p}}]:[x(p)]}},Ce=class extends ${constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:"string",value:o.map(s=>s.value).join("")}]:o}},we=class extends T{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},ke=class extends T{constructor(e,t){super("in",e,t)}eval(e,t){let n=I(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},Q=class extends ${constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Y=class extends ${constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Se([...n,...i])}},De=class extends T{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return at(n,i)}},Ie=class extends T{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(at(n,i))}},Oe=class extends T{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ct(n,i)}},Ve=class extends T{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(ct(n,i))}},z=class extends T{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(Re(n[0],i))}},Ue=class extends T{constructor(e,t){super("and",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},Le=class extends T{constructor(e,t){super("or",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},_e=class extends T{constructor(e,t){super("xor",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},Ne=class extends T{constructor(e,t){super("implies",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},M=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=b[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},K=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var oe=["true","false"],se=["!=","!~","<=",">=","{}","->"];function sr(r){return new j(r,oe,se).tokenize()}var l={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},kn={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Dn={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new K(e,t)},precedence:l.Indexer},In={parse(r,e){if(!(e instanceof N))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new M(e.name,t)},precedence:l.FunctionCall};function On(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function ae(){return new be().registerPrefix("String",{parse:(r,e)=>new w({type:"string",value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new w({type:"dateTime",value:J(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new w({type:"Quantity",value:On(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new w({type:"decimal",value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new w({type:"boolean",value:!0})}).registerPrefix("false",{parse:()=>new w({type:"boolean",value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new N(e.value)}).registerPrefix("{}",{parse:()=>new Ee}).registerPrefix("(",kn).registerInfix("[",Dn).registerInfix("(",In).prefix("+",l.UnaryAdd,(r,e)=>new Pe("+",e,t=>t)).prefix("-",l.UnarySubtract,(r,e)=>new A("-",e,e,(t,n)=>-n)).infixLeft(".",l.Dot,(r,e,t)=>new Q(r,t)).infixLeft("/",l.Divide,(r,e,t)=>new A("/",r,t,(n,i)=>n/i)).infixLeft("*",l.Multiply,(r,e,t)=>new A("*",r,t,(n,i)=>n*i)).infixLeft("+",l.Add,(r,e,t)=>new A("+",r,t,(n,i)=>n+i)).infixLeft("-",l.Subtract,(r,e,t)=>new A("-",r,t,(n,i)=>n-i)).infixLeft("|",l.Union,(r,e,t)=>new Y(r,t)).infixLeft("=",l.Equals,(r,e,t)=>new De(r,t)).infixLeft("!=",l.NotEquals,(r,e,t)=>new Ie(r,t)).infixLeft("~",l.Equivalent,(r,e,t)=>new Oe(r,t)).infixLeft("!~",l.NotEquivalent,(r,e,t)=>new Ve(r,t)).infixLeft("<",l.LessThan,(r,e,t)=>new A("<",r,t,(n,i)=>n<i)).infixLeft("<=",l.LessThanOrEquals,(r,e,t)=>new A("<=",r,t,(n,i)=>n<=i)).infixLeft(">",l.GreaterThan,(r,e,t)=>new A(">",r,t,(n,i)=>n>i)).infixLeft(">=",l.GreaterThanOrEquals,(r,e,t)=>new A(">=",r,t,(n,i)=>n>=i)).infixLeft("&",l.Ampersand,(r,e,t)=>new Ce(r,t)).infixLeft("and",l.And,(r,e,t)=>new Ue(r,t)).infixLeft("as",l.As,(r,e,t)=>new G(r,t)).infixLeft("contains",l.Contains,(r,e,t)=>new we(r,t)).infixLeft("div",l.Divide,(r,e,t)=>new A("div",r,t,(n,i)=>n/i|0)).infixLeft("in",l.In,(r,e,t)=>new ke(r,t)).infixLeft("is",l.Is,(r,e,t)=>new z(r,t)).infixLeft("mod",l.Modulo,(r,e,t)=>new A("mod",r,t,(n,i)=>n%i)).infixLeft("or",l.Or,(r,e,t)=>new Le(r,t)).infixLeft("xor",l.Xor,(r,e,t)=>new _e(r,t)).infixLeft("implies",l.Implies,(r,e,t)=>new Ne(r,t))}var Vn=ae();function dt(r){return new Ae(r,Vn.construct(sr(r)).consumeAndParse())}function ce(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return lt(r,t).map(n=>n.value)}function lt(r,e,t){let n=t||{};return dt(r).eval({variables:n},e)}var ar=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(ar||{});function cr(r,e){let t=y.types[r].searchParamsDetails?.[e.code];return t||(t=Ln(r,e)),t}function Un(r,e,t){let n=y.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ln(r,e){let t=e.code,n=Mn(t),i=dr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ue(a);c.length===1&&c[0]instanceof T?o.propertyTypes.add("boolean"):ur(o,ue(a),r,1)}let s={columnName:n,type:Bn(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Un(r,t,s),s}function ur(r,e,t,n){let i=e[n];if(i instanceof G){r.propertyTypes.add(i.right.toString());return}if(i instanceof M){_n(r,i);return}let o=i.toString(),s=re(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof K&&(a=!0,c++),s.max!=="0"&&s.max!=="1"&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let f of s.type)r.propertyTypes.add(f.code);return}for(let f of s.type){let p=f.code;Nn(p)&&(p=U(s.path?.split("."))),ur(r,e,p,c)}}function _n(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof z){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Nn(r){return r==="Element"||r==="BackboneElement"}function Mn(r){return r.split("-").reduce((e,t,n)=>e+(n?S(t):t),"")}function Bn(r,e){switch(r.type){case"date":return e.size===1&&e.has("date")?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has("canonical")?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has("boolean")?"BOOLEAN":"TEXT";default:return"TEXT"}}function dr(r,e){let t=[],n=dt(e);return pt(r,n.child,t),t}function Es(r,e){let t=dr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function pt(r,e,t){e instanceof Y?(pt(r,e.left,t),pt(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ue(r){return r instanceof G||r instanceof K?[ue(r.left),r].flat():r instanceof T?[r]:r instanceof Q?[ue(r.left),ue(r.right)].flat():r instanceof M&&r.name==="where"&&!(r.args[0]instanceof z)?[]:[r]}function lr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Fn(r,e,t))return!1}return!0}function Fn(r,e,t){let n=y.types[e.resourceType].searchParams?.[t.code];switch(n?.type){case"reference":return qn(r,t,n);case"string":case"uri":return pr(r,t,n);case"token":return $n(r,t,n);case"date":return Qn(r,t,n);default:return!1}}function qn(r,e,t){let n=ce(t.expression,r),i=Me(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function $n(r,e,t){return cr(r.resourceType,t).type==="BOOLEAN"?jn(r,e,t):pr(r,e,t,!0)}function jn(r,e,t){let n=ce(t.expression,r),i=e.value==="true",o=n.includes(i);return Me(e.operator)?!o:o}function pr(r,e,t,n){let i=ce(t.expression,r),o=e.value.split(","),s=Me(e.operator);for(let a of i)for(let c of o)if(ft(a,e.operator,c,n))return!s;return s}function ft(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ft(r,e,o,!1)&&(!s||ft(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function Qn(r,e,t){let n=ce(t.expression,r),i=e.value.split(","),o=Me(e.operator);for(let s of n)for(let a of i)if(Hn(s,e.operator,a))return!o;return o}function Hn(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function Me(r){return r==="ne"||r==="not"}var Wn=["CapabilityStatement","CompartmentDefinition","ImplementationGuide","OperationDefinition","SearchParameter","StructureDefinition"],Gn=["DomainConfiguration","JsonWebKey","Login","User"],zn=["PasswordChangeRequest","Project","ProjectMembership"];function Vs(r,e){if(r.resource){for(let t of r.resource)if(mt(t.resourceType,e))return!0}return!1}function Kn(r,e){if(Gn.includes(e)||Wn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(mt(t.resourceType,e)&&!t.readonly)return!0}return!1}function Us(r,e){let t=e.resourceType;return Kn(r,t)?Jn(r,e,!1):!1}function Jn(r,e,t){if(r.resource){for(let n of r.resource)if(Yn(e,n,t))return!0}return!1}function Yn(r,e,t){let n=r.resourceType;return!(!mt(e.resourceType,n)||!t&&e.readonly||e.compartment&&!r.meta?.compartment?.find(i=>i.reference===e.compartment?.reference)||e.criteria&&!lr(r,Xt(e.criteria)))}function mt(r,e){return r===e||r==="*"&&!zn.includes(e)}function fr(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function mr(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function Ns(r){for(let n of r.entry||[])delete n.resource?.meta,n.fullUrl="urn:uuid:"+n.resource?.id,delete n.resource?.id;let e=r.entry,t=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:e?.map(n=>({fullUrl:n.fullUrl,request:{method:"POST",url:n.resource.resourceType},resource:n.resource}))},Xn,2);return JSON.parse(t)}function Xn(r,e){return r==="reference"&&typeof e=="string"&&e.includes("/")?"urn:uuid:"+e.split("/")[1]:e}var Be=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};function ht(){let r=new Uint32Array(28);return crypto.getRandomValues(r),jt(r.buffer)}async function hr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function Zn(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=fr(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function yt(r){let[e,t,n]=r.split(".");return Zn(t)}function yr(r){try{return typeof yt(r).login_id=="string"}catch{return!1}}var ei,C=class{constructor(e){this[ei]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};ei=Symbol.toStringTag;var Fe=class{constructor(){this.storage=typeof localStorage<"u"?localStorage:new gt}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Ft(t):void 0)}},gt=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}};var ia="2.0.27-f7222e0",ti="https://api.medplum.com/",ri=1e3,ni=6e4,ii="application/json",gr="application/fhir+json",oi="application/json-patch+json",xr={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},si=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(si||{}),ai=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(ai||{}),Tr=class extends EventTarget{constructor(t){super();if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.fetch=t?.fetch??ci(),this.storage=t?.storage??new Fe,this.createPdfImpl=t?.createPdf,this.baseUrl=br(t?.baseUrl)??ti,this.fhirBaseUrl=this.baseUrl+(br(t?.fhirUrlPath)??"fhir/R4/"),this.clientId=t?.clientId??"",this.authorizeUrl=t?.authorizeUrl??this.baseUrl+"oauth2/authorize",this.tokenUrl=t?.tokenUrl??this.baseUrl+"oauth2/token",this.logoutUrl=t?.logoutUrl??this.baseUrl+"oauth2/logout",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??ni,this.cacheTime>0?this.requestCache=new Be(t?.resourceCacheSize??ri):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0);let n=this.getActiveLogin();n&&(this.setAccessToken(n.accessToken,n.refreshToken),this.refreshProfile().catch(console.log)),this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent(new Event("change"))}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new C(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),n&&this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),n&&this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,oi),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o){let s=await this.ensureCodeChallenge(o);window.location.assign(this.getExternalAuthRedirectUri(t,n,i,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o){let s=new URL(t);return s.searchParams.set("response_type","code"),s.searchParams.set("client_id",n),s.searchParams.set("redirect_uri",i),s.searchParams.set("scope","openid profile email"),s.searchParams.set("state",JSON.stringify(o)),s.toString()}fhirUrl(...t){return new URL(this.fhirBaseUrl+t.join("/"))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C((async()=>{let f=await this.get(o,i);if(f.entry)for(let p of f.entry)this.cacheResource(p.resource);return f})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,o.searchParams,i).then(f=>f.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,n,i).then(Rr));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(f=>f.relation==="next");if(!a.entry?.length&&!c)break;yield Rr(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return xr;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new C(Promise.reject(new Error("Missing reference")));if(i==="system")return new C(Promise.resolve(xr));let[o,s]=i.split("/");return!o||!s?new C(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}getSchema(){return y}requestSchema(t){if(t in y.types)return Promise.resolve(y);let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=`{
3
+ `?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function An(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Rn.includes(r.value)))}function J(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}function d(r){return[{type:"boolean",value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:"integer",value:r}:typeof r=="number"?{type:"decimal",value:r}:typeof r=="boolean"?{type:"boolean",value:r}:typeof r=="string"?{type:"string",value:r}:R(r)?{type:"Quantity",value:r}:L(r)?{type:r.resourceType,value:r}:{type:"BackboneElement",value:r}}function _(r){return r.length===0?!1:!!r[0].value}function I(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function E(r,e){if(!r.value)return;let t=re(r.type,e);return t?En(r,e,t):Pn(r,e)}function En(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let s of n){let a=e.replace("[x]","")+S(s.code);if(a in r.value){i=r.value[a],o=s.code;break}}if(!v(i))return(o==="Element"||o==="BackboneElement")&&(o=U(t.path?.split("."))),Array.isArray(i)?i.map(s=>tr(s,o)):tr(i,o)}function tr(r,e){return e==="Resource"&&L(r)&&(e=r.resourceType),{type:e,value:r}}function Pn(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in q){let o=e+S(i);if(o in t){n=t[o];break}}if(!v(n))return Array.isArray(n)?n.map(x):x(n)}function Se(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(_(ir(t,i))){n=!0;break}n||e.push(t)}return e}function st(r){return d(!_(r))}function at(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>_(ir(t,e[n]))))}function ir(r,e){let t=r.value,n=e.value;return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):R(t)&&R(n)?d(or(t,n)):d(typeof t=="object"&&typeof n=="object"?ut(r,e):t===n)}function ct(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(rr),e.sort(rr),d(r.every((t,n)=>_(Cn(t,e[n])))))}function Cn(r,e){let t=r.value,n=e.value;return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<.01):R(t)&&R(n)?d(or(t,n)):d(typeof t=="object"&&typeof n=="object"?ut(t,n):typeof t=="string"&&typeof n=="string"?t.toLowerCase()===n.toLowerCase():t===n)}function rr(r,e){let t=r.value,n=e.value;return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function Re(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return wn(t);case"Quantity":return R(t);default:return typeof t=="object"&&t?.resourceType===e}}function wn(r){return!!(r&&typeof r=="object"&&"start"in r)}function R(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function or(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function ut(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(nr(o)&&nr(s)){if(!ut(o,s))return!1}else if(o!==s)return!1}return!0}function nr(r){return r!==null&&typeof r=="object"}var ie=()=>[],b={empty:(r,e)=>d(e.length===0),exists:(r,e,t)=>t?d(e.filter(n=>_(t.eval(r,[n]))).length>0):d(e.length>0),all:(r,e,t)=>d(e.every(n=>_(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:ie,supersetOf:ie,count:(r,e)=>[{type:"integer",value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===b.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>_(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:ie,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Se([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return _(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);if(typeof t=="boolean")return[{type:"boolean",value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(b.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="number"?[{type:"integer",value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:"integer",value:parseInt(t,10)}]:typeof t=="boolean"?[{type:"integer",value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(b.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:"date",value:J(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(b.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:"dateTime",value:J(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(b.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return typeof t=="number"?[{type:"decimal",value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:"decimal",value:parseFloat(t)}]:typeof t=="boolean"?[{type:"decimal",value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(b.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return R(t)?[{type:"Quantity",value:t}]:typeof t=="number"?[{type:"Quantity",value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:"Quantity",value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:"Quantity",value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(b.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);return t==null?[]:R(t)?[{type:"string",value:`${t.value} '${t.unit}'`}]:[{type:"string",value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(b.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=V(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:"time",value:J("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(b.toTime(r,e).length===1),indexOf:(r,e,t)=>P((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>P((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>P((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>P((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>P((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>P(t=>t.toUpperCase(),r,e),lower:(r,e)=>P(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>P((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>P((n,i)=>!!n.match(i),r,e,t),replaceMatches:(r,e,t,n)=>P((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>P(t=>t.length,r,e),toChars:(r,e)=>P(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>O(Math.abs,r,e),ceiling:(r,e)=>O(Math.ceil,r,e),exp:(r,e)=>O(Math.exp,r,e),floor:(r,e)=>O(Math.floor,r,e),ln:(r,e)=>O(Math.log,r,e),log:(r,e,t)=>O((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>O(Math.pow,r,e,t),round:(r,e)=>O(Math.round,r,e),sqrt:(r,e)=>O(Math.sqrt,r,e),truncate:(r,e)=>O(t=>t|0,r,e),children:ie,descendants:ie,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:"dateTime",value:new Date().toISOString()}],timeOfDay:()=>[{type:"time",value:new Date().toISOString().substring(11)}],today:()=>[{type:"date",value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=b.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=b.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=ye(o[0].value,s[0].value);return[{type:"Quantity",value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof N?n=t.name:t instanceof Q&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:"boolean",value:Re(i,n)})):[]},not:(r,e)=>b.toBoolean(r,e).map(t=>({type:"boolean",value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:"BackboneElement",value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:"BackboneElement",value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:"BackboneElement",value:{namespace:"System",name:"Integer"}}:L(t)?{type:"BackboneElement",value:{namespace:"FHIR",name:t.resourceType}}:{type:"BackboneElement",value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:"boolean",value:o.value?.resourceType===i}))}};function P(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=V(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function O(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=V(t,1),o=R(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?"Quantity":t[0].type,f=o?{...i,value:a}:a;return[{type:c,value:f}]}function V(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Ae=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},w=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},N=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return L(t)&&t.resourceType===this.name?e:E(e,this.name)}toString(){return this.name}},Ee=class{eval(){return[]}toString(){return"{}"}},Pe=class extends ve{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},G=class extends ${constructor(e,t){super("as",e,t)}eval(e,t){return b.ofType(e,this.left.eval(e,t),this.right)}},T=class extends ${},A=class extends T{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=R(s)?s.value:s,f=R(a)?a.value:a,p=this.impl(c,f);return typeof p=="boolean"?d(p):R(s)?[{type:"Quantity",value:{...s,value:p}}]:[x(p)]}},Ce=class extends ${constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:"string",value:o.map(s=>s.value).join("")}]:o}},we=class extends T{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},ke=class extends T{constructor(e,t){super("in",e,t)}eval(e,t){let n=I(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},Q=class extends ${constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Y=class extends ${constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Se([...n,...i])}},De=class extends T{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return at(n,i)}},Ie=class extends T{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(at(n,i))}},Oe=class extends T{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ct(n,i)}},Ve=class extends T{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(ct(n,i))}},z=class extends T{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(Re(n[0],i))}},Ue=class extends T{constructor(e,t){super("and",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},Le=class extends T{constructor(e,t){super("or",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},_e=class extends T{constructor(e,t){super("xor",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},Ne=class extends T{constructor(e,t){super("implies",e,t)}eval(e,t){let n=I(this.left.eval(e,t),"boolean"),i=I(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},M=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=b[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},K=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var oe=["true","false"],se=["!=","!~","<=",">=","{}","->"];function sr(r){return new j(r,oe,se).tokenize()}var l={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},kn={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Dn={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new K(e,t)},precedence:l.Indexer},In={parse(r,e){if(!(e instanceof N))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new M(e.name,t)},precedence:l.FunctionCall};function On(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function ae(){return new be().registerPrefix("String",{parse:(r,e)=>new w({type:"string",value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new w({type:"dateTime",value:J(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new w({type:"Quantity",value:On(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new w({type:"decimal",value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new w({type:"boolean",value:!0})}).registerPrefix("false",{parse:()=>new w({type:"boolean",value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new N(e.value)}).registerPrefix("{}",{parse:()=>new Ee}).registerPrefix("(",kn).registerInfix("[",Dn).registerInfix("(",In).prefix("+",l.UnaryAdd,(r,e)=>new Pe("+",e,t=>t)).prefix("-",l.UnarySubtract,(r,e)=>new A("-",e,e,(t,n)=>-n)).infixLeft(".",l.Dot,(r,e,t)=>new Q(r,t)).infixLeft("/",l.Divide,(r,e,t)=>new A("/",r,t,(n,i)=>n/i)).infixLeft("*",l.Multiply,(r,e,t)=>new A("*",r,t,(n,i)=>n*i)).infixLeft("+",l.Add,(r,e,t)=>new A("+",r,t,(n,i)=>n+i)).infixLeft("-",l.Subtract,(r,e,t)=>new A("-",r,t,(n,i)=>n-i)).infixLeft("|",l.Union,(r,e,t)=>new Y(r,t)).infixLeft("=",l.Equals,(r,e,t)=>new De(r,t)).infixLeft("!=",l.NotEquals,(r,e,t)=>new Ie(r,t)).infixLeft("~",l.Equivalent,(r,e,t)=>new Oe(r,t)).infixLeft("!~",l.NotEquivalent,(r,e,t)=>new Ve(r,t)).infixLeft("<",l.LessThan,(r,e,t)=>new A("<",r,t,(n,i)=>n<i)).infixLeft("<=",l.LessThanOrEquals,(r,e,t)=>new A("<=",r,t,(n,i)=>n<=i)).infixLeft(">",l.GreaterThan,(r,e,t)=>new A(">",r,t,(n,i)=>n>i)).infixLeft(">=",l.GreaterThanOrEquals,(r,e,t)=>new A(">=",r,t,(n,i)=>n>=i)).infixLeft("&",l.Ampersand,(r,e,t)=>new Ce(r,t)).infixLeft("and",l.And,(r,e,t)=>new Ue(r,t)).infixLeft("as",l.As,(r,e,t)=>new G(r,t)).infixLeft("contains",l.Contains,(r,e,t)=>new we(r,t)).infixLeft("div",l.Divide,(r,e,t)=>new A("div",r,t,(n,i)=>n/i|0)).infixLeft("in",l.In,(r,e,t)=>new ke(r,t)).infixLeft("is",l.Is,(r,e,t)=>new z(r,t)).infixLeft("mod",l.Modulo,(r,e,t)=>new A("mod",r,t,(n,i)=>n%i)).infixLeft("or",l.Or,(r,e,t)=>new Le(r,t)).infixLeft("xor",l.Xor,(r,e,t)=>new _e(r,t)).infixLeft("implies",l.Implies,(r,e,t)=>new Ne(r,t))}var Vn=ae();function dt(r){return new Ae(r,Vn.construct(sr(r)).consumeAndParse())}function ce(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return lt(r,t).map(n=>n.value)}function lt(r,e,t){let n=t||{};return dt(r).eval({variables:n},e)}var ar=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(ar||{});function cr(r,e){let t=y.types[r].searchParamsDetails?.[e.code];return t||(t=Ln(r,e)),t}function Un(r,e,t){let n=y.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ln(r,e){let t=e.code,n=Mn(t),i=dr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ue(a);c.length===1&&c[0]instanceof T?o.propertyTypes.add("boolean"):ur(o,ue(a),r,1)}let s={columnName:n,type:Bn(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Un(r,t,s),s}function ur(r,e,t,n){let i=e[n];if(i instanceof G){r.propertyTypes.add(i.right.toString());return}if(i instanceof M){_n(r,i);return}let o=i.toString(),s=re(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof K&&(a=!0,c++),s.max!=="0"&&s.max!=="1"&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let f of s.type)r.propertyTypes.add(f.code);return}for(let f of s.type){let p=f.code;Nn(p)&&(p=U(s.path?.split("."))),ur(r,e,p,c)}}function _n(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof z){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Nn(r){return r==="Element"||r==="BackboneElement"}function Mn(r){return r.split("-").reduce((e,t,n)=>e+(n?S(t):t),"")}function Bn(r,e){switch(r.type){case"date":return e.size===1&&e.has("date")?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has("canonical")?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has("boolean")?"BOOLEAN":"TEXT";default:return"TEXT"}}function dr(r,e){let t=[],n=dt(e);return pt(r,n.child,t),t}function Es(r,e){let t=dr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function pt(r,e,t){e instanceof Y?(pt(r,e.left,t),pt(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ue(r){return r instanceof G||r instanceof K?[ue(r.left),r].flat():r instanceof T?[r]:r instanceof Q?[ue(r.left),ue(r.right)].flat():r instanceof M&&r.name==="where"&&!(r.args[0]instanceof z)?[]:[r]}function lr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Fn(r,e,t))return!1}return!0}function Fn(r,e,t){let n=y.types[e.resourceType].searchParams?.[t.code];switch(n?.type){case"reference":return qn(r,t,n);case"string":case"uri":return pr(r,t,n);case"token":return $n(r,t,n);case"date":return Qn(r,t,n);default:return!1}}function qn(r,e,t){let n=ce(t.expression,r),i=Me(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function $n(r,e,t){return cr(r.resourceType,t).type==="BOOLEAN"?jn(r,e,t):pr(r,e,t,!0)}function jn(r,e,t){let n=ce(t.expression,r),i=e.value==="true",o=n.includes(i);return Me(e.operator)?!o:o}function pr(r,e,t,n){let i=ce(t.expression,r),o=e.value.split(","),s=Me(e.operator);for(let a of i)for(let c of o)if(ft(a,e.operator,c,n))return!s;return s}function ft(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ft(r,e,o,!1)&&(!s||ft(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function Qn(r,e,t){let n=ce(t.expression,r),i=e.value.split(","),o=Me(e.operator);for(let s of n)for(let a of i)if(Hn(s,e.operator,a))return!o;return o}function Hn(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function Me(r){return r==="ne"||r==="not"}var Wn=["CapabilityStatement","CompartmentDefinition","ImplementationGuide","OperationDefinition","SearchParameter","StructureDefinition"],Gn=["DomainConfiguration","JsonWebKey","Login","User"],zn=["PasswordChangeRequest","Project","ProjectMembership"];function Vs(r,e){if(r.resource){for(let t of r.resource)if(mt(t.resourceType,e))return!0}return!1}function Kn(r,e){if(Gn.includes(e)||Wn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(mt(t.resourceType,e)&&!t.readonly)return!0}return!1}function Us(r,e){let t=e.resourceType;return Kn(r,t)?Jn(r,e,!1):!1}function Jn(r,e,t){if(r.resource){for(let n of r.resource)if(Yn(e,n,t))return!0}return!1}function Yn(r,e,t){let n=r.resourceType;return!(!mt(e.resourceType,n)||!t&&e.readonly||e.compartment&&!r.meta?.compartment?.find(i=>i.reference===e.compartment?.reference)||e.criteria&&!lr(r,Xt(e.criteria)))}function mt(r,e){return r===e||r==="*"&&!zn.includes(e)}function fr(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function mr(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function Ns(r){for(let n of r.entry||[])delete n.resource?.meta,n.fullUrl="urn:uuid:"+n.resource?.id,delete n.resource?.id;let e=r.entry,t=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:e?.map(n=>({fullUrl:n.fullUrl,request:{method:"POST",url:n.resource.resourceType},resource:n.resource}))},Xn,2);return JSON.parse(t)}function Xn(r,e){return r==="reference"&&typeof e=="string"&&e.includes("/")?"urn:uuid:"+e.split("/")[1]:e}var Be=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};function ht(){let r=new Uint32Array(28);return crypto.getRandomValues(r),jt(r.buffer)}async function hr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function Zn(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=fr(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function yt(r){let[e,t,n]=r.split(".");return Zn(t)}function yr(r){try{return typeof yt(r).login_id=="string"}catch{return!1}}var ei,C=class{constructor(e){this[ei]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};ei=Symbol.toStringTag;var Fe=class{constructor(){this.storage=typeof localStorage<"u"?localStorage:new gt}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Ft(t):void 0)}},gt=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}};var ia="2.0.28-c60d344",ti="https://api.medplum.com/",ri=1e3,ni=6e4,ii="application/json",gr="application/fhir+json",oi="application/json-patch+json",xr={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},si=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(si||{}),ai=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(ai||{}),Tr=class extends EventTarget{constructor(t){super();if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.fetch=t?.fetch??ci(),this.storage=t?.storage??new Fe,this.createPdfImpl=t?.createPdf,this.baseUrl=br(t?.baseUrl)??ti,this.fhirBaseUrl=this.baseUrl+(br(t?.fhirUrlPath)??"fhir/R4/"),this.clientId=t?.clientId??"",this.authorizeUrl=t?.authorizeUrl??this.baseUrl+"oauth2/authorize",this.tokenUrl=t?.tokenUrl??this.baseUrl+"oauth2/token",this.logoutUrl=t?.logoutUrl??this.baseUrl+"oauth2/logout",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??ni,this.cacheTime>0?this.requestCache=new Be(t?.resourceCacheSize??ri):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0);let n=this.getActiveLogin();n&&(this.setAccessToken(n.accessToken,n.refreshToken),this.refreshProfile().catch(console.log)),this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent(new Event("change"))}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new C(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),n&&this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),n&&this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,oi),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o){let s=await this.ensureCodeChallenge(o);window.location.assign(this.getExternalAuthRedirectUri(t,n,i,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o){let s=new URL(t);return s.searchParams.set("response_type","code"),s.searchParams.set("client_id",n),s.searchParams.set("redirect_uri",i),s.searchParams.set("scope","openid profile email"),s.searchParams.set("state",JSON.stringify(o)),s.toString()}fhirUrl(...t){return new URL(this.fhirBaseUrl+t.join("/"))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C((async()=>{let f=await this.get(o,i);if(f.entry)for(let p of f.entry)this.cacheResource(p.resource);return f})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,o.searchParams,i).then(f=>f.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,n,i).then(Rr));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(f=>f.relation==="next");if(!a.entry?.length&&!c)break;yield Rr(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return xr;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new C(Promise.reject(new Error("Missing reference")));if(i==="system")return new C(Promise.resolve(xr));let[o,s]=i.split("/");return!o||!s?new C(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}getSchema(){return y}requestSchema(t){if(t in y.types)return Promise.resolve(y);let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=`{
4
4
  StructureDefinitionList(name: "${t}") {
5
5
  name,
6
6
  description,
@@ -28,5 +28,5 @@ var He="ok",We="created",Ge="gone",ze="not-modified",Ke="not-found",Ct="unauthor
28
28
  expression,
29
29
  target
30
30
  }
31
- }`.replace(/\s+/g," "),a=await this.graphql(s);for(let c of a.data.StructureDefinitionList)rt(c);for(let c of a.data.SearchParameterList)nt(c);return y})());return this.setCacheEntry(n,o),o}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}createBinary(t,n,i,o){let s=this.fhirUrl("Binary");return n&&s.searchParams.set("_filename",n),o?this.uploadwithProgress(s,t,i,o):this.post(s,t,i)}uploadwithProgress(t,n,i,o){return new Promise((s,a)=>{let c=new XMLHttpRequest;c.responseType="json",c.onabort=()=>a(new Error("Request aborted")),c.onerror=()=>a(new Error("Request error")),o&&(c.upload.onprogress=f=>o(f),c.upload.onload=f=>o(f)),c.onload=()=>{c.status>=200&&c.status<300?s(c.response):a(new Error(c.statusText))},c.open("POST",t),c.withCredentials=!0,c.setRequestHeader("Authorization","Bearer "+this.accessToken),c.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),c.setRequestHeader("Content-Type",i),c.setRequestHeader("X-Medplum","extended"),c.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=te(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=te(t)),this.createResource({resourceType:"Communication",basedOn:[te(t)],encounter:s,subject:a,sender:o?te(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");this.invalidateSearches(t.resourceType);let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,"application/json",n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},ii,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.medplumServer=yr(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0,this.sessionDetails=i,this.dispatchEvent(new Event("change")),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise&&await this.profilePromise,this.getProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){return this.refreshPromise&&await this.refreshPromise,this.addFetchOptionsDefaults(n),(await this.fetch(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({...o,resourceType:"Media",content:{contentType:n,url:"Binary/"+a.id,title:i}},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await Sr(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new C(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){this.refreshPromise&&await this.refreshPromise,i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new m(Dt);let c;if(a)try{c=await t.json()}catch(f){throw console.error("Error parsing response",t.status,f),f}if(t.status>=400)throw new m(Ye(c));return c}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(s=await this.fetch(t,n),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await tt(o)}return s}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let c=await Sr(a);c&&(i=await this.fetchWithRetry(c,s))}await tt(o)}return this.parseResponse(i,"POST",t)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new m(Ye(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Je(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept=gr,n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=gr),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=ht();sessionStorage.setItem("pkceState",t);let n=ht();sessionStorage.setItem("codeVerifier",n);let i=await hr(n),o=Qt(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??vr()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??vr()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=mr(t+":"+n)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t,credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o=await this.fetch(this.tokenUrl,n);if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new m(k(a.error_description))}catch(a){throw new m(k("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token,i=yt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience");return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent(new Event("offline")),t>=n-1)throw i}};function ci(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function vr(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function br(r){return r&&(r.endsWith("/")?r:r+"/")}async function Sr(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(he(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function Rr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var ui=[...se,"->","<<",">>"];function Ar(r){return new j(r,oe,ui).tokenize()}var xt=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}parse(){for(this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.context=n[0],e.element=n[1]}else e.context=t;if(this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("default"),this.parser.consumeAndParse()),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let n=this.parser.consumeAndParse(l.Arrow);e.condition=n.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let n=this.parser.consumeAndParse(l.Arrow);e.check=n.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.contextType="variable",e.context=n[0],e.element=n[1]}else e.context=t;return this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="share"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){e.transform="copy";let t=this.parser.consumeAndParse(l.As);if(t instanceof N)this.parseRuleTargetSymbol(e,t);else if(t instanceof M)this.parseRuleTargetFunction(e,t);else if(t instanceof w)this.parseRuleTargetLiteral(e,t);else throw new Error(`Unexpected FHIRPath: ${t}`)}parseRuleTargetSymbol(e,t){e.parameter=[{valueId:t.name}]}parseRuleTargetFunction(e,t){let n=t.name;switch(n){case"create":e.parameter=[{valueString:t.args[0].value.value}];break;case"translate":e.parameter=[{}];break;default:throw new Error("Unknown target function: "+n)}}parseRuleTargetLiteral(e,t){switch(t.value.type){case"boolean":e.parameter=[{valueBoolean:t.value.value}];break;case"decimal":e.parameter=[{valueDecimal:t.value.value}];break;case"string":e.parameter=[{valueString:t.value.value}];break;default:throw new Error("Unknown target literal type: "+t.value.type)}}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(l.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){for(;this.parser.peek()?.value!=="}";)this.parser.consume();this.parser.consume("}")}},di=ae().registerInfix("->",{precedence:l.Arrow}).registerInfix(";",{precedence:l.Semicolon});function pa(r){let e=di.construct(Ar(r));return e.removeComments(),new xt(e).parse()}var li=[...se,"eq","ne","co"];function Er(r){return new j(r,oe,li,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var qe=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},$e=class{constructor(e){this.child=e}},je=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var pi={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:void 0,identifier:"identifier"};function fi(r){let e=pi[r];if(!e)throw new m(k("Invalid operator: "+r));return e}var Tt=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new $e(this.parse()),this.parser.consume(")")):e=new qe(this.parser.consume("Symbol").value,fi(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new je(t,e,this.parse())):e}},mi=ae();function Aa(r){let e=mi.construct(Er(r));return e.removeComments(),new Tt(e).parse()}var H=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh2(){return this.fieldSeparator+this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},Pr=class r{constructor(e,t=new H){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new de(["MSH",this.context.getMsh2(),o,s,n,i,e.toISOString(),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new de(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new H("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>de.parse(n,t)),t)}},de=class r{constructor(e,t=new H){this.context=t,qt(e)?this.fields=e.map(n=>le.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return le.parse(this.context.fieldSeparator,this.context);if(e>1)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e).getComponent(t,n,i)}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new H){return new r(e.split(t.fieldSeparator).map(n=>le.parse(n,t)),t)}},le=class r{constructor(e,t=new H){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new H){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Ca(r,e){if(!r)return;e={seconds:!0,tzOffset:"Z",...e};let t=Number.parseInt(r.substring(0,4),10),n=Number.parseInt(r.substring(4,6),10),i=Number.parseInt(r.substring(6,8),10),o=Number.parseInt(r.substring(8,10),10),s=Number.parseInt(r.substring(10,12),10),a=e.seconds?Number.parseInt(r.substring(12,14),10):0;return`${X(t)}-${X(n)}-${X(i)}T${X(o)}:${X(s)}:${X(a)}.000${e.tzOffset}`}function X(r){return r.toString().padStart(2,"0")}var hi={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},yi=new Set(["resourceType","id","meta","implicitRules","language","text","contained","extension","modifierExtension"]);function gi(r){let e=y.types[r];return e&&e.structureDefinition.id===r&&e.structureDefinition.kind==="resource"}function Ua(r){if(!r)throw new m(B("Resource type is null"));if(!gi(r))throw new m(B("Unknown resource type"))}function La(r){new vt(r).validate()}var vt=class{constructor(e){this.issues=[],this.root=e}validate(){let e=this.root;if(!e)throw new m(B("Resource is null"));let t=e.resourceType;if(!t)throw new m(B("Missing resource type"));if(bt(e,"",this.issues),this.validateObject(x(e),t),this.issues.length>0)throw new m({resourceType:"OperationOutcome",issue:this.issues})}validateObject(e,t){let n=y.types[e.type];if(!n)throw new m(B("Unknown type: "+e.type));let i=n.properties;this.checkProperties(t,i,e),this.checkAdditionalProperties(t,e,i)}checkProperties(e,t,n){for(let[i,o]of Object.entries(t))this.checkProperty(e+"."+i,o,n)}checkProperty(e,t,n){let i=e.split(".").pop(),o=E(n,i);if(v(o)){t.min!==void 0&&t.min>0&&this.issues.push(h(e,"Missing required property"));return}if(t.max==="*"){if(!Array.isArray(o)){this.issues.push(h(e,"Expected array for property"));return}for(let s of o)this.checkPropertyValue(e,t,s)}else{if(Array.isArray(o)){this.issues.push(h(e,"Expected single value for property"));return}this.checkPropertyValue(e,t,o)}}checkPropertyValue(e,t,n){n.value!==null&&(Te(n.type.charAt(0))?this.validatePrimitiveType(t,n):this.validateObject(n,e))}validatePrimitiveType(e,t){let{type:n,value:i}=t;if(i===null)return;let o=hi[t.type];if(typeof i!==o){this.createIssue(e,"Invalid type for "+n);return}o==="string"?this.validateString(e,n,i):o==="number"&&this.validateNumber(e,n,i)}validateString(e,t,n){if(!n.trim()){this.createIssue(e,"Invalid empty string");return}let i=y.types[t]?.properties.value;if(i?.type){let o=Bt(i.type[0],"http://hl7.org/fhir/StructureDefinition/regex");o&&(new RegExp(o).exec(n)||this.createIssue(e,"Invalid "+t+" format"))}}validateNumber(e,t,n){if(isNaN(n)||!isFinite(n)){this.createIssue(e,"Invalid "+t+" value");return}xi(t)&&!Number.isInteger(n)&&this.createIssue(e,"Number is not an integer"),t==="positiveInt"&&n<=0&&this.createIssue(e,"Number is less than or equal to zero"),t==="unsignedInt"&&n<0&&this.createIssue(e,"Number is negative")}checkAdditionalProperties(e,t,n){let i=t.value;for(let o of Object.keys(i))this.checkAdditionalProperty(e,o,t,n)}checkAdditionalProperty(e,t,n,i){if(!yi.has(t)&&!(t in i)&&!Ti(t,n,i)&&!this.checkPrimitiveElement(e,t,n)){let o=`${e}.${t}`;this.issues.push(h(o,`Invalid additional property "${o}"`))}}checkPrimitiveElement(e,t,n){return!t.startsWith("_")||!(t.slice(1)in n.value)?!1:(this.validateObject({type:"Element",value:n.value[t]},e),!0)}createIssue(e,t){this.issues.push(h(e.path,t))}};function xi(r){return r==="integer"||r==="positiveInt"||r==="unsignedInt"}function Ti(r,e,t){for(let n of Object.keys(t)){if(!n.endsWith("[x]"))continue;let i=n.replace("[x]","");if(!r.startsWith(i))continue;let o=E(e,n);if(o&&(Array.isArray(o)&&(o=o[0]),o&&r===i+S(o.type)))return!0}return!1}function bt(r,e,t){r===null?t.push(h(e,"Invalid null value")):Array.isArray(r)?vi(r,e,t):typeof r=="object"&&bi(r,e,t)}function vi(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(h(`${e}[${n}]`,"Invalid undefined value")):bt(r[n],`${e}[${n}]`,t)}function bi(r,e,t){for(let[n,i]of Object.entries(r))bt(i,`${e}${e?".":""}${n}`,t)}function h(r,e){return{severity:"error",code:"structure",details:{text:e},expression:[r]}}function Na(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function At(r){return new Rt(r).parse()}var St=Object.create(null);function Si(r){for(let{resource:e}of r.entry??[]){if(!e?.name)throw new Error("Failed loading StructureDefinition from bundle");if(e.resourceType!=="StructureDefinition")continue;let t=At(e);St[e.name]=t;for(let n of t.innerTypes)St[n.name]=n}}function pe(r){let e=St[r];if(!e)throw new m(It(Error("Unknown data type: "+r)));return e}var Rt=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);let t=e.snapshot.element[0];this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.type,fields:{},constraints:this.parseFieldDefinition(t).constraints,innerTypes:[]},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let t=Qe(e,this.slicingContext.path);this.slicingContext.current.fields[t]=this.parseFieldDefinition(e)}}else{let t=this.parseFieldDefinition(e);this.checkFieldEnter(e,t),this.backboneContext&&e.path?.startsWith(this.backboneContext.path+".")?this.backboneContext.type.fields[Qe(e,this.backboneContext.path)]=t:this.backboneContext?.parent&&e.path?.startsWith(this.backboneContext.parent.path+".")?this.backboneContext.parent.type.fields[Qe(e,this.backboneContext.parent.path)]=t:this.resourceSchema.fields[Qe(e,this.resourceSchema.name)]=t,this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){if(this.isInnerType(e)){for(;this.backboneContext&&!Z(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:wr(e.path?.split(".")??[]),fields:{},constraints:this.parseFieldDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Z(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}e.slicing&&!this.slicingContext&&(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Z(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Z(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!Z(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Z(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator");this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",fields:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseFieldDefinition(e){let t=Cr(e.max),n=e.base?.max?Cr(e.base.max):t,i={type:"ElementDefinition",value:e};return{min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?wr(e.base?.path?.split(".")??[]):o.code??"",targetProfile:o.targetProfile??[]})),fixed:kr(E(i,"fixed")),pattern:kr(E(i,"pattern")),binding:e.binding?.strength==="required"?e.binding.valueSet:void 0}}};function Cr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Qe(r,e=""){return Ri(r.path,e)}function Ri(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Z(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function wr(r){return r.length===1?r[0]:r.map(S).join("")}function kr(r){return Array.isArray(r)&&r.length>0?r[0]:v(r)?void 0:r}var Ai={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},Ei={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},Pi={"ele-1":!0};function Ci(r,e){return new Et(r.resourceType,r,e).validate()}var Et=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?this.schema=At(n):this.schema=pe(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new m(B("Missing resource type"));Pt(this.rootResource,e,this.issues),this.validateObject({type:e,value:this.currentResource[this.currentResource.length-1]},this.schema,e);let t=this.issues;if(this.issues=[],t.length>0)throw new m({resourceType:"OperationOutcome",issue:t})}validateObject(e,t,n){for(let[i,o]of Object.entries(t.fields))this.checkProperty(e,i,t,`${n}.${i}`);this.checkAdditionalProperties(e,t.fields,n)}checkProperty(e,t,n,i){let o=Ir(e,t),s=n.fields[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of o){if(!this.checkPresence(a,s,i))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(h(i,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(h(i,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(h(i,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Or(a,s)||this.issues.push(h(i,"Value did not match expected pattern"));let f=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){let ee=L(p.value);ee&&this.currentResource.push(p.value),this.constraintsCheck(p,s,i),this.checkPropertyValue(p,i);let fe=Ii(p,s.slicing);fe&&f&&(f[fe]+=1),ee&&this.currentResource.pop()}this.validateSlices(s.slicing?.slices,f,i)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(h(n,"Missing required property")),!1):v(e)?(this.issues.push(h(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){if(Te(e.type.charAt(0)))this.validatePrimitiveType(e,t);else{let n=pe(e.type);this.validateObject(e,n,t)}}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(h(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(i)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.slice(1)in t&&this.isPrimitiveExtension(e,o,n))&&!ki(e,o,t)&&this.issues.push(h(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;for(let o of i)if(!(o.severity!=="error"||o.key in Pi)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Dr(n,`Constraint ${o.key} failed with expression: ${o.expression}`));return}}isExpressionTrue(e,t,n){try{let i=lt(e.expression,[t],{context:t,resource:x(this.currentResource[this.currentResource.length-1]),rootResource:x(this.rootResource),ucum:x("http://unitsofmeasure.org")});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Dr(n,`Constraint ${e.key} with expression: ${e.expression} failed with error: ${i.message}`)),!1}}isPrimitiveExtension(e,t,n){if(!t.startsWith("_"))return!1;let i=e.value[t];if(Array.isArray(i))for(let o of i)this.validateObject({type:"Element",value:o},pe("Element"),n);else this.validateObject({type:"Element",value:i},pe("Element"),n);return!0}validatePrimitiveType(e,t){let{type:n,value:i}=e,o=Ai[n];if(typeof i!==o){i!==null&&this.issues.push(h(t,`Invalid JSON type: expected ${o}, but got ${typeof i}`));return}o==="string"?this.validateString(i,n,t):o==="number"&&this.validateNumber(i,n,t)}validateString(e,t,n){if(!e.trim()){this.issues.push(h(n,"String must contain non-whitespace content"));return}let i=Ei[t];i&&!i.exec(e)&&this.issues.push(h(n,"Invalid "+t+" format"))}validateNumber(e,t,n){isNaN(e)||!isFinite(e)?this.issues.push(h(n,"Invalid numeric value")):wi(t)&&!Number.isInteger(e)?this.issues.push(h(n,"Expected number to be an integer")):t==="positiveInt"&&e<=0?this.issues.push(h(n,"Expected number to be positive")):t==="unsignedInt"&&e<0&&this.issues.push(h(n,"Expected number to be non-negative"))}};function wi(r){return r==="integer"||r==="positiveInt"||r==="unsignedInt"}function ki(r,e,t){let n=e.split(/(?=[A-Z])/g),i="";for(let o of n){if(i+=o,!t[i+"[x]"])continue;return!!E(r,i)}return!1}function Ir(r,e){let[t,...n]=e.split("."),i=[E(r,t)];for(let o of n){let s=[];for(let a of i)if(a!==void 0)if(Array.isArray(a))for(let c of a)s.push(E(c,o));else s.push(E(a,o));i=s}return i}function Pt(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(h(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(h(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(h(`${o}[${a}]`,"Invalid null value")):i[a]&&Pt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Pt(i,o,t)}}function Or(r,e){return e.pattern&&!xe(r,e.pattern)?!1:!(e.fixed&&!ge(r,e.fixed))}function Di(r,e,t){let n=t.fields[e.path];switch(e.type){case"value":case"pattern":if(!n||!r)return!1;if(Or(r,n))return!0;break}return!1}function Ii(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Gt(Ir(r,n.path))?.some(i=>Di(i,n,t))))return t.name}}function Dr(r,e){return{severity:"error",code:"invariant",details:{text:e},expression:[r]}}export{Ue as AndAtom,A as ArithemticOperatorAtom,G as AsAtom,T as BooleanInfixOperatorAtom,Fe as ClientStorage,Ce as ConcatAtom,we as ContainsAtom,_o as DEFAULT_SEARCH_COUNT,Q as DotAtom,Ee as EmptySetAtom,De as EqualsAtom,Oe as EquivalentAtom,oe as FHIRPATH_KEYWORDS,se as FHIRPATH_OPERATORS,qe as FhirFilterComparison,je as FhirFilterConnective,$e as FhirFilterNegation,Ae as FhirPathAtom,vt as FhirSchemaValidator,M as FunctionAtom,H as Hl7Context,le as Hl7Field,Pr as Hl7Message,de as Hl7Segment,Ne as ImpliesAtom,ke as InAtom,K as IndexerAtom,$ as InfixOperatorAtom,z as IsAtom,Be as LRUCache,w as LiteralAtom,ia as MEDPLUM_VERSION,Tr as MedplumClient,gt as MemoryStorage,Ie as NotEqualsAtom,Ve as NotEquivalentAtom,si as OAuthGrantType,ai as OAuthTokenType,m as OperationOutcomeError,pn as Operator,l as OperatorPrecedence,Le as OrAtom,ot as Parser,be as ParserBuilder,ve as PrefixOperatorAtom,q as PropertyType,C as ReadablePromise,ar as SearchParameterType,N as SymbolAtom,j as Tokenizer,Pe as UnaryOperatorAtom,Y as UnionAtom,_e as XorAtom,Bi as accepted,Oi as allOk,Qt as arrayBufferToBase64,jt as arrayBufferToHex,Gt as arrayify,Qi as assertOk,k as badRequest,d as booleanToTypedValue,U as buildTypeName,ye as calculateAge,ao as calculateAgeString,Vs as canReadResourceType,Us as canWriteResource,Kn as canWriteResourceType,S as capitalize,bt as checkForNull,Ns as convertToTransactionBundle,te as createReference,h as createStructureIssue,Vi as created,fr as decodeBase64,po as deepClone,ge as deepEquals,xe as deepIncludes,mr as encodeBase64,ce as evalFhirPath,lt as evalFhirPathTyped,at as fhirPathArrayEquals,ct as fhirPathArrayEquivalent,ir as fhirPathEquals,Cn as fhirPathEquivalent,Re as fhirPathIs,st as fhirPathNot,ho as findObservationInterval,yo as findObservationReferenceRange,bo as findResourceByCode,_i as forbidden,zi as formatAddress,Fr as formatCodeableConcept,qr as formatCoding,Yi as formatDate,Xe as formatDateTime,Ji as formatFamilyName,Ki as formatGivenName,Ut as formatHumanName,to as formatMoney,$r as formatObservationValue,Xi as formatPeriod,W as formatQuantity,eo as formatRange,Bo as formatSearchQuery,_r as formatTime,Zi as formatTiming,et as getCodeBySystem,so as getDateProperty,Wr as getDisplayString,re as getElementDefinition,Co as getElementDefinitionTypeName,Es as getExpressionForResourceType,dr as getExpressionsForResourceType,lo as getExtension,Bt as getExtensionValue,uo as getIdentifier,oo as getImageSrc,Io as getPropertyDisplayName,co as getQuestionnaireAnswers,Nt as getReferenceString,ko as getResourceTypeSchema,wo as getResourceTypes,cr as getSearchParameterDetails,Do as getSearchParameters,ji as getStatus,E as getTypedPropertyValue,y as globalSchema,Ni as gone,nt as indexSearchParameter,Po as indexSearchParameterBundle,rt as indexStructureDefinition,Eo as indexStructureDefinitionBundle,ae as initFhirPathParserBuilder,Fi as isAccepted,v as isEmpty,$i as isGone,Te as isLowerCase,yr as isMedplumAccessToken,qi as isNotFound,F as isObject,Je as isOk,he as isOperationOutcome,wn as isPeriod,Hr as isProfileResource,R as isQuantity,or as isQuantityEquivalent,Oo as isReference,L as isResource,gi as isResourceType,un as isResourceTypeSchema,qt as isStringArray,fo as isUUID,Ze as isValidDate,Si as loadDataTypes,Jn as matchesAccessPolicy,Wt as matchesRange,lr as matchesSearchRequest,Vr as normalizeErrorString,Ye as normalizeOperationOutcome,Dt as notFound,Ui as notModified,Ur as operationOutcomeIssueToString,Ot as operationOutcomeToString,Xt as parseCriteriaAsSearchRequest,dt as parseFhirPath,Aa as parseFilterParameter,Ca as parseHl7Date,yt as parseJWTPayload,pa as parseMappingLanguage,Mo as parseSearchDefinition,No as parseSearchRequest,Yt as parseSearchUrl,xo as preciseEquals,vo as preciseGreaterThan,sn as preciseGreaterThanOrEquals,To as preciseLessThan,on as preciseLessThanOrEquals,go as preciseRound,zn as projectAdminResourceTypes,Gn as protectedResourceTypes,Wn as publicResourceTypes,Se as removeDuplicates,io as resolveId,It as serverError,mo as setCodeBySystem,I as singleton,tt as sleep,Na as streamToBuffer,Ft as stringify,_ as toJsBoolean,x as toTypedValue,sr as tokenize,Mi as tooManyRequests,Li as unauthorized,Ci as validate,La as validateResource,Ua as validateResourceType,B as validationError};
31
+ }`.replace(/\s+/g," "),a=await this.graphql(s);for(let c of a.data.StructureDefinitionList)rt(c);for(let c of a.data.SearchParameterList)nt(c);return y})());return this.setCacheEntry(n,o),o}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o){let s=await this.createBinary(t,n,i,o);return{contentType:i,url:s.url,title:n}}createBinary(t,n,i,o){let s=this.fhirUrl("Binary");return n&&s.searchParams.set("_filename",n),o?this.uploadwithProgress(s,t,i,o):this.post(s,t,i)}uploadwithProgress(t,n,i,o){return new Promise((s,a)=>{let c=new XMLHttpRequest;c.responseType="json",c.onabort=()=>a(new Error("Request aborted")),c.onerror=()=>a(new Error("Request error")),o&&(c.upload.onprogress=f=>o(f),c.upload.onload=f=>o(f)),c.onload=()=>{c.status>=200&&c.status<300?s(c.response):a(new Error(c.statusText))},c.open("POST",t),c.withCredentials=!0,c.setRequestHeader("Authorization","Bearer "+this.accessToken),c.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),c.setRequestHeader("Content-Type",i),c.setRequestHeader("X-Medplum","extended"),c.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=te(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=te(t)),this.createResource({resourceType:"Communication",basedOn:[te(t)],encounter:s,subject:a,sender:o?te(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");this.invalidateSearches(t.resourceType);let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,"application/json",n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},ii,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.medplumServer=yr(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0,this.sessionDetails=i,this.dispatchEvent(new Event("change")),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise&&await this.profilePromise,this.getProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){return this.refreshPromise&&await this.refreshPromise,this.addFetchOptionsDefaults(n),(await this.fetch(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({...o,resourceType:"Media",content:{contentType:n,url:"Binary/"+a.id,title:i}},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await Sr(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new C(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){this.refreshPromise&&await this.refreshPromise,i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new m(Dt);let c;if(a)try{c=await t.json()}catch(f){throw console.error("Error parsing response",t.status,f),f}if(t.status>=400)throw new m(Ye(c));return c}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(s=await this.fetch(t,n),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await tt(o)}return s}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let c=await Sr(a);c&&(i=await this.fetchWithRetry(c,s))}await tt(o)}return this.parseResponse(i,"POST",t)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new m(Ye(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Je(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept=gr,n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=gr),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=ht();sessionStorage.setItem("pkceState",t);let n=ht();sessionStorage.setItem("codeVerifier",n);let i=await hr(n),o=Qt(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??vr()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??vr()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=mr(t+":"+n)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t,credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o=await this.fetch(this.tokenUrl,n);if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new m(k(a.error_description))}catch(a){throw new m(k("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token,i=yt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience");return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent(new Event("offline")),t>=n-1)throw i}};function ci(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function vr(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function br(r){return r&&(r.endsWith("/")?r:r+"/")}async function Sr(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(he(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function Rr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var ui=[...se,"->","<<",">>"];function Ar(r){return new j(r,oe,ui).tokenize()}var xt=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}parse(){for(this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.context=n[0],e.element=n[1]}else e.context=t;if(this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("default"),this.parser.consumeAndParse()),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let n=this.parser.consumeAndParse(l.Arrow);e.condition=n.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let n=this.parser.consumeAndParse(l.Arrow);e.check=n.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.contextType="variable",e.context=n[0],e.element=n[1]}else e.context=t;return this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="share"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){e.transform="copy";let t=this.parser.consumeAndParse(l.As);if(t instanceof N)this.parseRuleTargetSymbol(e,t);else if(t instanceof M)this.parseRuleTargetFunction(e,t);else if(t instanceof w)this.parseRuleTargetLiteral(e,t);else throw new Error(`Unexpected FHIRPath: ${t}`)}parseRuleTargetSymbol(e,t){e.parameter=[{valueId:t.name}]}parseRuleTargetFunction(e,t){let n=t.name;switch(n){case"create":e.parameter=[{valueString:t.args[0].value.value}];break;case"translate":e.parameter=[{}];break;default:throw new Error("Unknown target function: "+n)}}parseRuleTargetLiteral(e,t){switch(t.value.type){case"boolean":e.parameter=[{valueBoolean:t.value.value}];break;case"decimal":e.parameter=[{valueDecimal:t.value.value}];break;case"string":e.parameter=[{valueString:t.value.value}];break;default:throw new Error("Unknown target literal type: "+t.value.type)}}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(l.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){for(;this.parser.peek()?.value!=="}";)this.parser.consume();this.parser.consume("}")}},di=ae().registerInfix("->",{precedence:l.Arrow}).registerInfix(";",{precedence:l.Semicolon});function pa(r){let e=di.construct(Ar(r));return e.removeComments(),new xt(e).parse()}var li=[...se,"eq","ne","co"];function Er(r){return new j(r,oe,li,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var qe=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},$e=class{constructor(e){this.child=e}},je=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var pi={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:void 0,identifier:"identifier"};function fi(r){let e=pi[r];if(!e)throw new m(k("Invalid operator: "+r));return e}var Tt=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new $e(this.parse()),this.parser.consume(")")):e=new qe(this.parser.consume("Symbol").value,fi(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new je(t,e,this.parse())):e}},mi=ae();function Aa(r){let e=mi.construct(Er(r));return e.removeComments(),new Tt(e).parse()}var H=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh2(){return this.fieldSeparator+this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},Pr=class r{constructor(e,t=new H){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new de(["MSH",this.context.getMsh2(),o,s,n,i,e.toISOString(),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new de(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new H("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>de.parse(n,t)),t)}},de=class r{constructor(e,t=new H){this.context=t,qt(e)?this.fields=e.map(n=>le.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return le.parse(this.context.fieldSeparator,this.context);if(e>1)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e).getComponent(t,n,i)}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new H){return new r(e.split(t.fieldSeparator).map(n=>le.parse(n,t)),t)}},le=class r{constructor(e,t=new H){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new H){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Ca(r,e){if(!r)return;e={seconds:!0,tzOffset:"Z",...e};let t=Number.parseInt(r.substring(0,4),10),n=Number.parseInt(r.substring(4,6),10),i=Number.parseInt(r.substring(6,8),10),o=Number.parseInt(r.substring(8,10),10),s=Number.parseInt(r.substring(10,12),10),a=e.seconds?Number.parseInt(r.substring(12,14),10):0;return`${X(t)}-${X(n)}-${X(i)}T${X(o)}:${X(s)}:${X(a)}.000${e.tzOffset}`}function X(r){return r.toString().padStart(2,"0")}var hi={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},yi=new Set(["resourceType","id","meta","implicitRules","language","text","contained","extension","modifierExtension"]);function gi(r){let e=y.types[r];return e&&e.structureDefinition.id===r&&e.structureDefinition.kind==="resource"}function Ua(r){if(!r)throw new m(B("Resource type is null"));if(!gi(r))throw new m(B("Unknown resource type"))}function La(r){new vt(r).validate()}var vt=class{constructor(e){this.issues=[],this.root=e}validate(){let e=this.root;if(!e)throw new m(B("Resource is null"));let t=e.resourceType;if(!t)throw new m(B("Missing resource type"));if(bt(e,"",this.issues),this.validateObject(x(e),t),this.issues.length>0)throw new m({resourceType:"OperationOutcome",issue:this.issues})}validateObject(e,t){let n=y.types[e.type];if(!n)throw new m(B("Unknown type: "+e.type));let i=n.properties;this.checkProperties(t,i,e),this.checkAdditionalProperties(t,e,i)}checkProperties(e,t,n){for(let[i,o]of Object.entries(t))this.checkProperty(e+"."+i,o,n)}checkProperty(e,t,n){let i=e.split(".").pop(),o=E(n,i);if(v(o)){t.min!==void 0&&t.min>0&&this.issues.push(h(e,"Missing required property"));return}if(t.max==="*"){if(!Array.isArray(o)){this.issues.push(h(e,"Expected array for property"));return}for(let s of o)this.checkPropertyValue(e,t,s)}else{if(Array.isArray(o)){this.issues.push(h(e,"Expected single value for property"));return}this.checkPropertyValue(e,t,o)}}checkPropertyValue(e,t,n){n.value!==null&&(Te(n.type.charAt(0))?this.validatePrimitiveType(t,n):this.validateObject(n,e))}validatePrimitiveType(e,t){let{type:n,value:i}=t;if(i===null)return;let o=hi[t.type];if(typeof i!==o){this.createIssue(e,"Invalid type for "+n);return}o==="string"?this.validateString(e,n,i):o==="number"&&this.validateNumber(e,n,i)}validateString(e,t,n){if(!n.trim()){this.createIssue(e,"Invalid empty string");return}let i=y.types[t]?.properties.value;if(i?.type){let o=Bt(i.type[0],"http://hl7.org/fhir/StructureDefinition/regex");o&&(new RegExp(o).exec(n)||this.createIssue(e,"Invalid "+t+" format"))}}validateNumber(e,t,n){if(isNaN(n)||!isFinite(n)){this.createIssue(e,"Invalid "+t+" value");return}xi(t)&&!Number.isInteger(n)&&this.createIssue(e,"Number is not an integer"),t==="positiveInt"&&n<=0&&this.createIssue(e,"Number is less than or equal to zero"),t==="unsignedInt"&&n<0&&this.createIssue(e,"Number is negative")}checkAdditionalProperties(e,t,n){let i=t.value;for(let o of Object.keys(i))this.checkAdditionalProperty(e,o,t,n)}checkAdditionalProperty(e,t,n,i){if(!yi.has(t)&&!(t in i)&&!Ti(t,n,i)&&!this.checkPrimitiveElement(e,t,n)){let o=`${e}.${t}`;this.issues.push(h(o,`Invalid additional property "${o}"`))}}checkPrimitiveElement(e,t,n){return!t.startsWith("_")||!(t.slice(1)in n.value)?!1:(this.validateObject({type:"Element",value:n.value[t]},e),!0)}createIssue(e,t){this.issues.push(h(e.path,t))}};function xi(r){return r==="integer"||r==="positiveInt"||r==="unsignedInt"}function Ti(r,e,t){for(let n of Object.keys(t)){if(!n.endsWith("[x]"))continue;let i=n.replace("[x]","");if(!r.startsWith(i))continue;let o=E(e,n);if(o&&(Array.isArray(o)&&(o=o[0]),o&&r===i+S(o.type)))return!0}return!1}function bt(r,e,t){r===null?t.push(h(e,"Invalid null value")):Array.isArray(r)?vi(r,e,t):typeof r=="object"&&bi(r,e,t)}function vi(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(h(`${e}[${n}]`,"Invalid undefined value")):bt(r[n],`${e}[${n}]`,t)}function bi(r,e,t){for(let[n,i]of Object.entries(r))bt(i,`${e}${e?".":""}${n}`,t)}function h(r,e){return{severity:"error",code:"structure",details:{text:e},expression:[r]}}function Na(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function At(r){return new Rt(r).parse()}var St=Object.create(null);function Si(r){for(let{resource:e}of r.entry??[]){if(!e?.name)throw new Error("Failed loading StructureDefinition from bundle");if(e.resourceType!=="StructureDefinition")continue;let t=At(e);St[e.name]=t;for(let n of t.innerTypes)St[n.name]=n}}function pe(r){let e=St[r];if(!e)throw new m(It(Error("Unknown data type: "+r)));return e}var Rt=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);let t=e.snapshot.element[0];this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.type,fields:{},constraints:this.parseFieldDefinition(t).constraints,innerTypes:[]},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let t=Qe(e,this.slicingContext.path);this.slicingContext.current.fields[t]=this.parseFieldDefinition(e)}}else{let t=this.parseFieldDefinition(e);this.checkFieldEnter(e,t),this.backboneContext&&e.path?.startsWith(this.backboneContext.path+".")?this.backboneContext.type.fields[Qe(e,this.backboneContext.path)]=t:this.backboneContext?.parent&&e.path?.startsWith(this.backboneContext.parent.path+".")?this.backboneContext.parent.type.fields[Qe(e,this.backboneContext.parent.path)]=t:this.resourceSchema.fields[Qe(e,this.resourceSchema.name)]=t,this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){if(this.isInnerType(e)){for(;this.backboneContext&&!Z(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:wr(e.path?.split(".")??[]),fields:{},constraints:this.parseFieldDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Z(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}e.slicing&&!this.slicingContext&&(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Z(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Z(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!Z(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Z(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator");this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",fields:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseFieldDefinition(e){let t=Cr(e.max),n=e.base?.max?Cr(e.base.max):t,i={type:"ElementDefinition",value:e};return{min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?wr(e.base?.path?.split(".")??[]):o.code??"",targetProfile:o.targetProfile??[]})),fixed:kr(E(i,"fixed")),pattern:kr(E(i,"pattern")),binding:e.binding?.strength==="required"?e.binding.valueSet:void 0}}};function Cr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Qe(r,e=""){return Ri(r.path,e)}function Ri(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Z(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function wr(r){return r.length===1?r[0]:r.map(S).join("")}function kr(r){return Array.isArray(r)&&r.length>0?r[0]:v(r)?void 0:r}var Ai={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},Ei={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},Pi={"ele-1":!0};function Ci(r,e){return new Et(r.resourceType,r,e).validate()}var Et=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?this.schema=At(n):this.schema=pe(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new m(B("Missing resource type"));Pt(this.rootResource,e,this.issues),this.validateObject({type:e,value:this.currentResource[this.currentResource.length-1]},this.schema,e);let t=this.issues;if(this.issues=[],t.length>0)throw new m({resourceType:"OperationOutcome",issue:t})}validateObject(e,t,n){for(let[i,o]of Object.entries(t.fields))this.checkProperty(e,i,t,`${n}.${i}`);this.checkAdditionalProperties(e,t.fields,n)}checkProperty(e,t,n,i){let o=Ir(e,t),s=n.fields[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of o){if(!this.checkPresence(a,s,i))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(h(i,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(h(i,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(h(i,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Or(a,s)||this.issues.push(h(i,"Value did not match expected pattern"));let f=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){let ee=L(p.value);ee&&this.currentResource.push(p.value),this.constraintsCheck(p,s,i),this.checkPropertyValue(p,i);let fe=Ii(p,s.slicing);fe&&f&&(f[fe]+=1),ee&&this.currentResource.pop()}this.validateSlices(s.slicing?.slices,f,i)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(h(n,"Missing required property")),!1):v(e)?(this.issues.push(h(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){if(Te(e.type.charAt(0)))this.validatePrimitiveType(e,t);else{let n=pe(e.type);this.validateObject(e,n,t)}}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(h(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(i)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.slice(1)in t&&this.isPrimitiveExtension(e,o,n))&&!ki(e,o,t)&&this.issues.push(h(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;for(let o of i)if(!(o.severity!=="error"||o.key in Pi)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Dr(n,`Constraint ${o.key} failed with expression: ${o.expression}`));return}}isExpressionTrue(e,t,n){try{let i=lt(e.expression,[t],{context:t,resource:x(this.currentResource[this.currentResource.length-1]),rootResource:x(this.rootResource),ucum:x("http://unitsofmeasure.org")});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Dr(n,`Constraint ${e.key} with expression: ${e.expression} failed with error: ${i.message}`)),!1}}isPrimitiveExtension(e,t,n){if(!t.startsWith("_"))return!1;let i=e.value[t];if(Array.isArray(i))for(let o of i)this.validateObject({type:"Element",value:o},pe("Element"),n);else this.validateObject({type:"Element",value:i},pe("Element"),n);return!0}validatePrimitiveType(e,t){let{type:n,value:i}=e,o=Ai[n];if(typeof i!==o){i!==null&&this.issues.push(h(t,`Invalid JSON type: expected ${o}, but got ${typeof i}`));return}o==="string"?this.validateString(i,n,t):o==="number"&&this.validateNumber(i,n,t)}validateString(e,t,n){if(!e.trim()){this.issues.push(h(n,"String must contain non-whitespace content"));return}let i=Ei[t];i&&!i.exec(e)&&this.issues.push(h(n,"Invalid "+t+" format"))}validateNumber(e,t,n){isNaN(e)||!isFinite(e)?this.issues.push(h(n,"Invalid numeric value")):wi(t)&&!Number.isInteger(e)?this.issues.push(h(n,"Expected number to be an integer")):t==="positiveInt"&&e<=0?this.issues.push(h(n,"Expected number to be positive")):t==="unsignedInt"&&e<0&&this.issues.push(h(n,"Expected number to be non-negative"))}};function wi(r){return r==="integer"||r==="positiveInt"||r==="unsignedInt"}function ki(r,e,t){let n=e.split(/(?=[A-Z])/g),i="";for(let o of n){if(i+=o,!t[i+"[x]"])continue;return!!E(r,i)}return!1}function Ir(r,e){let[t,...n]=e.split("."),i=[E(r,t)];for(let o of n){let s=[];for(let a of i)if(a!==void 0)if(Array.isArray(a))for(let c of a)s.push(E(c,o));else s.push(E(a,o));i=s}return i}function Pt(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(h(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(h(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(h(`${o}[${a}]`,"Invalid null value")):i[a]&&Pt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Pt(i,o,t)}}function Or(r,e){return e.pattern&&!xe(r,e.pattern)?!1:!(e.fixed&&!ge(r,e.fixed))}function Di(r,e,t){let n=t.fields[e.path];switch(e.type){case"value":case"pattern":if(!n||!r)return!1;if(Or(r,n))return!0;break}return!1}function Ii(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Gt(Ir(r,n.path))?.some(i=>Di(i,n,t))))return t.name}}function Dr(r,e){return{severity:"error",code:"invariant",details:{text:e},expression:[r]}}export{Ue as AndAtom,A as ArithemticOperatorAtom,G as AsAtom,T as BooleanInfixOperatorAtom,Fe as ClientStorage,Ce as ConcatAtom,we as ContainsAtom,_o as DEFAULT_SEARCH_COUNT,Q as DotAtom,Ee as EmptySetAtom,De as EqualsAtom,Oe as EquivalentAtom,oe as FHIRPATH_KEYWORDS,se as FHIRPATH_OPERATORS,qe as FhirFilterComparison,je as FhirFilterConnective,$e as FhirFilterNegation,Ae as FhirPathAtom,vt as FhirSchemaValidator,M as FunctionAtom,H as Hl7Context,le as Hl7Field,Pr as Hl7Message,de as Hl7Segment,Ne as ImpliesAtom,ke as InAtom,K as IndexerAtom,$ as InfixOperatorAtom,z as IsAtom,Be as LRUCache,w as LiteralAtom,ia as MEDPLUM_VERSION,Tr as MedplumClient,gt as MemoryStorage,Ie as NotEqualsAtom,Ve as NotEquivalentAtom,si as OAuthGrantType,ai as OAuthTokenType,m as OperationOutcomeError,pn as Operator,l as OperatorPrecedence,Le as OrAtom,ot as Parser,be as ParserBuilder,ve as PrefixOperatorAtom,q as PropertyType,C as ReadablePromise,ar as SearchParameterType,N as SymbolAtom,j as Tokenizer,Pe as UnaryOperatorAtom,Y as UnionAtom,_e as XorAtom,Bi as accepted,Oi as allOk,Qt as arrayBufferToBase64,jt as arrayBufferToHex,Gt as arrayify,Qi as assertOk,k as badRequest,d as booleanToTypedValue,U as buildTypeName,ye as calculateAge,ao as calculateAgeString,Vs as canReadResourceType,Us as canWriteResource,Kn as canWriteResourceType,S as capitalize,bt as checkForNull,Ns as convertToTransactionBundle,te as createReference,h as createStructureIssue,Vi as created,fr as decodeBase64,po as deepClone,ge as deepEquals,xe as deepIncludes,mr as encodeBase64,ce as evalFhirPath,lt as evalFhirPathTyped,at as fhirPathArrayEquals,ct as fhirPathArrayEquivalent,ir as fhirPathEquals,Cn as fhirPathEquivalent,Re as fhirPathIs,st as fhirPathNot,ho as findObservationInterval,yo as findObservationReferenceRange,bo as findResourceByCode,_i as forbidden,zi as formatAddress,Fr as formatCodeableConcept,qr as formatCoding,Yi as formatDate,Xe as formatDateTime,Ji as formatFamilyName,Ki as formatGivenName,Ut as formatHumanName,to as formatMoney,$r as formatObservationValue,Xi as formatPeriod,W as formatQuantity,eo as formatRange,Bo as formatSearchQuery,_r as formatTime,Zi as formatTiming,et as getCodeBySystem,so as getDateProperty,Wr as getDisplayString,re as getElementDefinition,Co as getElementDefinitionTypeName,Es as getExpressionForResourceType,dr as getExpressionsForResourceType,lo as getExtension,Bt as getExtensionValue,uo as getIdentifier,oo as getImageSrc,Io as getPropertyDisplayName,co as getQuestionnaireAnswers,Nt as getReferenceString,ko as getResourceTypeSchema,wo as getResourceTypes,cr as getSearchParameterDetails,Do as getSearchParameters,ji as getStatus,E as getTypedPropertyValue,y as globalSchema,Ni as gone,nt as indexSearchParameter,Po as indexSearchParameterBundle,rt as indexStructureDefinition,Eo as indexStructureDefinitionBundle,ae as initFhirPathParserBuilder,Fi as isAccepted,v as isEmpty,$i as isGone,Te as isLowerCase,yr as isMedplumAccessToken,qi as isNotFound,F as isObject,Je as isOk,he as isOperationOutcome,wn as isPeriod,Hr as isProfileResource,R as isQuantity,or as isQuantityEquivalent,Oo as isReference,L as isResource,gi as isResourceType,un as isResourceTypeSchema,qt as isStringArray,fo as isUUID,Ze as isValidDate,Si as loadDataTypes,Jn as matchesAccessPolicy,Wt as matchesRange,lr as matchesSearchRequest,Vr as normalizeErrorString,Ye as normalizeOperationOutcome,Dt as notFound,Ui as notModified,Ur as operationOutcomeIssueToString,Ot as operationOutcomeToString,Xt as parseCriteriaAsSearchRequest,dt as parseFhirPath,Aa as parseFilterParameter,Ca as parseHl7Date,yt as parseJWTPayload,pa as parseMappingLanguage,Mo as parseSearchDefinition,No as parseSearchRequest,Yt as parseSearchUrl,xo as preciseEquals,vo as preciseGreaterThan,sn as preciseGreaterThanOrEquals,To as preciseLessThan,on as preciseLessThanOrEquals,go as preciseRound,zn as projectAdminResourceTypes,Gn as protectedResourceTypes,Wn as publicResourceTypes,Se as removeDuplicates,io as resolveId,It as serverError,mo as setCodeBySystem,I as singleton,tt as sleep,Na as streamToBuffer,Ft as stringify,_ as toJsBoolean,x as toTypedValue,sr as tokenize,Mi as tooManyRequests,Li as unauthorized,Ci as validate,La as validateResource,Ua as validateResourceType,B as validationError};
32
32
  //# sourceMappingURL=index.mjs.map