@medplum/core 5.1.0 → 5.1.2

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,7 +1,7 @@
1
- var Oo=Object.defineProperty;var Io=(r,e,t)=>e in r?Oo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var c=(r,e,t)=>Io(r,typeof e!="symbol"?e+"":e,t);var lt=class{constructor(e,t){c(this,"operator");c(this,"child");this.operator=e,this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},ce=class{constructor(e,t,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=t,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},pt=class{constructor(){c(this,"prefixParselets",{});c(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 dr(e,this.prefixParselets,this.infixParselets)}},dr=class{constructor(e,t,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");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 new 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 new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw new 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 Ve=class{constructor(e=10){c(this,"max");c(this,"cache");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}};var Cn="http://unitsofmeasure.org",fu="http://loinc.org",mu="http://snomed.info/sct",hu="http://www.nlm.nih.gov/research/umls/rxnorm",yu="http://www.ama-assn.org/go/cpt",gu="http://hl7.org/fhir/sid/icd-10",xu="http://hl7.org/fhir/sid/ndc",dt="http://hl7.org",vu="http://terminology.hl7.org";var ft="created",fr="gone",mr="not-modified",hr="found",yr="not-found",gr="conflict",xr="unauthorized",Pn="forbidden",An="precondition-failed",wn="unsupported-media-type",On="multiple-matches",In="too-many-requests",mt="accepted",kn="server-timeout",Dn="business-rule",bu={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Su={resourceType:"OperationOutcome",id:ft,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Eu={resourceType:"OperationOutcome",id:mr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Vn={resourceType:"OperationOutcome",id:yr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Me={resourceType:"OperationOutcome",id:xr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Mn={...Me,issue:[...Me.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},vr={...Me,issue:[...Me.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},Ru={resourceType:"OperationOutcome",id:Pn,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Cu={resourceType:"OperationOutcome",id:fr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Pu={resourceType:"OperationOutcome",id:An,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Au={resourceType:"OperationOutcome",id:wn,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},wu={resourceType:"OperationOutcome",id:On,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Ou={resourceType:"OperationOutcome",id:In,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Iu(r){return{resourceType:"OperationOutcome",id:mt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function ku(r,e){return{resourceType:"OperationOutcome",id:gr,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:r}}]}}function x(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function _n(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Du(r){return{resourceType:"OperationOutcome",id:kn,issue:[{severity:"error",code:"timeout",details:{text:r??"Server timeout"}}]}}function Vu(r){let e=r.toString();return{resourceType:"OperationOutcome",id:hr,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function Mu(r,e){return{resourceType:"OperationOutcome",id:Dn,issue:[{severity:"error",code:"business-rule",details:{id:r,text:e}}]}}function Tr(r){return!r||typeof r!="object"?!1:r instanceof Error||typeof DOMException<"u"&&r instanceof DOMException?!0:Object.prototype.toString.call(r)==="[object Error]"}function Ge(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function br(r){return r.id==="ok"||r.id===ft||r.id===mr||r.id===mt}function _u(r){return r.id===ft}function Lu(r){return r.id===mt}function Fu(r){return r.id===hr}function Nu(r){return r.id===yr}function Uu(r){return r.id===gr}function Bu(r){return r.id===fr}function qu(r){return r.id===xr}function Wu(r){switch(r.id){case"ok":return 200;case ft:return 201;case mt:return 202;case hr:return 302;case mr:return 304;case xr:return 401;case Pn:return 403;case yr:return 404;case gr:return 409;case fr:return 410;case An:case On:return 412;case wn:return 415;case Dn:return 422;case In:return 429;case kn:return 504;default:return r.issue?.[0]?.code==="exception"?500:400}}function ju(r,e){if(!br(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(t,n){super(Ln(t),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=t}};function ht(r){return r instanceof f?r.outcome:Ge(r)?r:R(_e(r))}function _e(r){return r?typeof r=="string"?r:Tr(r)?r.message:Ge(r)?Ln(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Ln(r){let e=r.issue?.map(ko)??[];return e.length>0?e.join("; "):"Unknown error"}function ko(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function ve(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function S(r,e){return ve("error","structure",e,r)}function Fn(r,e){return ve("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Nn(r,e,t,n){return ve("error","processing",e,r,{...n,error:t})}var Do={"http://hl7.org/fhirpath/System.String":"string"};function Gu(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:Do[t.code]??t.code})),e}function Vo(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Un(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,type:t,path:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Vo(i,o)])),constraints:[],innerTypes:[]};return e}var Bn={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,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:9007199254740991,type:[{code:"DosageDoseAndRate"}]},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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"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:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"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:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function Cr(r){return new Er(r).parse()}var Te=Un(Bn),Pr=Object.create(null),qn=Object.create(null),_o={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function Hn(r){let e;return e=qn[r],e||(e=qn[r]=Object.create(null)),e}function Ar(r){let t=(Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Kn(t);for(let n of t)wr(n)}function wr(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=Cr(r),t=_o[r.url],n,i;t?(n=Te,i=t):r.url===`http://hl7.org/fhir/StructureDefinition/${r.type}`||r.url===`https://medplum.com/fhir/StructureDefinition/${r.type}`||r.type?.startsWith("http://")||r.type?.startsWith("https://")?(n=Te,i=r.type):(n=Hn(r.url),i=r.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Pr[r.url]=e}function Gn(){return Te}function Qn(r){return!!Te[r]}function Qe(r,e){if(e){let t=Hn(e)[r];if(t)return t}return Te[r]}function ue(r,e){let t=Qe(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function yt(r){let e=Te[r];return e&&Or(e)}function zn(r){return!!Pr[r]}function Jn(r){return Pr[r]}var Er=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:Uo(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},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=Sr(e,this.slicingContext.path);this.slicingContext.current.elements[t]=this.parseElementDefinition(e)}}else{let t=this.parseElementDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Sr(e,n.path)]=t;break}n=n.parent}if(!n){let i=Sr(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),this.slicingContext&&!Le(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Le(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let t=Rr(e);this.backboneContext={type:{name:t,type:t,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:Le(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){No(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")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&&!Le(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Le(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}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=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Le(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: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Rr(e)),n||(n=le(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=jn(e.max),n=e.base?.max?jn(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",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:this.parseElementDefinitionType(e),fixed:$n(V(i,"fixed[x]")),pattern:$n(V(i,"pattern[x]")),binding:e.binding}}};function tl(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Te[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+M(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Lo.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat(Wn):[Wn]},r}var Wn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Lo=["resourceType","id","meta"];function jn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Sr(r,e=""){return Fo(r.path,e)}function Fo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Le(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function $n(r){return Array.isArray(r)&&r.length>0?r[0]:C(r)?void 0:r}function No(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function Uo(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}function Dr(r,e,t){new Ir(r,e,t).crawl()}function ul(r,e,t){return new kr(r,e,t).crawl()}var Ir=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??ue(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=k(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=Fe(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)for(let a of Ne(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,t,n){if(!gt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ue(e.type);this.crawlObject(e,i,t)}}},kr=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??ue(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=k(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=Fe(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)for(let a of Ne(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,t,n){if(!gt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ue(e.type);await this.crawlObject(e,i,t)}}};function Fe(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Vr:V,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let u=[];for(let l of s)if(Array.isArray(l))for(let p of l)u.push(n(p,a,t));else(t?.withPath&&l?.value!==void 0||!t?.withPath&&l!==void 0)&&u.push(n(l,a,t));s=u}return s}function Vr(r,e,t){let n=r.path;return Bo(V(r,e,t),n,e)}function Bo(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}function ll(r){return r[0]===r[0].toUpperCase()&&(r=r.slice(r.indexOf(".")+1)),`.${r}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,t)=>`/${t}`)}var Mr={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",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"},qo=new Ve(1e3);function gt(r){return r==="undefined"||r in Mr}var xt={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:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,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:/.*/},Wo={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Sl(r,e){if(!yt(r.resourceType))throw new f(x("Invalid resource type"));return jo(b(r),e)}function jo(r,e){return new _r(r,e).validate()}var _r=class{constructor(e,t){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"base64BinaryMaxBytes");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],k(e.value)&&this.resourceStack.push(e.value),t?.profile?this.schema=Cr(t.profile):this.schema=ue(e.type),this.base64BinaryMaxBytes=t?.base64BinaryMaxBytes??1*1024*1024,this.collect=t?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){Lr(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),Dr(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new f({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,t.path)}onEnterResource(e,t){this.resourceStack.push(t.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(S(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(S(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(S(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Go(a,s)||this.issues.push(S(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of u){this.constraintsCheck(p,s),this.referenceTypeCheck(p,s),this.checkPropertyValue(p),this.collectValue(p,s);let y=Qo(p,s.slicing);y&&l&&(l[y]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(S(e.path,"Missing required property")),!1):C(e)?(this.issues.push(S(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){gt(e.type)?this.validatePrimitiveType(e):C(e.value)&&this.issues.push(S(e.path,"Invalid empty non-primitive value"))}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(S(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)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=Ho(e,s,t);if(a){let u,l;a.startsWith("_")?(u=a.slice(1),l=s.slice(1)):(u="_"+a,l="_"+s),u in o&&o[u]!==l&&this.issues.push(ve("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(ve("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(S(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t){let n=t.constraints;for(let i of n??g)if(i.severity==="error"&&!(i.key in Wo)&&!this.isExpressionTrue(i,e)){this.issues.push(Fn(e.path,i));return}}referenceTypeCheck(e,t){if(e.type!=="Reference")return;let n=e.value;if(!H(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=t.type.find(y=>y.code==="Reference")?.targetProfile;if(!o)return;let s=dt+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,l="https://medplum.com/fhir/StructureDefinition/",p=l+i;for(let y of o)if(y===a||y===u||y===p||!y.startsWith(s)&&!y.startsWith(l))return;this.issues.push(ve("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,t){t.binding?.valueSet&&t.binding.strength==="required"&&Jo(e.type)&&this.appendToken(t.binding.valueSet,e)}appendToken(e,t){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}for(let i of n??g)if(i.path===t.path)return;this.collect.tokens[e]=z(n,t)}isExpressionTrue(e,t){let n={"%context":t,"%ucum":b(Cn)},i=this.currentResource();i&&(n["%resource"]=b(i)),k(this.root.value)&&(n["%rootResource"]=this.root);try{let o=P(e.expression,[t],n,qo);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Nn(t.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[t,n]=zo(e),i=e.path;if(t){let{type:o,value:s}=t;if(!(o in Mr)){this.issues.push(S(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Mr[o];if(typeof s!==a){s!==null&&this.issues.push(S(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}o==="base64Binary"?this.validateBase64Binary(s,i):a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&Dr(n,this,{schema:ue("Element"),initialPath:i})}validateBase64Binary(e,t){if(!Ko(e)){this.issues.push(S(t,"Invalid base64Binary format"));return}let n=0;e.endsWith("==")?n=2:e.endsWith("=")&&(n=1),Math.max(0,Math.floor(e.length*3/4)-n)>this.base64BinaryMaxBytes&&this.issues.push(S(t,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}validateString(e,t,n){if(!e.trim()){this.issues.push(S(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(S(n,"String cannot be larger than 1 MB"));return}let i=xt[t];i&&!i.exec(e)&&this.issues.push(S(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(S(n,"Invalid numeric value")):$o(t)&&!Number.isInteger(e)?this.issues.push(S(n,"Expected number to be an integer")):t===d.positiveInt&&e<=0?this.issues.push(S(n,"Expected number to be positive")):t===d.unsignedInt&&e<0&&this.issues.push(S(n,"Expected number to be non-negative"))}};function $o(r){return r===d.integer||r===d.positiveInt||r===d.unsignedInt}function Ho(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return V(r,o)?n+a:void 0}}function Lr(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(S(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(S(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(S(`${o}[${a}]`,"Invalid null value")):i[a]&&Lr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Lr(i,o,t)}}function Go(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!ze(t,e.pattern)||e.fixed&&!pe(t,e.fixed))}function Fr(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return ze(r,i.pattern);if(i.fixed)return pe(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Qo(r,e){for(let t of e?.slices??g)if(e?.discriminator?.every(n=>Ne(Fe(r,n.path))?.some(i=>Fr(i,n,t))))return t.name}function zo(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function Jo(r){switch(r){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function Ko(r){if(r.length===0)return!1;let e=0;r.endsWith("==")?e=2:r.endsWith("=")&&(e=1);let t=r.length-e;if(t<0||(e+t)%4!==0)return!1;let n=e>0?r.slice(0,-e):r;return/^[A-Za-z\d+/]+$/.test(n)}function h(r){return[{type:d.boolean,value:r}]}function b(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:d.integer,value:r}:typeof r=="number"?{type:d.decimal,value:r}:typeof r=="boolean"?{type:d.boolean,value:r}:typeof r=="string"?{type:d.string,value:r}:I(r)?{type:d.Quantity,value:r}:k(r)?{type:r.resourceType,value:r}:Wr(r)?{type:d.CodeableConcept,value:r}:qr(r)?{type:d.Coding,value:r}:{type:d.BackboneElement,value:r}}function U(r){return r.length===0?!1:!!r[0].value}function J(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 V(r,e,t){if(!r.value)return;let n=Et(r.type,e,t?.profileUrl);return n?Yo(r,e,n):Xo(r,e)}function Yo(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a,u=t.path.lastIndexOf("."),l=t.path.substring(u+1);for(let p of i){let y=l.replace("[x]",M(p.code));if(o=n[y],a=n["_"+y],o!==void 0||a!==void 0){s=p.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let p=0;p<Math.max(o.length,a.length);p++)o[p]=Nr(o[p],a[p])}else if(!o&&Array.isArray(a)){o=a.slice();for(let p=0;p<a.length;p++)o[p]=Nr(void 0,a[p])}else o=Nr(o,a);if(!C(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(p=>Yn(p,s)):Yn(o,s)}function Yn(r,e){return e==="Resource"&&k(r)&&(e=r.resourceType),{type:e,value:r}}function Xo(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t){let i=t[e];Array.isArray(i)?n=i.map(b):n=b(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(d)){let s=i+M(o);if(s in t){let a=t[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||C(n[0]))return}else if(C(n))return;return n}function Tt(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(U(Je(t,i))){n=!0;break}n||e.push(t)}return e}function ei(r){return h(!U(r))}function ti(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?h(!1):h(r.every((t,n)=>U(Je(t,e[n]))))}function ri(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?h(!0):h(r.some((t,n)=>!U(Je(t,e[n]))))}function Je(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?h(Math.abs(t-n)<1e-8):I(t)&&I(n)?h(oi(t,n)):h(typeof t=="object"&&typeof n=="object"?Br(r,e):t===n)}function Ur(r,e){return r.length===0&&e.length===0?h(!0):r.length!==e.length?h(!1):(r.sort(Xn),e.sort(Xn),h(r.every((t,n)=>U(Zo(t,e[n])))))}function Zo(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?h(Math.abs(s-a)<.01):I(s)&&I(a)?h(oi(s,a)):h(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Br({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Xn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function bt(r,e){let{value:t}=r;if(t==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return ni(t);case"DateTime":return Ue(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return ii(t);case"Quantity":return I(t);default:return r.type===n||typeof t=="object"&&t?.resourceType===n}}function ni(r){return typeof r=="string"&&!!xt.date.exec(r)}function Ue(r){return typeof r=="string"&&!!xt.dateTime.exec(r)}function ii(r){return!!(r&&typeof r=="object"&&("start"in r&&Ue(r.start)||"end"in r&&Ue(r.end)))}function St(r){if(r){if(ni(r)||Ue(r))return{start:vt(r,"0000-01-01T00:00:00.000"),end:vt(r,"xxxx-12-31T23:59:59.999")};if(ii(r))return{start:r.start?vt(r.start,"0000-01-01T00:00:00.000"):void 0,end:r.end?vt(r.end,"xxxx-12-31T23:59:59.999"):void 0}}}function vt(r,e){let t="Z",n=Math.max(r.indexOf("+",10),r.indexOf("-",10));n>-1?(t=r.substring(n),r=r.substring(0,n)):r.endsWith("Z")&&(r=r.substring(0,r.length-1));let i=r+e.substring(r.length)+t;return new Date(i).toISOString()}function I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function oi(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 Br(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(Zn(o)&&Zn(s)){if(!Br(o,s))return!1}else if(o!==s)return!1}return!0}function Zn(r){return r!==null&&typeof r=="object"}function Nr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return es(r??{},e)}return r}function es(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Ye(r,e){return k(r,e)&&"id"in r&&typeof r.id=="string"}function be(r){let e=A(r)??"undefined/undefined",t=rs(r);return t===e?{reference:e}:{reference:e,display:t}}function A(r){if(H(r))return r.reference;if(Ye(r))return`${r.resourceType}/${r.id}`}function Se(r){if(r)return H(r)?r.reference.split("/")[1]:r.id}function Vl(r){if(r?.reference===void 0)throw new f(x("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(x("Unable to parse reference string."));return[e,t]}function $r(r){if(r)if(r.accounts&&r.account){let e=r.accounts;return e.some(t=>t.reference===r.account?.reference)?e:[r.account,...e]}else return Ne(r.accounts??r.account)}function ts(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function rs(r){if(ts(r)){let e=ns(r);if(e)return e}if(r.resourceType==="Device"){let e=is(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return Ke(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),Wr(e))return Ke(e);if(ds(e))return e.text}return A(r)??""}function ns(r){let e=r.name;if(e&&e.length>0)return Ze(e[0])}function is(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ml(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=si(t);if(n)return n}else return si(e)}function si(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function _l(r){return r?new Date(r):void 0}function Rt(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(),u=n.getUTCMonth(),l=n.getUTCDate(),p=a-i;(u<o||u===o&&l<s)&&p--;let y=a*12+u-(i*12+o);l<s&&y--;let T=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:y,days:T}}function Ll(r,e){let{years:t,months:n,days:i}=Rt(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 Fl(r){let e={};return ai(r.item,e),e}function ai(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ai(t.item,e)}function Nl(r){let e={};return ci(r.item,e),e}function ci(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ci(t.item,e)}function os(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 Ul(r,e,t,n){let i={system:e,value:t};n?.use&&(i.use=n.use);let o=r.identifier;if(!o){r.identifier=[i];return}for(let s of o)if(s.system===e){Object.assign(s,i);return}o.push(i)}function Bl(r,...e){let t=le(r,...e);if(!t)return;let n=V({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function le(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 Ct(r,e){let t=Hr(r);return JSON.stringify(t,null,e?2:void 0)??""}function Hr(r){if(!(r==null||r===""))return typeof r=="object"?Array.isArray(r)?ss(r):as(r):r}function ss(r){let e=r.length;if(e===0)return;let t,n=0;for(let i=0;i<e;i++){let o=r[i],s=Hr(o);s!==o&&!t&&(t=Array.from(r)),s===void 0?t&&(t[i]=null):(t&&(t[i]=s),n++)}if(n!==0)return t??r}function as(r){let e,t=0;for(let n in r){let i=r[n],o=Hr(i);o!==i&&!e&&(e={...r}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),t++)}if(t!==0)return e??r}function C(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!re(r):!1}function re(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function ql(r){if(!r)return;let e=r.length-1;for(;e>=0&&C(r[e]);)e--;return e>=0?r.slice(0,e+1):void 0}function pe(r,e,t){return r===e||C(r)&&C(e)?!0:C(r)||C(e)?!1:Array.isArray(r)&&Array.isArray(e)?cs(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?us(r,e,t):(E(r)||E(e),!1)}function cs(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!pe(r[t],e[t]))return!1;return!0}function us(r,e,t){let n=new Set;for(let i of Object.keys(r))n.add(i);for(let i of Object.keys(e))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(!pe(o,s,i))return!1}return!0}function ze(r,e){return C(r)?!0:C(e)?!1:Array.isArray(r)&&Array.isArray(e)?ls(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?ps(r,e):E(r)||E(e)?!1:r===e}function ls(r,e){return e.every(t=>r.some(n=>ze(n,t)))}function ps(r,e){return Object.entries(e).every(([t,n])=>t in r&&ze(r[t],n))}function Ee(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Wl(r){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(r)}function E(r){return r!==null&&typeof r=="object"}function ui(r){return r.every(Be)}function Be(r){return typeof r=="string"}function qr(r){return E(r)&&"code"in r&&typeof r.code=="string"}function Wr(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(qr)}function jl(r,e){for(let t of r??g)for(let n of t.coding??g)if(n.system===e)return n.code}function ds(r){return E(r)&&"text"in r&&typeof r.text=="string"}var li=[];for(let r=0;r<256;r++)li.push(r.toString(16).padStart(2,"0"));function pi(r){let e=fi(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=li[t[i]];return n.join("")}function di(r){let e=fi(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=String.fromCodePoint(t[i]);return window.btoa(n.join(""))}function fi(r){return ArrayBuffer.isView(r)?r.buffer:r}function M(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function $l(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Gr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function de(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function jr(r,e){return r.coding?.find(t=>t.system===e)?.code}function Hl(r,e,t){r.coding??=[];let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Gl(r,e,t,n){return r.qualifiedInterval?.find(i=>mi(i,e)&&ys(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Ql(r,e,t){return fs(r,e,t)[0]}function fs(r,e,t){return r.qualifiedInterval?.filter(n=>mi(n,e)&&(!t||t.includes(n.condition)))??[]}function mi(r,e){return ms(r,e)&&hs(r,e)}function ms(r,e){return!r.gender||r.gender===e.gender}function hs(r,e){return!r.age||hi(Rt(e.birthDate).years,r.age)}function ys(r,e,t){return!!r.range&&hi(e,r.range,t)}function hi(r,e,t){return(e.low?.value===void 0||xs(r,e.low.value,t))&&(e.high?.value===void 0||gs(r,e.high.value,t))}function zl(r,e){return Number.parseFloat(r.toFixed(e))}function Jl(r,e,t){return K(r,t)===K(e,t)}function Kl(r,e,t){return K(r,t)<K(e,t)}function Yl(r,e,t){return K(r,t)>K(e,t)}function gs(r,e,t){return K(r,t)<=K(e,t)}function xs(r,e,t){return K(r,t)>=K(e,t)}function K(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Xl(r,e,t){return r.find(n=>typeof e=="string"?jr(n.code||{},t)===e:jr(n.code||{},t)===jr(e,t))}function Ne(r){if(r!==void 0)return Array.isArray(r)?r:[r]}function Zl(r){return Array.isArray(r)?r[0]:r}var Qr=(r,e)=>new Promise((t,n)=>{e?.signal?.throwIfAborted();let i=setTimeout(t,r);e?.signal?.addEventListener("abort",()=>{clearTimeout(i),n(e.signal?.reason)},{once:!0})});function Xe(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function yi(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function z(r,e){return r?(r.push(e),r):[e]}function Pt(r){return r.sort((e,t)=>e.localeCompare(t))}function zr(r){return r.endsWith("/")?r:r+"/"}function vs(r){return r.startsWith("/")?r.slice(1):r}function G(r,e){return new URL(vs(e),zr(r.toString())).toString()}function gi(r,e){return G(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function xi(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var Ts=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function ep(r){return Ts.test(r)}function tp(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function rp(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[os(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function np(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function ip(r,e){let t=[];if(!r)return t;for(let n=0;n<r.length;n++){let i=e(r[n],n);Array.isArray(i)?t.push(...i):i!==void 0&&t.push(i)}return t}function op(r){return r.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("\u201C","&ldquo;").replaceAll("\u201D","&rdquo;").replaceAll("\u2018","&lsquo;").replaceAll("\u2019","&rsquo;").replaceAll("\u2026","&hellip;")}function sp(r){return r!=null}var g=Object.freeze([]);function vi(r){if(!r)return"";switch(r.type){case"Address":return Ss(r.value);case"CodeableConcept":return Ke(r.value);case"Coding":return Ti(r.value);case"ContactPoint":return r.value.value;case"HumanName":return Ze(r.value);case"Quantity":return fe(r.value);case"Reference":return bs(r.value);default:return r.value?.toString()??""}}function bs(r){return r?r.display??r.reference??Ct(r):""}function Ss(r,e){if(!r)return"";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 Ze(r,e){if(!r)return"";let t=[];if(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.length===0){let n=Re(r.text);if(n)return n}return t.join(" ").trim()}function up(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function lp(r){return Re(r.family)??""}function At(r){return r instanceof Date&&!Number.isNaN(r.getTime())}function pp(r,e,t){if(!r)return"";let n=new Date(r);return At(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function dp(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return At(n)?n.toLocaleTimeString(e,t):""}function Es(r,e,t){if(!r)return"";let[n=0,i=0,o=0]=r.split(":").map(Number),s=new Date(Date.UTC(1970,0,1,n,i,o));return At(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...t,timeZone:"UTC"}).format(s):""}function Jr(r,e,t){if(!r)return"";let n=new Date(r);return At(n)?n.toLocaleString(e,t):""}function fp(r,e,t){return!r||!r.start&&!r.end?"":Jr(r.start,e,t)+" - "+Jr(r.end,e,t)}var Rs={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Cs={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Ps={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function mp(r){if(!r)return"";let e=[];return As(e,r.repeat),r.event&&e.push(r.event.map(t=>Jr(t)).join(", ")),M(e.join(" ").trim())}function As(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Rs[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Cs[i]):r.push("per "+n+" "+Ps[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(M).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Es(o)).join(", "))}function hp(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=Is(n.value,e),`> ${fe(n,e)}`):`>= ${fe(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Os(i.value,e),`< ${fe(i,e)}`):`<= ${fe(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${fe(n,e)} - ${fe(i,e)}`)}function fe(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.at(-1)!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function yp(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=Re(r.text);return e||(r.coding?r.coding.map(t=>Ti(t)).join(", "):"")}function Ti(r,e){let t=Re(r?.display);if(t){let n=e?Re(r?.code):void 0;return`${t}${n?" ("+n+")":""}`}return Re(r?.code)??""}function ws(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(fe(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=Re(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>ws(t)).join(" / ")),e.join(" / ").trim()}function Re(r){return typeof r=="string"?r:void 0}function Os(r,e,t=1){return(bi(r,e)+t)*Math.pow(10,-e)}function Is(r,e,t=1){return(bi(r,e)-t)*Math.pow(10,-e)}function bi(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var d={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SimpleQuantity:"SimpleQuantity",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid",xhtml:"xhtml"};function bp(r){for(let e of r.entry??g){let t=e.resource;t.resourceType==="SearchParameter"&&Kr(t)}}function Kn(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)t?.resourceType==="StructureDefinition"&&t.kind==="resource"&&Ei(t.type)}function Ei(r){let e=B.types[r];return e||(e={searchParamsDetails:{}},B.types[r]=e),!e.searchParams&&r!=="Binary"&&(e.searchParams={_id:{base:[r],code:"_id",type:"token",expression:r+".id"},_lastUpdated:{base:[r],code:"_lastUpdated",type:"date",expression:r+".meta.lastUpdated"},_compartment:{base:[r],code:"_compartment",type:"reference",expression:r+".meta.compartment"},_profile:{base:[r],code:"_profile",type:"uri",expression:r+".meta.profile"},_security:{base:[r],code:"_security",type:"token",expression:r+".meta.security"},_source:{base:[r],code:"_source",type:"uri",expression:r+".meta.source"},_tag:{base:[r],code:"_tag",type:"token",expression:r+".meta.tag"}}),e}function Kr(r){for(let e of r.base??g){let t=Ei(e);t.searchParams||(t.searchParams={}),t.searchParams[r.code]=r}}function Rr(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ks((r.base?.path??r.path)?.split(".")):e}function ks(r){return r.length===1?r[0]:r.map(M).join("")}function Or(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Sp(){return Object.values(Gn()).filter(Or).map(r=>r.name)}function Ep(r){return B.types[r]?.searchParams}function Rp(r,e){return B.types[r]?.searchParams?.[e]}function Cp(r){let e=r.replaceAll("[x]","").split(".").pop();return Ds(e)}function Ds(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(Ms).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Vs=new Set(["CDS","ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Ms(r){let e=r.toUpperCase();return r===e?r:Vs.has(e)?e:e.charAt(0)+r.slice(1)}function Et(r,e,t){let n=Qe(r,t);if(n)return _s(n.elements,e)}function _s(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function Pp(r){return!!(r&&typeof r=="object"&&"type"in r&&"value"in r)}function k(r,e){return!(!r||typeof r!="object"||!("resourceType"in r)||e&&r.resourceType!==e)}function H(r,e){return r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string"?e?r.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var B={types:{}};function Ri(r){switch(r.type){case d.uuid:case d.uri:case d.url:case d.string:case d.oid:case d.markdown:case d.id:case d.code:case d.canonical:case d.base64Binary:case d.SystemString:case d.date:case d.dateTime:case d.instant:return r.value;case d.Identifier:return`${r.value.system??""}|${r.value.value}`;case d.Coding:return Si(r.value);case d.CodeableConcept:return r.value.coding?.map(Si).join(",")??r.value.text;case d.HumanName:return r.value.text?r.value.text:Ze(r.value);case d.unsignedInt:case d.positiveInt:case d.integer:case d.decimal:return r.value.toString();case d.boolean:return r.value?"true":"false";case d.Extension:return r.value.url;case d.ContactPoint:return r.value.value;case d.Quantity:case d.Age:case d.Count:case d.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case d.Reference:return r.value.reference;default:return Ye(r.value)?A(r.value):JSON.stringify(r)}}function Si(r){return r?`${r.system??""}|${r.code}`:""}function qe(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}}var ne=()=>[],D={empty:(r,e)=>h(e.every(t=>C(t.value))),hasValue:(r,e)=>h(e.length!==0),exists:(r,e,t)=>t?h(e.some(n=>U(t.eval(r,[n])))):h(e.length>0&&e.every(n=>!C(n.value))),all:(r,e,t)=>h(e.every(n=>U(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return h(!1);return h(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return h(!0);return h(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return h(!1);return h(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return h(!0);return h(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return h(!0);let n=t.eval(r,Ce(r));return n.length===0?h(!1):h(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Ce(r));return n.length===0?h(!0):e.length===0?h(!1):h(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:d.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)=>h(e.length===D.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>U(t.eval(r,[n]))),select:(r,e,t)=>e.flatMap(n=>t.eval({parent:r,variables:{$this:n}},[n])),repeat:ne,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(-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 TypeError("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 TypeError("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,Ce(r)),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,Ce(r)),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,Ce(r));return Tt([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Ce(r));return[...e,...n]},htmlChecks:(r,e,t)=>[b(!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 U(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);if(typeof t=="boolean")return[{type:d.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return h(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return h(!0);if(["false","f","no","n","0","0.0"].includes(n))return h(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:h(D.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);return typeof t=="number"?[{type:d.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:d.integer,value:Number.parseInt(t,10)}]:typeof t=="boolean"?[{type:d.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:h(D.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:d.date,value:qe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:h(D.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:d.dateTime,value:qe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:h(D.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);return typeof t=="number"?[{type:d.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:d.decimal,value:Number.parseFloat(t)}]:typeof t=="boolean"?[{type:d.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:h(D.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);return I(t)?[{type:d.Quantity,value:t}]:typeof t=="number"?[{type:d.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:d.Quantity,value:{value:Number.parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:d.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:h(D.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);return t==null?[]:I(t)?[{type:d.string,value:`${t.value} '${t.unit}'`}]:[{type:d.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:h(D.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=X(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:d.time,value:qe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:h(D.toTime(r,e).length===1),indexOf:(r,e,t)=>q((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>q((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>q((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>q((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>q((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>q(t=>t.toUpperCase(),r,e),lower:(r,e)=>q(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>q((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>q((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>q((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),r,e,t,n),length:(r,e)=>q(t=>t.length,r,e),toChars:(r,e)=>q(t=>t?t.split(""):void 0,r,e),encode:ne,decode:ne,escape:ne,unescape:ne,trim:ne,split:ne,join:(r,e,t)=>{let n=t?.eval(r,Ce(r))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:d.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>Y(Math.abs,r,e),ceiling:(r,e)=>Y(Math.ceil,r,e),exp:(r,e)=>Y(Math.exp,r,e),floor:(r,e)=>Y(Math.floor,r,e),ln:(r,e)=>Y(Math.log,r,e),log:(r,e,t)=>Y((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>Y(Math.pow,r,e,t),round:(r,e,...t)=>Y((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},r,e,...t),sqrt:(r,e)=>Y(Math.sqrt,r,e),truncate:(r,e)=>Y(t=>Math.trunc(t),r,e),children:ne,descendants:ne,trace:(r,e,t)=>e,now:()=>[{type:d.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:d.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:d.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=D.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=D.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 u=Rt(o[0].value,s[0].value);return[{type:d.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof L?n=t.name:t instanceof Z&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:d.boolean,value:bt(i,n)})):[]},not:(r,e)=>D.toBoolean(r,e).map(t=>({type:d.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 b(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:d.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:d.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:d.BackboneElement,value:{namespace:"System",name:"Integer"}}:k(t)?{type:d.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:d.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:d.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:d.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof L&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:d.id,value:Se(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=le(i,n);if(o)return[{type:d.Extension,value:o}]}return[]}};function q(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=X(t,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,t)[0]?.value),s=r(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(b):[b(s)]}function Y(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=X(t,1),o=I(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),u=o?d.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function X(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}function Ce(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var me=class{constructor(e,t){c(this,"original");c(this,"child");this.original=e,this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},W=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},L=class{constructor(e){c(this,"name");this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return k(t,this.name)?e:Vr(e,this.name)}toString(){return this.name}},wt=class{eval(){return[]}toString(){return"{}"}},Ot=class extends lt{constructor(t,n,i){super(t,n);c(this,"impl");this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},he=class extends ce{constructor(e,t){super("as",e,t)}eval(e,t){return D.ofType(e,this.left.eval(e,t),this.right)}},w=class extends ce{},_=class extends w{constructor(t,n,i,o){super(t,n,i);c(this,"impl");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,u=I(s)?s.value:s,l=I(a)?a.value:a,p=this.impl(u,l);return typeof p=="boolean"?h(p):I(s)?[{type:d.Quantity,value:{...s,value:p}}]:[b(p)]}},It=class extends ce{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:d.string,value:o.map(s=>s.value).join("")}]:o}},kt=class extends w{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return h(n.some(o=>o.value===i[0].value))}},Dt=class extends w{constructor(e,t){super("in",e,t)}eval(e,t){let n=J(this.left.eval(e,t)),i=this.right.eval(e,t);return n?h(i.some(o=>Je(n,o)[0].value)):[]}},Z=class extends ce{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()}`}},Pe=class extends ce{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Tt([...n,...i])}},Vt=class extends w{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ti(n,i)}},Mt=class extends w{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ri(n,i)}},_t=class extends w{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ur(n,i)}},Lt=class extends w{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ei(Ur(n,i))}},Ae=class extends w{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 h(bt(n[0],i))}},Ft=class extends w{constructor(e,t){super("and",e,t)}eval(e,t){let n=J(this.left.eval(e,t),"boolean"),i=J(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?h(!0):n?.value===!1||i?.value===!1?h(!1):[]}},Nt=class extends w{constructor(e,t){super("or",e,t)}eval(e,t){let n=J(this.left.eval(e,t),"boolean"),i=J(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?h(!1):n?.value||i?.value?h(!0):[]}},Ut=class extends w{constructor(e,t){super("xor",e,t)}eval(e,t){let n=J(this.left.eval(e,t),"boolean"),i=J(this.right.eval(e,t),"boolean");return!n||!i?[]:h(n.value!==i.value)}},Bt=class extends w{constructor(e,t){super("implies",e,t)}eval(e,t){let n=J(this.left.eval(e,t),"boolean"),i=J(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?h(!0):!n||!i?[]:h(!1)}},ie=class{constructor(e,t){c(this,"name");c(this,"args");this.name=e,this.args=t}eval(e,t){let n=D[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(", ")})`}},we=class{constructor(e,t){c(this,"left");c(this,"expr");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 Ls=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Fs={"'":"'",'"':'"',"`":"`",r:"\r",n:`
2
- `,t:" ",f:"\f","\\":"\\"},ye=class{constructor(e,t,n,i){c(this,"str");c(this,"keywords");c(this,"operators");c(this,"dateTimeLiterals");c(this,"symbolRegex");c(this,"result",[]);c(this,"pos",{index:0,line:1,column:0});c(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==='"'||e==="`"?this.consumeString(e):e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():(e==="$"||e==="%")&&(t==="'"||t==='"'||t==="`")?this.consumeQuotedSymbol(t):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()!==`
1
+ var Oo=Object.defineProperty;var Io=(r,e,t)=>e in r?Oo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var c=(r,e,t)=>Io(r,typeof e!="symbol"?e+"":e,t);var z=class{constructor(e=10){c(this,"max");c(this,"cache");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}};var lt=class{constructor(e,t){c(this,"operator");c(this,"child");this.operator=e,this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},ue=class{constructor(e,t,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=t,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},pt=class{constructor(){c(this,"prefixParselets",{});c(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 dr(e,this.prefixParselets,this.infixParselets)}},dr=class{constructor(e,t,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");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 new 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 new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw new 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 Cn="http://unitsofmeasure.org",hu="http://loinc.org",yu="http://snomed.info/sct",gu="http://www.nlm.nih.gov/research/umls/rxnorm",xu="http://www.ama-assn.org/go/cpt",vu="http://hl7.org/fhir/sid/icd-10",Tu="http://hl7.org/fhir/sid/ndc",dt="http://hl7.org",bu="http://terminology.hl7.org";var ft="created",fr="gone",mr="not-modified",hr="found",yr="not-found",gr="conflict",xr="unauthorized",Pn="forbidden",An="precondition-failed",wn="unsupported-media-type",On="multiple-matches",In="too-many-requests",mt="accepted",kn="server-timeout",Vn="business-rule",Eu={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ru={resourceType:"OperationOutcome",id:ft,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Cu={resourceType:"OperationOutcome",id:mr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Dn={resourceType:"OperationOutcome",id:yr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Me={resourceType:"OperationOutcome",id:xr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Mn={...Me,issue:[...Me.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},vr={...Me,issue:[...Me.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},Pu={resourceType:"OperationOutcome",id:Pn,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Au={resourceType:"OperationOutcome",id:fr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},wu={resourceType:"OperationOutcome",id:An,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Ou={resourceType:"OperationOutcome",id:wn,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Iu={resourceType:"OperationOutcome",id:On,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},ku={resourceType:"OperationOutcome",id:In,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Vu(r){return{resourceType:"OperationOutcome",id:mt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function Du(r,e){return{resourceType:"OperationOutcome",id:gr,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:r}}]}}function v(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function _n(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Mu(r){return{resourceType:"OperationOutcome",id:kn,issue:[{severity:"error",code:"timeout",details:{text:r??"Server timeout"}}]}}function _u(r){let e=r.toString();return{resourceType:"OperationOutcome",id:hr,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function Lu(r,e){return{resourceType:"OperationOutcome",id:Vn,issue:[{severity:"error",code:"business-rule",details:{id:r,text:e}}]}}function Tr(r){return!r||typeof r!="object"?!1:r instanceof Error||typeof DOMException<"u"&&r instanceof DOMException?!0:Object.prototype.toString.call(r)==="[object Error]"}function Ge(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function br(r){return r.id==="ok"||r.id===ft||r.id===mr||r.id===mt}function Fu(r){return r.id===ft}function Nu(r){return r.id===mt}function Uu(r){return r.id===hr}function Bu(r){return r.id===yr}function qu(r){return r.id===gr}function Wu(r){return r.id===fr}function ju(r){return r.id===xr}function $u(r){switch(r.id){case"ok":return 200;case ft:return 201;case mt:return 202;case hr:return 302;case mr:return 304;case xr:return 401;case Pn:return 403;case yr:return 404;case gr:return 409;case fr:return 410;case An:case On:return 412;case wn:return 415;case Vn:return 422;case In:return 429;case kn:return 504;default:return r.issue?.[0]?.code==="exception"?500:400}}function Hu(r,e){if(!br(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(t,n){super(Ln(t),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=t}};function ht(r){return r instanceof f?r.outcome:Ge(r)?r:R(_e(r))}function _e(r){return r?typeof r=="string"?r:Tr(r)?r.message:Ge(r)?Ln(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Ln(r){let e=r.issue?.map(ko)??[];return e.length>0?e.join("; "):"Unknown error"}function ko(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function Te(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function S(r,e){return Te("error","structure",e,r)}function Fn(r,e){return Te("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Nn(r,e,t,n){return Te("error","processing",e,r,{...n,error:t})}var Vo={"http://hl7.org/fhirpath/System.String":"string"};function zu(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:Vo[t.code]??t.code})),e}function Do(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Un(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,type:t,path:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Do(i,o)])),constraints:[],innerTypes:[]};return e}var Bn={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,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:9007199254740991,type:[{code:"DosageDoseAndRate"}]},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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"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:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"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:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function Cr(r){return new Er(r).parse()}var be=Un(Bn),Pr=Object.create(null),qn=Object.create(null),_o={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function Hn(r){let e;return e=qn[r],e||(e=qn[r]=Object.create(null)),e}function Ar(r){let t=(Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Kn(t);for(let n of t)wr(n)}function wr(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=Cr(r),t=_o[r.url],n,i;t?(n=be,i=t):r.url===`http://hl7.org/fhir/StructureDefinition/${r.type}`||r.url===`https://medplum.com/fhir/StructureDefinition/${r.type}`||r.type?.startsWith("http://")||r.type?.startsWith("https://")?(n=be,i=r.type):(n=Hn(r.url),i=r.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Pr[r.url]=e}function Gn(){return be}function Qn(r){return!!be[r]}function Qe(r,e){if(e){let t=Hn(e)[r];if(t)return t}return be[r]}function le(r,e){let t=Qe(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function yt(r){let e=be[r];return e&&Or(e)}function zn(r){return!!Pr[r]}function Jn(r){return Pr[r]}var Er=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:Uo(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},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=Sr(e,this.slicingContext.path);this.slicingContext.current.elements[t]=this.parseElementDefinition(e)}}else{let t=this.parseElementDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Sr(e,n.path)]=t;break}n=n.parent}if(!n){let i=Sr(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),this.slicingContext&&!Le(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Le(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let t=Rr(e);this.backboneContext={type:{name:t,type:t,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:Le(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){No(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")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&&!Le(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Le(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}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=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Le(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: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Rr(e)),n||(n=pe(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=jn(e.max),n=e.base?.max?jn(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",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:this.parseElementDefinitionType(e),fixed:$n(M(i,"fixed[x]")),pattern:$n(M(i,"pattern[x]")),binding:e.binding}}};function nl(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=be[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+_(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Lo.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat(Wn):[Wn]},r}var Wn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Lo=["resourceType","id","meta"];function jn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Sr(r,e=""){return Fo(r.path,e)}function Fo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Le(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function $n(r){return Array.isArray(r)&&r.length>0?r[0]:C(r)?void 0:r}function No(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function Uo(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}function Vr(r,e,t){new Ir(r,e,t).crawl()}function pl(r,e,t){return new kr(r,e,t).crawl()}var Ir=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??le(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=V(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=Fe(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)for(let a of Ne(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,t,n){if(!gt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??le(e.type);this.crawlObject(e,i,t)}}},kr=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??le(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=V(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=Fe(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)for(let a of Ne(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,t,n){if(!gt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??le(e.type);await this.crawlObject(e,i,t)}}};function Fe(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Dr:M,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let u=[];for(let l of s)if(Array.isArray(l))for(let d of l)u.push(n(d,a,t));else(t?.withPath&&l?.value!==void 0||!t?.withPath&&l!==void 0)&&u.push(n(l,a,t));s=u}return s}function Dr(r,e,t){let n=r.path;return Bo(M(r,e,t),n,e)}function Bo(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}function dl(r){return r[0]===r[0].toUpperCase()&&(r=r.slice(r.indexOf(".")+1)),`.${r}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,t)=>`/${t}`)}var Mr={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",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"},qo=new z(1e3);function gt(r){return r==="undefined"||r in Mr}var xt={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:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,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:/.*/},Wo={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Rl(r,e){if(!yt(r.resourceType))throw new f(v("Invalid resource type"));return jo(b(r),e)}function jo(r,e){return new _r(r,e).validate()}var _r=class{constructor(e,t){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"base64BinaryMaxBytes");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],V(e.value)&&this.resourceStack.push(e.value),t?.profile?this.schema=Cr(t.profile):this.schema=le(e.type),this.base64BinaryMaxBytes=t?.base64BinaryMaxBytes??1*1024*1024,this.collect=t?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){Lr(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),Vr(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new f({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,t.path)}onEnterResource(e,t){this.resourceStack.push(t.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(S(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(S(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(S(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Go(a,s)||this.issues.push(S(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(d=>[d.name,0])):void 0;for(let d of u){this.constraintsCheck(d,s),this.referenceTypeCheck(d,s),this.checkPropertyValue(d),this.collectValue(d,s);let y=Qo(d,s.slicing);y&&l&&(l[y]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(S(e.path,"Missing required property")),!1):C(e)?(this.issues.push(S(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){gt(e.type)?this.validatePrimitiveType(e):C(e.value)&&this.issues.push(S(e.path,"Invalid empty non-primitive value"))}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(S(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)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=Ho(e,s,t);if(a){let u,l;a.startsWith("_")?(u=a.slice(1),l=s.slice(1)):(u="_"+a,l="_"+s),u in o&&o[u]!==l&&this.issues.push(Te("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(Te("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(S(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t){let n=t.constraints;for(let i of n??g)if(i.severity==="error"&&!(i.key in Wo)&&!this.isExpressionTrue(i,e)){this.issues.push(Fn(e.path,i));return}}referenceTypeCheck(e,t){if(e.type!=="Reference")return;let n=e.value;if(!G(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=t.type.find(y=>y.code==="Reference")?.targetProfile;if(!o)return;let s=dt+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,l="https://medplum.com/fhir/StructureDefinition/",d=l+i;for(let y of o)if(y===a||y===u||y===d||!y.startsWith(s)&&!y.startsWith(l))return;this.issues.push(Te("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,t){t.binding?.valueSet&&t.binding.strength==="required"&&Jo(e.type)&&this.appendToken(t.binding.valueSet,e)}appendToken(e,t){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}for(let i of n??g)if(i.path===t.path)return;this.collect.tokens[e]=J(n,t)}isExpressionTrue(e,t){let n={"%context":t,"%ucum":b(Cn)},i=this.currentResource();i&&(n["%resource"]=b(i)),V(this.root.value)&&(n["%rootResource"]=this.root);try{let o=P(e.expression,[t],n,qo);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Nn(t.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[t,n]=zo(e),i=e.path;if(t){let{type:o,value:s}=t;if(!(o in Mr)){this.issues.push(S(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Mr[o];if(typeof s!==a){s!==null&&this.issues.push(S(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}o==="base64Binary"?this.validateBase64Binary(s,i):a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&Vr(n,this,{schema:le("Element"),initialPath:i})}validateBase64Binary(e,t){if(!Ko(e)){this.issues.push(S(t,"Invalid base64Binary format"));return}let n=0;e.endsWith("==")?n=2:e.endsWith("=")&&(n=1),Math.max(0,Math.floor(e.length*3/4)-n)>this.base64BinaryMaxBytes&&this.issues.push(S(t,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}validateString(e,t,n){if(!e.trim()){this.issues.push(S(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(S(n,"String cannot be larger than 1 MB"));return}let i=xt[t];i&&!i.exec(e)&&this.issues.push(S(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(S(n,"Invalid numeric value")):$o(t)&&!Number.isInteger(e)?this.issues.push(S(n,"Expected number to be an integer")):t===p.positiveInt&&e<=0?this.issues.push(S(n,"Expected number to be positive")):t===p.unsignedInt&&e<0&&this.issues.push(S(n,"Expected number to be non-negative"))}};function $o(r){return r===p.integer||r===p.positiveInt||r===p.unsignedInt}function Ho(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return M(r,o)?n+a:void 0}}function Lr(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(S(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(S(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(S(`${o}[${a}]`,"Invalid null value")):i[a]&&Lr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Lr(i,o,t)}}function Go(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!ze(t,e.pattern)||e.fixed&&!de(t,e.fixed))}function Fr(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return ze(r,i.pattern);if(i.fixed)return de(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Qo(r,e){for(let t of e?.slices??g)if(e?.discriminator?.every(n=>Ne(Fe(r,n.path))?.some(i=>Fr(i,n,t))))return t.name}function zo(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function Jo(r){switch(r){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function Ko(r){if(r.length===0)return!1;let e=0;r.endsWith("==")?e=2:r.endsWith("=")&&(e=1);let t=r.length-e;if(t<0||(e+t)%4!==0)return!1;let n=e>0?r.slice(0,-e):r;return/^[A-Za-z\d+/]+$/.test(n)}function h(r){return[{type:p.boolean,value:r}]}function b(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:p.integer,value:r}:typeof r=="number"?{type:p.decimal,value:r}:typeof r=="boolean"?{type:p.boolean,value:r}:typeof r=="string"?{type:p.string,value:r}:I(r)?{type:p.Quantity,value:r}:V(r)?{type:r.resourceType,value:r}:Wr(r)?{type:p.CodeableConcept,value:r}:qr(r)?{type:p.Coding,value:r}:{type:p.BackboneElement,value:r}}function q(r){return r.length===0?!1:!!r[0].value}function K(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 M(r,e,t){if(!r.value)return;let n=Et(r.type,e,t?.profileUrl);return n?Yo(r,e,n):Xo(r,e)}function Yo(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a,u=t.path.lastIndexOf("."),l=t.path.substring(u+1),d=l,y=!1;l.endsWith("[x]")&&(d=l.substring(0,l.length-3),y=!0);for(let x of i){let k=d;if(y&&(k+=_(x.code)),o=n[k],a=n["_"+k],o!==void 0||a!==void 0){s=x.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let x=0;x<Math.max(o.length,a.length);x++)o[x]=Nr(o[x],a[x])}else if(!o&&Array.isArray(a)){o=a.slice();for(let x=0;x<a.length;x++)o[x]=Nr(void 0,a[x])}else o=Nr(o,a);if(!C(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(x=>Yn(x,s)):Yn(o,s)}function Yn(r,e){return e==="Resource"&&V(r)&&(e=r.resourceType),{type:e,value:r}}function Xo(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t){let i=t[e];Array.isArray(i)?n=i.map(b):n=b(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(p)){let s=i+_(o);if(s in t){let a=t[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||C(n[0]))return}else if(C(n))return;return n}function Tt(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(q(Je(t,i))){n=!0;break}n||e.push(t)}return e}function ei(r){return h(!q(r))}function ti(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?h(!1):h(r.every((t,n)=>q(Je(t,e[n]))))}function ri(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?h(!0):h(r.some((t,n)=>!q(Je(t,e[n]))))}function Je(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?h(Math.abs(t-n)<1e-8):I(t)&&I(n)?h(oi(t,n)):h(typeof t=="object"&&typeof n=="object"?Br(r,e):t===n)}function Ur(r,e){return r.length===0&&e.length===0?h(!0):r.length!==e.length?h(!1):(r.sort(Xn),e.sort(Xn),h(r.every((t,n)=>q(Zo(t,e[n])))))}function Zo(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?h(Math.abs(s-a)<.01):I(s)&&I(a)?h(oi(s,a)):h(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Br({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Xn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function bt(r,e){let{value:t}=r;if(t==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return ni(t);case"DateTime":return Ue(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return ii(t);case"Quantity":return I(t);default:return r.type===n||typeof t=="object"&&t?.resourceType===n}}function ni(r){return typeof r=="string"&&!!xt.date.exec(r)}function Ue(r){return typeof r=="string"&&!!xt.dateTime.exec(r)}function ii(r){return!!(r&&typeof r=="object"&&("start"in r&&Ue(r.start)||"end"in r&&Ue(r.end)))}function St(r){if(r){if(ni(r)||Ue(r))return{start:vt(r,"0000-01-01T00:00:00.000"),end:vt(r,"xxxx-12-31T23:59:59.999")};if(ii(r))return{start:r.start?vt(r.start,"0000-01-01T00:00:00.000"):void 0,end:r.end?vt(r.end,"xxxx-12-31T23:59:59.999"):void 0}}}function vt(r,e){let t="Z",n=Math.max(r.indexOf("+",10),r.indexOf("-",10));n>-1?(t=r.substring(n),r=r.substring(0,n)):r.endsWith("Z")&&(r=r.substring(0,r.length-1));let i=r+e.substring(r.length)+t;return new Date(i).toISOString()}function I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function oi(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 Br(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(Zn(o)&&Zn(s)){if(!Br(o,s))return!1}else if(o!==s)return!1}return!0}function Zn(r){return r!==null&&typeof r=="object"}function Nr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return es(r??{},e)}return r}function es(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Ye(r,e){return V(r,e)&&"id"in r&&typeof r.id=="string"}function Se(r){let e=A(r)??"undefined/undefined",t=rs(r);return t===e?{reference:e}:{reference:e,display:t}}function A(r){if(G(r))return r.reference;if(Ye(r))return`${r.resourceType}/${r.id}`}function Ee(r){if(r)return G(r)?r.reference.split("/")[1]:r.id}function _l(r){if(r?.reference===void 0)throw new f(v("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(v("Unable to parse reference string."));return[e,t]}function $r(r){if(r)if(r.accounts&&r.account){let e=r.accounts;return e.some(t=>t.reference===r.account?.reference)?e:[r.account,...e]}else return Ne(r.accounts??r.account)}function ts(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function rs(r){if(ts(r)){let e=ns(r);if(e)return e}if(r.resourceType==="Device"){let e=is(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return Ke(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),Wr(e))return Ke(e);if(ds(e))return e.text}return A(r)??""}function ns(r){let e=r.name;if(e&&e.length>0)return Ze(e[0])}function is(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ll(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=si(t);if(n)return n}else return si(e)}function si(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Fl(r){return r?new Date(r):void 0}function Rt(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(),u=n.getUTCMonth(),l=n.getUTCDate(),d=a-i;(u<o||u===o&&l<s)&&d--;let y=a*12+u-(i*12+o);l<s&&y--;let x=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:d,months:y,days:x}}function Nl(r,e){let{years:t,months:n,days:i}=Rt(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 Ul(r){let e={};return ai(r.item,e),e}function ai(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ai(t.item,e)}function Bl(r){let e={};return ci(r.item,e),e}function ci(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ci(t.item,e)}function os(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 ql(r,e,t,n){let i={system:e,value:t};n?.use&&(i.use=n.use);let o=r.identifier;if(!o){r.identifier=[i];return}for(let s of o)if(s.system===e){Object.assign(s,i);return}o.push(i)}function Wl(r,...e){let t=pe(r,...e);if(!t)return;let n=M({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function pe(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 Ct(r,e){let t=Hr(r);return JSON.stringify(t,null,e?2:void 0)??""}function Hr(r){if(!(r==null||r===""))return typeof r=="object"?Array.isArray(r)?ss(r):as(r):r}function ss(r){let e=r.length;if(e===0)return;let t,n=0;for(let i=0;i<e;i++){let o=r[i],s=Hr(o);s!==o&&!t&&(t=Array.from(r)),s===void 0?t&&(t[i]=null):(t&&(t[i]=s),n++)}if(n!==0)return t??r}function as(r){let e,t=0;for(let n in r){let i=r[n],o=Hr(i);o!==i&&!e&&(e={...r}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),t++)}if(t!==0)return e??r}function C(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!ne(r):!1}function ne(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function jl(r){if(!r)return;let e=r.length-1;for(;e>=0&&C(r[e]);)e--;return e>=0?r.slice(0,e+1):void 0}function de(r,e,t){return r===e||C(r)&&C(e)?!0:C(r)||C(e)?!1:Array.isArray(r)&&Array.isArray(e)?cs(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?us(r,e,t):(E(r)||E(e),!1)}function cs(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!de(r[t],e[t]))return!1;return!0}function us(r,e,t){let n=new Set;for(let i of Object.keys(r))n.add(i);for(let i of Object.keys(e))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(!de(o,s,i))return!1}return!0}function ze(r,e){return C(r)?!0:C(e)?!1:Array.isArray(r)&&Array.isArray(e)?ls(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?ps(r,e):E(r)||E(e)?!1:r===e}function ls(r,e){return e.every(t=>r.some(n=>ze(n,t)))}function ps(r,e){return Object.entries(e).every(([t,n])=>t in r&&ze(r[t],n))}function Re(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function $l(r){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(r)}function E(r){return r!==null&&typeof r=="object"}function ui(r){return r.every(Be)}function Be(r){return typeof r=="string"}function qr(r){return E(r)&&"code"in r&&typeof r.code=="string"}function Wr(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(qr)}function Hl(r,e){for(let t of r??g)for(let n of t.coding??g)if(n.system===e)return n.code}function ds(r){return E(r)&&"text"in r&&typeof r.text=="string"}var li=[];for(let r=0;r<256;r++)li.push(r.toString(16).padStart(2,"0"));function pi(r){let e=fi(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=li[t[i]];return n.join("")}function di(r){let e=fi(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=String.fromCodePoint(t[i]);return window.btoa(n.join(""))}function fi(r){return ArrayBuffer.isView(r)?r.buffer:r}function _(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Gl(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Gr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function fe(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function jr(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ql(r,e,t){r.coding??=[];let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function zl(r,e,t,n){return r.qualifiedInterval?.find(i=>mi(i,e)&&ys(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Jl(r,e,t){return fs(r,e,t)[0]}function fs(r,e,t){return r.qualifiedInterval?.filter(n=>mi(n,e)&&(!t||t.includes(n.condition)))??[]}function mi(r,e){return ms(r,e)&&hs(r,e)}function ms(r,e){return!r.gender||r.gender===e.gender}function hs(r,e){return!r.age||hi(Rt(e.birthDate).years,r.age)}function ys(r,e,t){return!!r.range&&hi(e,r.range,t)}function hi(r,e,t){return(e.low?.value===void 0||xs(r,e.low.value,t))&&(e.high?.value===void 0||gs(r,e.high.value,t))}function Kl(r,e){return Number.parseFloat(r.toFixed(e))}function Yl(r,e,t){return Y(r,t)===Y(e,t)}function Xl(r,e,t){return Y(r,t)<Y(e,t)}function Zl(r,e,t){return Y(r,t)>Y(e,t)}function gs(r,e,t){return Y(r,t)<=Y(e,t)}function xs(r,e,t){return Y(r,t)>=Y(e,t)}function Y(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function ep(r,e,t){return r.find(n=>typeof e=="string"?jr(n.code||{},t)===e:jr(n.code||{},t)===jr(e,t))}function Ne(r){if(r!==void 0)return Array.isArray(r)?r:[r]}function tp(r){return Array.isArray(r)?r[0]:r}var Qr=(r,e)=>new Promise((t,n)=>{e?.signal?.throwIfAborted();let i=setTimeout(t,r);e?.signal?.addEventListener("abort",()=>{clearTimeout(i),n(e.signal?.reason)},{once:!0})});function Xe(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function yi(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function J(r,e){return r?(r.push(e),r):[e]}function Pt(r){return r.sort((e,t)=>e.localeCompare(t))}function zr(r){return r.endsWith("/")?r:r+"/"}function vs(r){return r.startsWith("/")?r.slice(1):r}function F(r,e){return new URL(vs(e),zr(r.toString())).toString()}function gi(r,e){return F(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function xi(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var Ts=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function rp(r){return Ts.test(r)}function np(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function ip(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[os(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function op(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function sp(r,e){let t=[];if(!r)return t;for(let n=0;n<r.length;n++){let i=e(r[n],n);Array.isArray(i)?t.push(...i):i!==void 0&&t.push(i)}return t}function ap(r){return r.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("\u201C","&ldquo;").replaceAll("\u201D","&rdquo;").replaceAll("\u2018","&lsquo;").replaceAll("\u2019","&rsquo;").replaceAll("\u2026","&hellip;")}function cp(r){return r!=null}var g=Object.freeze([]);function vi(r){if(!r)return"";switch(r.type){case"Address":return Ss(r.value);case"CodeableConcept":return Ke(r.value);case"Coding":return Ti(r.value);case"ContactPoint":return r.value.value;case"HumanName":return Ze(r.value);case"Quantity":return me(r.value);case"Reference":return bs(r.value);default:return r.value?.toString()??""}}function bs(r){return r?r.display??r.reference??Ct(r):""}function Ss(r,e){if(!r)return"";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 Ze(r,e){if(!r)return"";let t=[];if(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.length===0){let n=Ce(r.text);if(n)return n}return t.join(" ").trim()}function pp(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function dp(r){return Ce(r.family)??""}function At(r){return r instanceof Date&&!Number.isNaN(r.getTime())}function fp(r,e,t){if(!r)return"";let n=new Date(r);return At(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function mp(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return At(n)?n.toLocaleTimeString(e,t):""}function Es(r,e,t){if(!r)return"";let[n=0,i=0,o=0]=r.split(":").map(Number),s=new Date(Date.UTC(1970,0,1,n,i,o));return At(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...t,timeZone:"UTC"}).format(s):""}function Jr(r,e,t){if(!r)return"";let n=new Date(r);return At(n)?n.toLocaleString(e,t):""}function hp(r,e,t){return!r||!r.start&&!r.end?"":Jr(r.start,e,t)+" - "+Jr(r.end,e,t)}var Rs={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Cs={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Ps={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function yp(r){if(!r)return"";let e=[];return As(e,r.repeat),r.event&&e.push(r.event.map(t=>Jr(t)).join(", ")),_(e.join(" ").trim())}function As(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Rs[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Cs[i]):r.push("per "+n+" "+Ps[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(_).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Es(o)).join(", "))}function gp(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=Is(n.value,e),`> ${me(n,e)}`):`>= ${me(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Os(i.value,e),`< ${me(i,e)}`):`<= ${me(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${me(n,e)} - ${me(i,e)}`)}function me(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.at(-1)!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function xp(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=Ce(r.text);return e||(r.coding?r.coding.map(t=>Ti(t)).join(", "):"")}function Ti(r,e){let t=Ce(r?.display);if(t){let n=e?Ce(r?.code):void 0;return`${t}${n?" ("+n+")":""}`}return Ce(r?.code)??""}function ws(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(me(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=Ce(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>ws(t)).join(" / ")),e.join(" / ").trim()}function Ce(r){return typeof r=="string"?r:void 0}function Os(r,e,t=1){return(bi(r,e)+t)*Math.pow(10,-e)}function Is(r,e,t=1){return(bi(r,e)-t)*Math.pow(10,-e)}function bi(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var p={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SimpleQuantity:"SimpleQuantity",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid",xhtml:"xhtml"};function Ep(r){for(let e of r.entry??g){let t=e.resource;t.resourceType==="SearchParameter"&&Kr(t)}}function Kn(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)t?.resourceType==="StructureDefinition"&&t.kind==="resource"&&Ei(t.type)}function Ei(r){let e=W.types[r];return e||(e={searchParamsDetails:{}},W.types[r]=e),!e.searchParams&&r!=="Binary"&&(e.searchParams={_id:{base:[r],code:"_id",type:"token",expression:r+".id"},_lastUpdated:{base:[r],code:"_lastUpdated",type:"date",expression:r+".meta.lastUpdated"},_compartment:{base:[r],code:"_compartment",type:"reference",expression:r+".meta.compartment"},_profile:{base:[r],code:"_profile",type:"uri",expression:r+".meta.profile"},_security:{base:[r],code:"_security",type:"token",expression:r+".meta.security"},_source:{base:[r],code:"_source",type:"uri",expression:r+".meta.source"},_tag:{base:[r],code:"_tag",type:"token",expression:r+".meta.tag"}}),e}function Kr(r){for(let e of r.base??g){let t=Ei(e);t.searchParams||(t.searchParams={}),t.searchParams[r.code]=r}}function Rr(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ks((r.base?.path??r.path)?.split(".")):e}function ks(r){return r.length===1?r[0]:r.map(_).join("")}function Or(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Rp(){return Object.values(Gn()).filter(Or).map(r=>r.name)}function Cp(r){return W.types[r]?.searchParams}function Pp(r,e){return W.types[r]?.searchParams?.[e]}function Ap(r){let e=r.replaceAll("[x]","").split(".").pop();return Vs(e)}function Vs(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(Ms).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Ds=new Set(["CDS","ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Ms(r){let e=r.toUpperCase();return r===e?r:Ds.has(e)?e:e.charAt(0)+r.slice(1)}function Et(r,e,t){let n=Qe(r,t);if(n)return _s(n.elements,e)}function _s(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function wp(r){return!!(r&&typeof r=="object"&&"type"in r&&"value"in r)}function V(r,e){return!(!r||typeof r!="object"||!("resourceType"in r)||e&&r.resourceType!==e)}function G(r,e){return r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string"?e?r.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var W={types:{}};function Ri(r){switch(r.type){case p.uuid:case p.uri:case p.url:case p.string:case p.oid:case p.markdown:case p.id:case p.code:case p.canonical:case p.base64Binary:case p.SystemString:case p.date:case p.dateTime:case p.instant:return r.value;case p.Identifier:return`${r.value.system??""}|${r.value.value}`;case p.Coding:return Si(r.value);case p.CodeableConcept:return r.value.coding?.map(Si).join(",")??r.value.text;case p.HumanName:return r.value.text?r.value.text:Ze(r.value);case p.unsignedInt:case p.positiveInt:case p.integer:case p.decimal:return r.value.toString();case p.boolean:return r.value?"true":"false";case p.Extension:return r.value.url;case p.ContactPoint:return r.value.value;case p.Quantity:case p.Age:case p.Count:case p.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case p.Reference:return r.value.reference;default:return Ye(r.value)?A(r.value):JSON.stringify(r)}}function Si(r){return r?`${r.system??""}|${r.code}`:""}function qe(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}}var ie=()=>[],D={empty:(r,e)=>h(e.every(t=>C(t.value))),hasValue:(r,e)=>h(e.length!==0),exists:(r,e,t)=>t?h(e.some(n=>q(t.eval(r,[n])))):h(e.length>0&&e.every(n=>!C(n.value))),all:(r,e,t)=>h(e.every(n=>q(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return h(!1);return h(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return h(!0);return h(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return h(!1);return h(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return h(!0);return h(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return h(!0);let n=t.eval(r,Pe(r));return n.length===0?h(!1):h(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Pe(r));return n.length===0?h(!0):e.length===0?h(!1):h(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:p.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)=>h(e.length===D.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>q(t.eval(r,[n]))),select:(r,e,t)=>e.flatMap(n=>t.eval({parent:r,variables:{$this:n}},[n])),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(-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 TypeError("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 TypeError("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,Pe(r)),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,Pe(r)),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,Pe(r));return Tt([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Pe(r));return[...e,...n]},htmlChecks:(r,e,t)=>[b(!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 q(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);if(typeof t=="boolean")return[{type:p.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return h(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return h(!0);if(["false","f","no","n","0","0.0"].includes(n))return h(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:h(D.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);return typeof t=="number"?[{type:p.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:p.integer,value:Number.parseInt(t,10)}]:typeof t=="boolean"?[{type:p.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:h(D.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:p.date,value:qe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:h(D.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:p.dateTime,value:qe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:h(D.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);return typeof t=="number"?[{type:p.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:p.decimal,value:Number.parseFloat(t)}]:typeof t=="boolean"?[{type:p.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:h(D.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);return I(t)?[{type:p.Quantity,value:t}]:typeof t=="number"?[{type:p.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:p.Quantity,value:{value:Number.parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:p.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:h(D.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);return t==null?[]:I(t)?[{type:p.string,value:`${t.value} '${t.unit}'`}]:[{type:p.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:h(D.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Z(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:p.time,value:qe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:h(D.toTime(r,e).length===1),indexOf:(r,e,t)=>j((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>j((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>j((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>j((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>j((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>j(t=>t.toUpperCase(),r,e),lower:(r,e)=>j(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>j((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>j((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>j((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),r,e,t,n),length:(r,e)=>j(t=>t.length,r,e),toChars:(r,e)=>j(t=>t?t.split(""):void 0,r,e),encode:ie,decode:ie,escape:ie,unescape:ie,trim:ie,split:ie,join:(r,e,t)=>{let n=t?.eval(r,Pe(r))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:p.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>X(Math.abs,r,e),ceiling:(r,e)=>X(Math.ceil,r,e),exp:(r,e)=>X(Math.exp,r,e),floor:(r,e)=>X(Math.floor,r,e),ln:(r,e)=>X(Math.log,r,e),log:(r,e,t)=>X((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>X(Math.pow,r,e,t),round:(r,e,...t)=>X((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},r,e,...t),sqrt:(r,e)=>X(Math.sqrt,r,e),truncate:(r,e)=>X(t=>Math.trunc(t),r,e),children:ie,descendants:ie,trace:(r,e,t)=>e,now:()=>[{type:p.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:p.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:p.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=D.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=D.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 u=Rt(o[0].value,s[0].value);return[{type:p.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof N?n=t.name:t instanceof ee&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:p.boolean,value:bt(i,n)})):[]},not:(r,e)=>D.toBoolean(r,e).map(t=>({type:p.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 b(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:p.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:p.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:p.BackboneElement,value:{namespace:"System",name:"Integer"}}:V(t)?{type:p.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:p.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:p.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:p.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof N&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:p.id,value:Ee(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=pe(i,n);if(o)return[{type:p.Extension,value:o}]}return[]}};function j(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=Z(t,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,t)[0]?.value),s=r(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(b):[b(s)]}function X(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=Z(t,1),o=I(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=r(s,...n.map(d=>d.eval(e,t)[0]?.value)),u=o?p.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function Z(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}function Pe(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var he=class{constructor(e,t){c(this,"original");c(this,"child");this.original=e,this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},$=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},N=class{constructor(e){c(this,"name");this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return V(t,this.name)?e:Dr(e,this.name)}toString(){return this.name}},wt=class{eval(){return[]}toString(){return"{}"}},Ot=class extends lt{constructor(t,n,i){super(t,n);c(this,"impl");this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},ye=class extends ue{constructor(e,t){super("as",e,t)}eval(e,t){return D.ofType(e,this.left.eval(e,t),this.right)}},w=class extends ue{},L=class extends w{constructor(t,n,i,o){super(t,n,i);c(this,"impl");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,u=I(s)?s.value:s,l=I(a)?a.value:a,d=this.impl(u,l);return typeof d=="boolean"?h(d):I(s)?[{type:p.Quantity,value:{...s,value:d}}]:[b(d)]}},It=class extends ue{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:p.string,value:o.map(s=>s.value).join("")}]:o}},kt=class extends w{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return h(n.some(o=>o.value===i[0].value))}},Vt=class extends w{constructor(e,t){super("in",e,t)}eval(e,t){let n=K(this.left.eval(e,t)),i=this.right.eval(e,t);return n?h(i.some(o=>Je(n,o)[0].value)):[]}},ee=class extends ue{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()}`}},Ae=class extends ue{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Tt([...n,...i])}},Dt=class extends w{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ti(n,i)}},Mt=class extends w{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ri(n,i)}},_t=class extends w{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ur(n,i)}},Lt=class extends w{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ei(Ur(n,i))}},we=class extends w{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 h(bt(n[0],i))}},Ft=class extends w{constructor(e,t){super("and",e,t)}eval(e,t){let n=K(this.left.eval(e,t),"boolean"),i=K(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?h(!0):n?.value===!1||i?.value===!1?h(!1):[]}},Nt=class extends w{constructor(e,t){super("or",e,t)}eval(e,t){let n=K(this.left.eval(e,t),"boolean"),i=K(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?h(!1):n?.value||i?.value?h(!0):[]}},Ut=class extends w{constructor(e,t){super("xor",e,t)}eval(e,t){let n=K(this.left.eval(e,t),"boolean"),i=K(this.right.eval(e,t),"boolean");return!n||!i?[]:h(n.value!==i.value)}},Bt=class extends w{constructor(e,t){super("implies",e,t)}eval(e,t){let n=K(this.left.eval(e,t),"boolean"),i=K(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?h(!0):!n||!i?[]:h(!1)}},oe=class{constructor(e,t){c(this,"name");c(this,"args");this.name=e,this.args=t}eval(e,t){let n=D[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(", ")})`}},Oe=class{constructor(e,t){c(this,"left");c(this,"expr");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 Ls=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Fs={"'":"'",'"':'"',"`":"`",r:"\r",n:`
2
+ `,t:" ",f:"\f","\\":"\\"},ge=class{constructor(e,t,n,i){c(this,"str");c(this,"keywords");c(this,"operators");c(this,"dateTimeLiterals");c(this,"symbolRegex");c(this,"result",[]);c(this,"pos",{index:0,line:1,column:0});c(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==='"'||e==="`"?this.consumeString(e):e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():(e==="$"||e==="%")&&(t==="'"||t==='"'||t==="`")?this.consumeQuotedSymbol(t):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()!==`
3
3
  `))}consumeString(e){this.advance();let t="",n;for(;n=this.consumeChar(e);)t+=n;let i=this.buildToken(e==="`"?"Symbol":"String",t);return this.advance(),i}consumeChar(e){let t=this.curr();if(t==="\\"){this.advance();let n=this.curr(),i=Fs[n];if(i!==void 0)return this.advance(),i;if(n==="u"){this.advance();let o=/^[0-9a-fA-F]{4}$/.exec(this.str.substring(this.pos.index,this.pos.index+4))?.[0];return o?(this.advance(),this.advance(),this.advance(),this.advance(),String.fromCodePoint(Number.parseInt(o,16))):"u"}return this.consumeChar(e)}return t===e||!t?"":(this.advance(),t)}consumeQuotedSymbol(e){this.mark();let t=this.pos.index;this.advance(),this.consumeString(e);let n=this.str.substring(t,this.pos.index);return this.buildToken("Symbol",n)}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;if(this.curr()==="T"&&(t=!0,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"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.pos.index===e)throw new Error("Invalid DateTime literal");let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}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()===" "&&Ns(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]}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()===`
4
- `?(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 Ns(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ls.includes(r.value)))}var et=["true","false"],tt=["!=","!~","<=",">=","{}","->"];function Ci(r){return new ye(r,et,tt).tokenize()}var v={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},Us={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Bs={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new we(e,t)},precedence:v.Indexer},qs={parse(r,e){if(!(e instanceof L))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new ie(e.name,t)},precedence:v.FunctionCall};function Ws(r){let e=r.split(" "),t=Number.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 rt(){return new pt().registerPrefix("String",{parse:(r,e)=>new W({type:d.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new W({type:d.dateTime,value:qe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new W({type:d.Quantity,value:Ws(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new W({type:e.value.includes(".")?d.decimal:d.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new W({type:d.boolean,value:!0})}).registerPrefix("false",{parse:()=>new W({type:d.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new L(e.value)}).registerPrefix("{}",{parse:()=>new wt}).registerPrefix("(",Us).registerInfix("[",Bs).registerInfix("(",qs).prefix("+",v.UnaryAdd,(r,e)=>new Ot("+",e,t=>t)).prefix("-",v.UnarySubtract,(r,e)=>new _("-",e,e,(t,n)=>-n)).infixLeft(".",v.Dot,(r,e,t)=>new Z(r,t)).infixLeft("/",v.Divide,(r,e,t)=>new _("/",r,t,(n,i)=>n/i)).infixLeft("*",v.Multiply,(r,e,t)=>new _("*",r,t,(n,i)=>n*i)).infixLeft("+",v.Add,(r,e,t)=>new _("+",r,t,(n,i)=>n+i)).infixLeft("-",v.Subtract,(r,e,t)=>new _("-",r,t,(n,i)=>n-i)).infixLeft("|",v.Union,(r,e,t)=>new Pe(r,t)).infixLeft("=",v.Equals,(r,e,t)=>new Vt(r,t)).infixLeft("!=",v.NotEquals,(r,e,t)=>new Mt(r,t)).infixLeft("~",v.Equivalent,(r,e,t)=>new _t(r,t)).infixLeft("!~",v.NotEquivalent,(r,e,t)=>new Lt(r,t)).infixLeft("<",v.LessThan,(r,e,t)=>new _("<",r,t,(n,i)=>n<i)).infixLeft("<=",v.LessThanOrEquals,(r,e,t)=>new _("<=",r,t,(n,i)=>n<=i)).infixLeft(">",v.GreaterThan,(r,e,t)=>new _(">",r,t,(n,i)=>n>i)).infixLeft(">=",v.GreaterThanOrEquals,(r,e,t)=>new _(">=",r,t,(n,i)=>n>=i)).infixLeft("&",v.Ampersand,(r,e,t)=>new It(r,t)).infixLeft("and",v.And,(r,e,t)=>new Ft(r,t)).infixLeft("as",v.As,(r,e,t)=>new he(r,t)).infixLeft("contains",v.Contains,(r,e,t)=>new kt(r,t)).infixLeft("div",v.Divide,(r,e,t)=>new _("div",r,t,(n,i)=>Math.trunc(n/i))).infixLeft("in",v.In,(r,e,t)=>new Dt(r,t)).infixLeft("is",v.Is,(r,e,t)=>new Ae(r,t)).infixLeft("mod",v.Modulo,(r,e,t)=>new _("mod",r,t,(n,i)=>n%i)).infixLeft("or",v.Or,(r,e,t)=>new Nt(r,t)).infixLeft("xor",v.Xor,(r,e,t)=>new Ut(r,t)).infixLeft("implies",v.Implies,(r,e,t)=>new Bt(r,t))}var js=rt();function qt(r){return new me(r,js.construct(Ci(r)).consumeAndParse())}function Xp(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]=b(t[n]))}return P(r,t).map(n=>n.value)}function P(r,e,t={},n=void 0){let i;if(typeof r=="string"){let o=n?.get(r);i=o??qt(r),n&&!o&&n.set(r,i)}else i=r;return i.eval({variables:t},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function id(r){let e=[];for(let t of r)t.type===d.Range?e.push([t.value?.low?.value,t.value?.high?.value]):typeof t.value=="number"&&e.push([t.value,t.value]);return e}function Pi(r){let e=[];for(let t of r){let n=St(t.value);n&&e.push(n)}return e}function Ai(r){let e=new Set;for(let t of r){let n=vi(t);n&&e.add(n)}return Array.from(e)}function wi(r){let e=new Set;for(let t of r){let{value:n}=t;n&&(Be(n)?e.add(n):H(n)?e.add(n.reference):Ye(n)?e.add(A(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function od(r){let e=[];for(let t of r){let{value:n}=t;typeof n=="number"?e.push({value:n}):I(n)&&e.push(n)}return e}function sd(r){let e=new Set;for(let t of r)Be(t.value)&&e.add(t.value);return Array.from(e)}function Oi(r,e={}){let t=[];for(let n of r)$s(e,t,n);return t}function $s(r,e,t){let{type:n,value:i}=t;switch(n){case d.Identifier:Hs(e,r,i);break;case d.CodeableConcept:Gs(e,r,i);break;case d.Coding:Ii(e,r,i);break;case d.ContactPoint:Qs(e,r,i);break;default:Oe(e,r,void 0,i?.toString())}}function Hs(r,e,t){t?.type?.text&&Oe(r,e,e.textSearchSystem,t.type.text),Oe(r,e,t?.system,t?.value)}function Gs(r,e,t){t?.text&&Oe(r,e,e.textSearchSystem,t.text);for(let n of t?.coding??g)Ii(r,e,n)}function Ii(r,e,t){t&&(t.display&&Oe(r,e,e.textSearchSystem,t.display),Oe(r,e,t.system,t.code))}function Qs(r,e,t){t&&Oe(r,e,t.system,t.value?.toLocaleLowerCase())}function Oe(r,e,t,n){(t||n)&&!r.some(i=>i.system===t&&i.value===n)&&r.push({system:t,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var fd=20,md=1e3,m={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},Yr={contains:m.CONTAINS,exact:m.EXACT,above:m.ABOVE,below:m.BELOW,text:m.TEXT,not:m.NOT,in:m.IN,"not-in":m.NOT_IN,"of-type":m.OF_TYPE,missing:m.MISSING,identifier:m.IDENTIFIER,iterate:m.ITERATE},Xr={eq:m.EQUALS,ne:m.NOT_EQUALS,lt:m.LESS_THAN,le:m.LESS_THAN_OR_EQUALS,gt:m.GREATER_THAN,ge:m.GREATER_THAN_OR_EQUALS,sa:m.STARTS_AFTER,eb:m.ENDS_BEFORE,ap:m.APPROXIMATELY,sw:m.STARTS_WITH};function nt(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return zs(i,o)}function zs(r,e){let t={resourceType:r};for(let[n,i]of e)Js(t,n,i);return t}function Js(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){r.filters=z(r.filters,{code:e,operator:m.EQUALS,value:t});return}switch(n){case"_sort":Ks(r,t);break;case"_cursor":r.cursor=t;break;case"_count":r.count=Number.parseInt(t,10);break;case"_offset":r.offset=Number.parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=ki(t);i==="iterate"&&(s.modifier=m.ITERATE),r.include=z(r.include,s);break}case"_revinclude":{let s=ki(t);i==="iterate"&&(s.modifier=m.ITERATE),r.revInclude=z(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=B.types[r.resourceType]?.searchParams?.[n];s?r.filters=z(r.filters,Xs(s,i,t)):r.filters=z(r.filters,Zs(n,i,t))}}}}function Ks(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})}}var Ys=[m.MISSING,m.PRESENT];function Xs(r,e,t){if(Ys.includes(e))return{code:r.code,operator:e,value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=ea(t,e||m.EQUALS);if(!Di(r,i))throw new f(R(`Invalid format for ${r.type} search parameter: ${i}`));return{code:r.code,operator:n,value:i}}case"reference":case"string":case"token":case"uri":if(!Di(r,t))throw new f(R(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:ta(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Zs(r,e,t){let n=m.EQUALS;if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Xr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function ea(r,e){let t=r.substring(0,2),n=Xr[t];return n?{operator:n,value:r.substring(2)}:{operator:e,value:r}}function ta(r){return Yr[r]??m.EQUALS}function ki(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`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 f(R(`Invalid include value '${r}'`))}function Di(r,e){return r.type==="date"?Ue(e):!0}var ra=/{{([^{}]+)}}/g;function hd(r,e,t=[]){return r=r.replaceAll(ra,(n,i)=>{let o=P(i,t,e);return o.length!==1?"":Ri(o[0])}),nt(r)}function yd(r){let e=[];r.fields&&e.push("_fields="+r.fields.join(","));for(let t of r.filters??g)e.push(na(t));r.sortRules&&r.sortRules.length>0&&e.push(ia(r.sortRules)),r.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(r.cursor)),r.offset!==void 0&&r.offset!==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.types&&r.types.length>0&&e.push("_type="+r.types.join(","));for(let t of r.include??g)e.push(Vi("_include",t));for(let t of r.revInclude??g)e.push(Vi("_revinclude",t));return e.length===0?"":(Pt(e),"?"+e.join("&"))}function na(r){let e=r.operator in Yr?":"+r.operator:"",t=r.operator!==m.EQUALS&&r.operator in Xr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function ia(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Vi(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function it(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function oa(r,e){return R(`Invalid modifier :${r} for ${e}`)}function gd(r,e){return r in Yr?oa(r,e):R(`Invalid operator ${r} for ${e}`)}function Wt(r,e){if(e.resourceType!==r.resourceType)return!1;for(let t of e.filters??g)if(!sa(r,e,t))return!1;return!0}function sa(r,e,t){let n=B.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;let i=P(n.expression,[b(r)]);if(t.operator===m.MISSING||t.operator===m.PRESENT)return aa(i,t);switch(n.type){case"reference":return ca(i,t);case"string":case"uri":return pa(i,t);case"token":return ua(i,t);case"date":return fa(i,t);default:return!1}}function aa(r,e){let t=r.length>0;return(e.operator===m.MISSING&&e.value==="false"||e.operator===m.PRESENT&&e.value==="true")===t}function ca(r,e){let t=jt(e.operator);if(e.value===""&&r.length===0)return e.operator===m.EQUALS;let n=wi(r);for(let i of it(e.value)){let o=n.includes(i);if(!o&&e.code==="_compartment"&&(o=n.some(s=>s?.endsWith("/"+i))),o)return!t}return t}function ua(r,e){let t=Oi(r),n=it(e.value),i=jt(e.operator);for(let o of t)for(let s of n)if(la(o,s))return!i;return i}function la(r,e){if(e.includes("|")){let[t,n]=e.split("|").map(i=>i.toLowerCase());return!t&&!n?!1:t?r.system?.toLowerCase()===t&&(!n||r.value?.toLowerCase()===n):!r.system&&r.value?.toLowerCase()===n}return r.value?.toLowerCase()===e.toLowerCase()}function pa(r,e){let t=Ai(r),n=it(e.value),i=jt(e.operator);for(let o of t)for(let s of n)if(da(o,s))return!i;return i}function da(r,e){return r.toLowerCase().includes(e.toLowerCase())}function fa(r,e){let t=Pi(r),n=it(e.value),i=jt(e.operator);for(let o of t)for(let s of n)if(ma(o,e.operator,s))return!i;return i}function ma(r,e,t){if(!r)return!1;let n=St(t);if(!n)return!1;let i=r.start??"0000",o=r.end??"9999",s=n.start,a=n.end;switch(e){case m.APPROXIMATELY:case m.EQUALS:case m.NOT_EQUALS:return i<a&&o>s;case m.LESS_THAN:return i<s;case m.GREATER_THAN:return o>a;case m.LESS_THAN_OR_EQUALS:return i<=a;case m.GREATER_THAN_OR_EQUALS:return o>=s;case m.STARTS_AFTER:return i>a;case m.ENDS_BEFORE:return o<s;default:return!1}}function jt(r){return r===m.NOT_EQUALS||r===m.NOT}var ha={resourceType:"*"},ya=["DomainConfiguration","JsonWebKey","Login"],ga=["UserSecurityRequest","Project","ProjectMembership","User"],Ie={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},xa=[Ie.READ,Ie.VREAD,Ie.HISTORY,Ie.SEARCH];function wd(r,e){return Mi(r,Ie.SEARCH,e)}function Od(r,e){return ya.includes(e)?!1:Mi(r,Ie.UPDATE,e)}function Mi(r,e,t){return!!r.resource?.some(n=>_i(n,t,e))}function Id(r,e){return!!va(e,Ie.UPDATE,r)}function va(r,e,t){return t?t.resource?.find(n=>Ta(r,e,n)):ha}function Ta(r,e,t){let n=r.resourceType;return _i(t,n,e)?n==="Binary"?!0:!(t.compartment&&!r.meta?.compartment?.some(i=>i.reference===t.compartment?.reference)||t.criteria&&!Wt(r,nt(t.criteria))):!1}function _i(r,e,t){return r.resourceType!==e&&(r.resourceType!=="*"||ga.includes(e))?!1:r.interaction?r.interaction.includes(t):!r.readonly||xa.includes(t)}var Dd={FIRST:"first",APPLICATION:"application"};function j(){return typeof window<"u"}function Md(){return typeof Buffer<"u"}function _d(){return typeof window<"u"?window:void 0}function Zr(){return typeof Buffer<"u"?Buffer:void 0}var oe={assign(r){j()&&globalThis.location.assign(r)},reload(){j()&&globalThis.location.reload()},getSearch(){return j()?globalThis.location.search:""},getPathname(){return j()?globalThis.location.pathname:""},getLocation(){return j()?globalThis.location.toString():""},getOrigin(){return j()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function ba(r){if(j()){let t=window.atob(r),n=Uint8Array.from(t,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Zr();if(e)return e.from(r,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function $t(r){if(j()){let t=new window.TextEncoder().encode(r),n=String.fromCodePoint.apply(null,t);return window.btoa(n)}let e=Zr();if(e)return e.from(r,"utf8").toString("base64");throw new Error("Unable to encode base64")}function Nd(r){return $t(r).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function Li(r){r=r.padEnd(r.length+(4-r.length%4)%4,"=");let e=r.replaceAll("-","+").replaceAll("_","/");return ba(e)}function en(){let r=new Uint32Array(28);return crypto.getRandomValues(r),pi(r.buffer)}async function Fi(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function se(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,r=>{let e=Math.trunc(Math.random()*16);return(r==="x"?e:e&3|8).toString(16)})}function Sa(r){let e={};r=Ee(r);for(let i of r.entry??g){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;s&&(e[s]=se(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource?.resourceType},resource:i.resource}))},(i,o)=>Ea(i,o,e),2);return Ra(JSON.parse(n))}function Ea(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function Ra(r){let e=Pa(r),{sorted:t,cycles:n}=Ca(e),i={},o=[];for(let a of r.entry??g)a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=t.map(a=>i[a]);for(let a of n)for(let u of a){let l=i[u],p={...l,request:{...l.request,method:"PUT"}};s.push(p)}return s.push(...o),{...r,entry:s}}var We={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function Ca(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=We.NotVisited;function i(o,s){if(t[o]===We.Visited)return!0;if(t[o]===We.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=We.Visiting,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=We.Visited,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===We.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Ni(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(H(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ni(n,e)}}function Pa(r){let e={};for(let t of r.entry??g)t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry??g){let n=t.fullUrl;t.resource&&Ni(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Hd(r){r=Ee(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=se());return Sa(e)}function Gd(r,e,t){return r.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===t)?.resource}async function Kd(r,e,t,n){return{hook:t.hook,hookInstance:se(),context:n,prefetch:await Aa(r,e,t,n)}}async function Aa(r,e,t,n){if(!t.prefetch)return{};let i={};for(let[o,s]of Object.entries(t.prefetch)){let a=await wa(r,e,n,s);i[o]=a??null}return i}function wa(r,e,t,n){if(n=Ia(e,t,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return r.readResource(a,u)}let[o,s]=Xe(n,"?",2);return r.search(o,s)}var Oa=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Ia(r,e,t){return t.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Oa.has(i))return r.id;if(i.startsWith("context.")){let o=i.substring(8),s=ka(e,o);if(Be(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function ka(r,e){let t=e.split("."),n=r;for(let i of t)if(n&&E(n)&&i in n)n=n[i];else return;return n}var O={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var tn=class{constructor(){c(this,"listeners");this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];for(let n of t??g)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},ee=class{constructor(){c(this,"emitter",new tn)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var rn={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},Da=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],nn=["DiagnosticReport-update"];function Ui(r){return nn.includes(r)}function Bi(r){if(nn.includes(r))throw new f(x(`'context.version' is required for '${r}'.`))}var Va={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Ma(r){return Da.includes(r)}function qi(r){return!!r.endpoint}function on(r){if(!Gt(r))throw new f(x("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return qi(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Gt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!rn[o])return!1;return!(qi(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function _a(r,e,t,n){if(typeof e!="object")throw new f(x(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(x(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(x(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Ma(e.resourceType))throw new f(x(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(x(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function La(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!H(e.reference))throw new f(x(`context[${t}] is invalid. Expected key '${e.key}' to be a reference.`))}else _a(r,e.resource,t,n)}function Fa(r,e){let t=new Map,n=Va[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(x(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));La(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(x(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)??0)>1)throw new f(x(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sn(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(x("Must provide a topic."));if(!rn[e])throw new f(x(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(rn).join(", ")}`));if(typeof t!="object")throw new f(x("context must be a context object or array of context objects."));if(nn.includes(e)&&!n)throw new f(x(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return Fa(e,i),{timestamp:new Date().toISOString(),id:se(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ht=class extends ee{constructor(t){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=t,!t.endpoint)throw new f(x("Subscription request should contain an endpoint."));if(!Gt(t))throw new f(x("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function Na(r){return JSON.parse(Li(r))}function Wi(r){return r.split(".").length===3}function Qt(r){let[e,t,n]=r.split(".");return Na(t)}function ji(r){try{return typeof Qt(r).login_id=="string"}catch{return!1}}function $i(r){try{let t=Qt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var zt=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t,O.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Hi;Hi=Symbol.toStringTag;var F=class{constructor(e){c(this,Hi,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");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)}};var ot=class{constructor(e,t=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new an,this.prefix=t}makeKey(e){return this.prefix+e}clear(){this.storage===globalThis.localStorage&&this.prefix?Object.keys(this.storage).filter(e=>e.startsWith(this.prefix)).forEach(e=>{this.storage.removeItem(e)}):this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,t){t?this.storage.setItem(this.makeKey(e),t):this.storage.removeItem(this.makeKey(e))}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Ct(t):void 0)}},an=class{constructor(){c(this,"data");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]}},Gi=class extends ot{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var je={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Qi=!1;function Ua(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");je.Event=globalThis.Event,je.ErrorEvent=class extends Event{constructor(t,n){super("error",n);c(this,"message");c(this,"error");this.message=t.message,this.error=t}},je.CloseEvent=class extends Event{constructor(t=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=t,this.reason=n}}}function Ba(r,e){if(!r)throw new Error(e)}function Jt(r){return new r.constructor(r.type,r)}var ke={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},zi=!1,Kt=class r extends ee{constructor(t,n,i={}){Qi||(Ua(),Qi=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",t=>{this._debug("open event");let{minUptime:n=ke.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),Ba(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(t),this.dispatchEvent(Jt(t))});c(this,"_handleMessage",t=>{this._debug("message event"),this.onmessage&&this.onmessage(t),this.dispatchEvent(Jt(t))});c(this,"_handleError",t=>{this._debug("error event",t.message),this._disconnect(void 0,t.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(t),this._debug("exec error listeners"),this.dispatchEvent(Jt(t)),this._connect()});c(this,"_handleClose",t=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(t),this.dispatchEvent(Jt(t))});this._url=t,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return r.CONNECTING}get OPEN(){return r.OPEN}get CLOSING(){return r.CLOSING}get CLOSED(){return r.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?r.CLOSED:r.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(t=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)}reconnect(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())}send(t){if(this._ws?.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{let{maxEnqueuedMessages:n=ke.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",t),this._messageQueue.push(t))}}_debug(...t){this._options.debug&&this._debugLogger("RWS>",...t)}_getNextDelay(){let{reconnectionDelayGrowFactor:t=ke.reconnectionDelayGrowFactor,minReconnectionDelay:n=ke.minReconnectionDelay,maxReconnectionDelay:i=ke.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(t,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(t=>{setTimeout(t,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:t=ke.maxRetries,connectionTimeout:n=ke.connectionTimeout}=this._options;if(this._retryCount>=t){this._debug("max retries reached",this._retryCount,">=",t);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!zi&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),zi=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new je.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new je.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(t=1e3,n){if(this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new je.CloseEvent(t,n,this))}catch{}}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var qa=[WebSocket.CLOSING,WebSocket.CLOSED],st=class extends ee{constructor(...t){super();c(this,"criteria");this.criteria=new Set(t)}getCriteria(){return this.criteria}_addCriteria(t){this.criteria.add(t)}_removeCriteria(t){this.criteria.delete(t)}},cn=class{constructor(e,t){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"tokenExpiry");c(this,"connecting",!1);this.criteria=e,this.emitter=new st(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}clearAttachedSubscription(){this.subscriptionId=void 0,this.token=void 0,this.tokenExpiry=void 0}},Yt=class{constructor(e,t,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"tokenRefreshTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof Xt))throw new f(x("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(x("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new Kt(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new st,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??5e3,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=Se(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let l=this.criteriaEntriesBySubscriptionId.get(a);if(!l){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}l.connecting=!1,l.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(Se(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(_n(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t})}),e.addEventListener("close",()=>{let t={type:"close"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.tokenRefreshTimer&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=void 0),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let t={type:"open"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.refreshAllSubscriptions().catch(console.error),this.pingTimer||(this.pingTimer=setInterval(()=>{if(this.waitingForPong){this.waitingForPong=!1,e.reconnect();return}e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0},this.pingIntervalMs)),this.tokenRefreshTimer??=setInterval(()=>{this.checkTokenExpirations()},6e4)}),this.medplum.addEventListener("change",()=>{let t=this.medplum.getProfile();this.currentProfile&&t===void 0?this.ws.close():t&&this.currentProfile?.id!==t.id&&this.ws.reconnect(),this.currentProfile=t})}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${A(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(a=>a.name==="token")?.valueString,o=n?.find(a=>a.name==="websocket-url")?.valueUrl,s=n?.find(a=>a.name==="expiration")?.valueDateTime;if(!i)throw new f(x("Failed to get token"));if(!o)throw new f(x("Failed to get URL from $get-ws-binding-token"));if(!s)throw new f(x("Failed to get expiration from $get-ws-binding-token"));return[t,i,s]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(pe(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!pe(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}async subscribeToCriteria(e){this.wsClosed&&await this.reconnectIfNeeded(),!this.isReconnecting(e)&&(e.connecting=!0,await this.rebindCriteriaEntry(e))}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();for(let e of this.criteriaEntries.values())for(let t of[...e.bareCriteria?[e.bareCriteria]:[],...e.criteriaWithProps])t.clearAttachedSubscription(),await this.subscribeToCriteria(t)}isReconnecting(e){return!!(this.ws.readyState!==WebSocket.OPEN||e.connecting)}async rebindCriteriaEntry(e){try{let[t,n,i]=await this.getTokenForCriteria(e);e.token=n,e.tokenExpiry=new Date(i).getTime(),e.subscriptionId=t,this.criteriaEntriesBySubscriptionId.set(t,e),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:n}}))}catch(t){console.error(_e(t)),this.emitError(e,t)}}checkTokenExpirations(){let e=Date.now();for(let t of this.criteriaEntries.values())for(let n of[...t.bareCriteria?[t.bareCriteria]:[],...t.criteriaWithProps])n.tokenExpiry&&n.tokenExpiry-e<=3e5&&!this.isReconnecting(n)&&this.rebindCriteriaEntry(n).catch(i=>{this.masterSubEmitter?.dispatchEvent({type:"error",payload:i})})}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new cn(e,t);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}getWebSocket(){return this.ws}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new st(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){qa.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let t=()=>{this.getWebSocket().removeEventListener("open",t),e()};this.getWebSocket().addEventListener("open",t),this.reconnectWebSocket()})}};async function Lf({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(!Wa(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=nt(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await ja(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=le(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");if(u&&u.valueCode!==t.interaction)return i?.debug(`Ignore rest hook for different interaction (wanted "${u.valueCode}", received "${t.interaction}")`),!1;if(!Wt(r,s))return!1;let l=$r(e.meta)??[],p=$r(r.meta)??[];return l.length&&!l.some(y=>p.some(T=>T.reference===y.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:A(r)}),!1):!0}function Wa(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function ja(r,e,t){let n=le(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":b(e),"%previous":b(i??{})};return P(n.valueString,[b(e)],o)?.[0]?.value===!0}var un="5.1.0-4d3d744",tm="medplum-cli",$a=O.FHIR_JSON+", */*; q=0.1",Ha="https://api.medplum.com/",Ga=1e3,Qa=6e4,za=0,Ja=3e5,Ka="Binary/",Ji={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},$e={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange"},Ya={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},rm={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Xa={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},nm={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},Xt=class extends ee{constructor(t){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??Za(),this.storage=t?.storage??new ot(void 0,t?.storagePrefix),this.createPdfImpl=t?.createPdf,this.baseUrl=zr(t?.baseUrl??Ha),this.fhirBaseUrl=G(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=G(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=G(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=G(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=G(this.baseUrl,t?.fhircastHubUrl??"fhircast/STU3"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.credentialsInHeader=t?.authCredentialsMethod==="header",this.defaultHeaders=t?.defaultHeaders??{},this.onUnauthenticated=t?.onUnauthenticated,this.refreshGracePeriod=t?.refreshGracePeriod??Ja,this.logLevel=this.initializeLogLevel(t),this.cacheTime=t?.cacheTime??(j()?Qa:za),this.cacheTime>0?this.requestCache=new Ve(t?.resourceCacheSize??Ga):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(t){return t?.logLevel?t.logLevel:t?.verbose!==void 0&&t.verbose?"verbose":"none"}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}getFhircastHubUrl(){return this.fhircastHubUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),j()&&sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=G(this.fhirBaseUrl,t);for(let i of this.requestCache?.keys()??g)(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&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new F(o);return this.setCacheEntry(t,s,n),s}post(t,n,i,o={}){return t=t.toString(),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(),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,O.JSON_PATCH),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(oe.getSearch()).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){oe.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),oe.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n,i){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let o={grant_type:$e.TokenExchange,subject_token_type:Ya.AccessToken,client_id:n,subject_token:t};return i&&(o.membership_id=i),this.fetchTokens(o)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(G(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=xi(n)),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u,i),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new F(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u,i),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new F(this.search(t,n,i).then(Yi));return this.setCacheEntry(s,u,i),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield Yi(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}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 Ji;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new F(Promise.reject(new Error("Missing reference")));if(i==="system")return new F(Promise.resolve(Ji));let[o,s]=i.split("/");return!o||!s?new F(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(t,n,i){return Array.isArray(t)?this.searchOne("",{_type:t.join(","),url:n},i):this.searchOne(t,"url="+n,i)}requestSchema(t,n){if(Qn(t))return Promise.resolve();let i=t+"-requestSchema",o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new F((async()=>{let a=`{
4
+ `?(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 Ns(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ls.includes(r.value)))}var et=["true","false"],tt=["!=","!~","<=",">=","{}","->"];function Ci(r){return new ge(r,et,tt).tokenize()}var T={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},Us={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Bs={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Oe(e,t)},precedence:T.Indexer},qs={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 oe(e.name,t)},precedence:T.FunctionCall};function Ws(r){let e=r.split(" "),t=Number.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 rt(){return new pt().registerPrefix("String",{parse:(r,e)=>new $({type:p.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new $({type:p.dateTime,value:qe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new $({type:p.Quantity,value:Ws(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new $({type:e.value.includes(".")?p.decimal:p.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new $({type:p.boolean,value:!0})}).registerPrefix("false",{parse:()=>new $({type:p.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new N(e.value)}).registerPrefix("{}",{parse:()=>new wt}).registerPrefix("(",Us).registerInfix("[",Bs).registerInfix("(",qs).prefix("+",T.UnaryAdd,(r,e)=>new Ot("+",e,t=>t)).prefix("-",T.UnarySubtract,(r,e)=>new L("-",e,e,(t,n)=>-n)).infixLeft(".",T.Dot,(r,e,t)=>new ee(r,t)).infixLeft("/",T.Divide,(r,e,t)=>new L("/",r,t,(n,i)=>n/i)).infixLeft("*",T.Multiply,(r,e,t)=>new L("*",r,t,(n,i)=>n*i)).infixLeft("+",T.Add,(r,e,t)=>new L("+",r,t,(n,i)=>n+i)).infixLeft("-",T.Subtract,(r,e,t)=>new L("-",r,t,(n,i)=>n-i)).infixLeft("|",T.Union,(r,e,t)=>new Ae(r,t)).infixLeft("=",T.Equals,(r,e,t)=>new Dt(r,t)).infixLeft("!=",T.NotEquals,(r,e,t)=>new Mt(r,t)).infixLeft("~",T.Equivalent,(r,e,t)=>new _t(r,t)).infixLeft("!~",T.NotEquivalent,(r,e,t)=>new Lt(r,t)).infixLeft("<",T.LessThan,(r,e,t)=>new L("<",r,t,(n,i)=>n<i)).infixLeft("<=",T.LessThanOrEquals,(r,e,t)=>new L("<=",r,t,(n,i)=>n<=i)).infixLeft(">",T.GreaterThan,(r,e,t)=>new L(">",r,t,(n,i)=>n>i)).infixLeft(">=",T.GreaterThanOrEquals,(r,e,t)=>new L(">=",r,t,(n,i)=>n>=i)).infixLeft("&",T.Ampersand,(r,e,t)=>new It(r,t)).infixLeft("and",T.And,(r,e,t)=>new Ft(r,t)).infixLeft("as",T.As,(r,e,t)=>new ye(r,t)).infixLeft("contains",T.Contains,(r,e,t)=>new kt(r,t)).infixLeft("div",T.Divide,(r,e,t)=>new L("div",r,t,(n,i)=>Math.trunc(n/i))).infixLeft("in",T.In,(r,e,t)=>new Vt(r,t)).infixLeft("is",T.Is,(r,e,t)=>new we(r,t)).infixLeft("mod",T.Modulo,(r,e,t)=>new L("mod",r,t,(n,i)=>n%i)).infixLeft("or",T.Or,(r,e,t)=>new Nt(r,t)).infixLeft("xor",T.Xor,(r,e,t)=>new Ut(r,t)).infixLeft("implies",T.Implies,(r,e,t)=>new Bt(r,t))}var js=rt();function qt(r){return new he(r,js.construct(Ci(r)).consumeAndParse())}function ed(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]=b(t[n]))}return P(r,t).map(n=>n.value)}function P(r,e,t={},n=void 0){let i;if(typeof r=="string"){let o=n?.get(r);i=o??qt(r),n&&!o&&n.set(r,i)}else i=r;return i.eval({variables:t},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function sd(r){let e=[];for(let t of r)t.type===p.Range?e.push([t.value?.low?.value,t.value?.high?.value]):typeof t.value=="number"&&e.push([t.value,t.value]);return e}function Pi(r){let e=[];for(let t of r){let n=St(t.value);n&&e.push(n)}return e}function Ai(r){let e=new Set;for(let t of r){let n=vi(t);n&&e.add(n)}return Array.from(e)}function wi(r){let e=new Set;for(let t of r){let{value:n}=t;n&&(Be(n)?e.add(n):G(n)?e.add(n.reference):Ye(n)?e.add(A(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function ad(r){let e=[];for(let t of r){let{value:n}=t;typeof n=="number"?e.push({value:n}):I(n)&&e.push(n)}return e}function cd(r){let e=new Set;for(let t of r)Be(t.value)&&e.add(t.value);return Array.from(e)}function Oi(r,e={}){let t=[];for(let n of r)$s(e,t,n);return t}function $s(r,e,t){let{type:n,value:i}=t;switch(n){case p.Identifier:Hs(e,r,i);break;case p.CodeableConcept:Gs(e,r,i);break;case p.Coding:Ii(e,r,i);break;case p.ContactPoint:Qs(e,r,i);break;default:Ie(e,r,void 0,i?.toString())}}function Hs(r,e,t){t?.type?.text&&Ie(r,e,e.textSearchSystem,t.type.text),Ie(r,e,t?.system,t?.value)}function Gs(r,e,t){t?.text&&Ie(r,e,e.textSearchSystem,t.text);for(let n of t?.coding??g)Ii(r,e,n)}function Ii(r,e,t){t&&(t.display&&Ie(r,e,e.textSearchSystem,t.display),Ie(r,e,t.system,t.code))}function Qs(r,e,t){t&&Ie(r,e,t.system,t.value?.toLocaleLowerCase())}function Ie(r,e,t,n){(t||n)&&!r.some(i=>i.system===t&&i.value===n)&&r.push({system:t,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var hd=20,yd=1e3,m={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},Yr={contains:m.CONTAINS,exact:m.EXACT,above:m.ABOVE,below:m.BELOW,text:m.TEXT,not:m.NOT,in:m.IN,"not-in":m.NOT_IN,"of-type":m.OF_TYPE,missing:m.MISSING,identifier:m.IDENTIFIER,iterate:m.ITERATE},Xr={eq:m.EQUALS,ne:m.NOT_EQUALS,lt:m.LESS_THAN,le:m.LESS_THAN_OR_EQUALS,gt:m.GREATER_THAN,ge:m.GREATER_THAN_OR_EQUALS,sa:m.STARTS_AFTER,eb:m.ENDS_BEFORE,ap:m.APPROXIMATELY,sw:m.STARTS_WITH};function nt(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return zs(i,o)}function zs(r,e){let t={resourceType:r};for(let[n,i]of e)Js(t,n,i);return t}function Js(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){r.filters=J(r.filters,{code:e,operator:m.EQUALS,value:t});return}switch(n){case"_sort":Ks(r,t);break;case"_cursor":r.cursor=t;break;case"_count":r.count=Number.parseInt(t,10);break;case"_offset":r.offset=Number.parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=ki(t);i==="iterate"&&(s.modifier=m.ITERATE),r.include=J(r.include,s);break}case"_revinclude":{let s=ki(t);i==="iterate"&&(s.modifier=m.ITERATE),r.revInclude=J(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=W.types[r.resourceType]?.searchParams?.[n];s?r.filters=J(r.filters,Xs(s,i,t)):r.filters=J(r.filters,Zs(n,i,t))}}}}function Ks(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})}}var Ys=[m.MISSING,m.PRESENT];function Xs(r,e,t){if(Ys.includes(e))return{code:r.code,operator:e,value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=ea(t,e||m.EQUALS);if(!Vi(r,i))throw new f(R(`Invalid format for ${r.type} search parameter: ${i}`));return{code:r.code,operator:n,value:i}}case"reference":case"string":case"token":case"uri":if(!Vi(r,t))throw new f(R(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:ta(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Zs(r,e,t){let n=m.EQUALS;if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Xr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function ea(r,e){let t=r.substring(0,2),n=Xr[t];return n?{operator:n,value:r.substring(2)}:{operator:e,value:r}}function ta(r){return Yr[r]??m.EQUALS}function ki(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`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 f(R(`Invalid include value '${r}'`))}function Vi(r,e){return r.type==="date"?Ue(e):!0}var ra=/{{([^{}]+)}}/g;function gd(r,e,t=[]){return r=r.replaceAll(ra,(n,i)=>{let o=P(i,t,e);return o.length!==1?"":Ri(o[0])}),nt(r)}function xd(r){let e=[];r.fields&&e.push("_fields="+r.fields.join(","));for(let t of r.filters??g)e.push(na(t));r.sortRules&&r.sortRules.length>0&&e.push(ia(r.sortRules)),r.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(r.cursor)),r.offset!==void 0&&r.offset!==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.types&&r.types.length>0&&e.push("_type="+r.types.join(","));for(let t of r.include??g)e.push(Di("_include",t));for(let t of r.revInclude??g)e.push(Di("_revinclude",t));return e.length===0?"":(Pt(e),"?"+e.join("&"))}function na(r){let e=r.operator in Yr?":"+r.operator:"",t=r.operator!==m.EQUALS&&r.operator in Xr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function ia(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Di(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function it(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function oa(r,e){return R(`Invalid modifier :${r} for ${e}`)}function vd(r,e){return r in Yr?oa(r,e):R(`Invalid operator ${r} for ${e}`)}function Wt(r,e){if(e.resourceType!==r.resourceType)return!1;for(let t of e.filters??g)if(!aa(r,e,t))return!1;return!0}var sa=new z(1e3);function aa(r,e,t){let n=W.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;let i=P(n.expression,[b(r)],void 0,sa);if(t.operator===m.MISSING||t.operator===m.PRESENT)return ca(i,t);switch(n.type){case"reference":return ua(i,t);case"string":case"uri":return da(i,t);case"token":return la(i,t);case"date":return ma(i,t);default:return!1}}function ca(r,e){let t=r.length>0;return(e.operator===m.MISSING&&e.value==="false"||e.operator===m.PRESENT&&e.value==="true")===t}function ua(r,e){let t=jt(e.operator);if(e.value===""&&r.length===0)return e.operator===m.EQUALS;let n=wi(r);for(let i of it(e.value)){let o=n.includes(i);if(!o&&e.code==="_compartment"&&(o=n.some(s=>s?.endsWith("/"+i))),o)return!t}return t}function la(r,e){let t=Oi(r),n=it(e.value),i=jt(e.operator);for(let o of t)for(let s of n)if(pa(o,s))return!i;return i}function pa(r,e){if(e.includes("|")){let[t,n]=e.split("|").map(i=>i.toLowerCase());return!t&&!n?!1:t?r.system?.toLowerCase()===t&&(!n||r.value?.toLowerCase()===n):!r.system&&r.value?.toLowerCase()===n}return r.value?.toLowerCase()===e.toLowerCase()}function da(r,e){let t=Ai(r),n=it(e.value),i=jt(e.operator);for(let o of t)for(let s of n)if(fa(o,s))return!i;return i}function fa(r,e){return r.toLowerCase().includes(e.toLowerCase())}function ma(r,e){let t=Pi(r),n=it(e.value),i=jt(e.operator);for(let o of t)for(let s of n)if(ha(o,e.operator,s))return!i;return i}function ha(r,e,t){if(!r)return!1;let n=St(t);if(!n)return!1;let i=r.start??"0000",o=r.end??"9999",s=n.start,a=n.end;switch(e){case m.APPROXIMATELY:case m.EQUALS:case m.NOT_EQUALS:return i<a&&o>s;case m.LESS_THAN:return i<s;case m.GREATER_THAN:return o>a;case m.LESS_THAN_OR_EQUALS:return i<=a;case m.GREATER_THAN_OR_EQUALS:return o>=s;case m.STARTS_AFTER:return i>a;case m.ENDS_BEFORE:return o<s;default:return!1}}function jt(r){return r===m.NOT_EQUALS||r===m.NOT}var ya={resourceType:"*"},ga=["DomainConfiguration","JsonWebKey","Login"],xa=["UserSecurityRequest","Project","ProjectMembership","User"],ke={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},va=[ke.READ,ke.VREAD,ke.HISTORY,ke.SEARCH];function kd(r,e){return Mi(r,ke.SEARCH,e)}function Vd(r,e){return ga.includes(e)?!1:Mi(r,ke.UPDATE,e)}function Mi(r,e,t){return!!r.resource?.some(n=>_i(n,t,e))}function Dd(r,e){return!!Ta(e,ke.UPDATE,r)}function Ta(r,e,t){return t?t.resource?.find(n=>ba(r,e,n)):ya}function ba(r,e,t){let n=r.resourceType;return _i(t,n,e)?n==="Binary"?!0:!(t.compartment&&!r.meta?.compartment?.some(i=>i.reference===t.compartment?.reference)||t.criteria&&!Wt(r,nt(t.criteria))):!1}function _i(r,e,t){return r.resourceType!==e&&(r.resourceType!=="*"||xa.includes(e))?!1:r.interaction?r.interaction.includes(t):!r.readonly||va.includes(t)}var _d={FIRST:"first",APPLICATION:"application"};function H(){return typeof window<"u"}function Fd(){return typeof Buffer<"u"}function Nd(){return typeof window<"u"?window:void 0}function Zr(){return typeof Buffer<"u"?Buffer:void 0}var se={assign(r){H()&&globalThis.location.assign(r)},reload(){H()&&globalThis.location.reload()},getSearch(){return H()?globalThis.location.search:""},getPathname(){return H()?globalThis.location.pathname:""},getLocation(){return H()?globalThis.location.toString():""},getOrigin(){return H()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function Sa(r){if(H()){let t=window.atob(r),n=Uint8Array.from(t,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Zr();if(e)return e.from(r,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function $t(r){if(H()){let t=new window.TextEncoder().encode(r),n=String.fromCodePoint.apply(null,t);return window.btoa(n)}let e=Zr();if(e)return e.from(r,"utf8").toString("base64");throw new Error("Unable to encode base64")}function qd(r){return $t(r).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function Li(r){r=r.padEnd(r.length+(4-r.length%4)%4,"=");let e=r.replaceAll("-","+").replaceAll("_","/");return Sa(e)}function en(){let r=new Uint32Array(28);return crypto.getRandomValues(r),pi(r.buffer)}async function Fi(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ae(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,r=>{let e=Math.trunc(Math.random()*16);return(r==="x"?e:e&3|8).toString(16)})}function Ea(r){let e={};r=Re(r);for(let i of r.entry??g){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;s&&(e[s]=ae(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource?.resourceType},resource:i.resource}))},(i,o)=>Ra(i,o,e),2);return Ca(JSON.parse(n))}function Ra(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function Ca(r){let e=Aa(r),{sorted:t,cycles:n}=Pa(e),i={},o=[];for(let a of r.entry??g)a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=t.map(a=>i[a]);for(let a of n)for(let u of a){let l=i[u],d={...l,request:{...l.request,method:"PUT"}};s.push(d)}return s.push(...o),{...r,entry:s}}var We={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function Pa(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=We.NotVisited;function i(o,s){if(t[o]===We.Visited)return!0;if(t[o]===We.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=We.Visiting,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=We.Visited,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===We.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Ni(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(G(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ni(n,e)}}function Aa(r){let e={};for(let t of r.entry??g)t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry??g){let n=t.fullUrl;t.resource&&Ni(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function zd(r){r=Re(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=ae());return Ea(e)}function Jd(r,e,t){return r.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===t)?.resource}async function Zd(r,e,t,n){return{hook:t.hook,hookInstance:ae(),context:n,prefetch:await wa(r,e,t,n)}}async function wa(r,e,t,n){if(!t.prefetch)return{};let i={};for(let[o,s]of Object.entries(t.prefetch)){let a=await Oa(r,e,n,s);i[o]=a??null}return i}function Oa(r,e,t,n){if(n=ka(e,t,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return r.readResource(a,u)}let[o,s]=Xe(n,"?",2);return r.search(o,s)}var Ia=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function ka(r,e,t){return t.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Ia.has(i))return r.id;if(i.startsWith("context.")){let o=i.substring(8),s=Va(e,o);if(Be(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Va(r,e){let t=e.split("."),n=r;for(let i of t)if(n&&E(n)&&i in n)n=n[i];else return;return n}var O={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var tn=class{constructor(){c(this,"listeners");this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];for(let n of t??g)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},te=class{constructor(){c(this,"emitter",new tn)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var rn={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},Da=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],nn=["DiagnosticReport-update"];function Ui(r){return nn.includes(r)}function Bi(r){if(nn.includes(r))throw new f(v(`'context.version' is required for '${r}'.`))}var Ma={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function _a(r){return Da.includes(r)}function qi(r){return!!r.endpoint}function on(r){if(!Gt(r))throw new f(v("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return qi(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Gt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!rn[o])return!1;return!(qi(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function La(r,e,t,n){if(typeof e!="object")throw new f(v(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(v(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(v(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!_a(e.resourceType))throw new f(v(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(v(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Fa(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!G(e.reference))throw new f(v(`context[${t}] is invalid. Expected key '${e.key}' to be a reference.`))}else La(r,e.resource,t,n)}function Na(r,e){let t=new Map,n=Ma[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(v(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Fa(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(v(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)??0)>1)throw new f(v(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sn(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(v("Must provide a topic."));if(!rn[e])throw new f(v(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(rn).join(", ")}`));if(typeof t!="object")throw new f(v("context must be a context object or array of context objects."));if(nn.includes(e)&&!n)throw new f(v(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return Na(e,i),{timestamp:new Date().toISOString(),id:ae(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ht=class extends te{constructor(t){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=t,!t.endpoint)throw new f(v("Subscription request should contain an endpoint."));if(!Gt(t))throw new f(v("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function Ua(r){return JSON.parse(Li(r))}function Wi(r){return r.split(".").length===3}function Qt(r){let[e,t,n]=r.split(".");return Ua(t)}function ji(r){try{return typeof Qt(r).login_id=="string"}catch{return!1}}function $i(r){try{let t=Qt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var zt=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t,O.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Hi;Hi=Symbol.toStringTag;var U=class{constructor(e){c(this,Hi,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");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)}};var ot=class{constructor(e,t=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new an,this.prefix=t}makeKey(e){return this.prefix+e}clear(){this.storage===globalThis.localStorage&&this.prefix?Object.keys(this.storage).filter(e=>e.startsWith(this.prefix)).forEach(e=>{this.storage.removeItem(e)}):this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,t){t?this.storage.setItem(this.makeKey(e),t):this.storage.removeItem(this.makeKey(e))}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Ct(t):void 0)}},an=class{constructor(){c(this,"data");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]}},Gi=class extends ot{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var je={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Qi=!1;function Ba(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");je.Event=globalThis.Event,je.ErrorEvent=class extends Event{constructor(t,n){super("error",n);c(this,"message");c(this,"error");this.message=t.message,this.error=t}},je.CloseEvent=class extends Event{constructor(t=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=t,this.reason=n}}}function qa(r,e){if(!r)throw new Error(e)}function Jt(r){return new r.constructor(r.type,r)}var Ve={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},zi=!1,Kt=class r extends te{constructor(t,n,i={}){Qi||(Ba(),Qi=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",t=>{this._debug("open event");let{minUptime:n=Ve.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),qa(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(t),this.dispatchEvent(Jt(t))});c(this,"_handleMessage",t=>{this._debug("message event"),this.onmessage&&this.onmessage(t),this.dispatchEvent(Jt(t))});c(this,"_handleError",t=>{this._debug("error event",t.message),this._disconnect(void 0,t.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(t),this._debug("exec error listeners"),this.dispatchEvent(Jt(t)),this._connect()});c(this,"_handleClose",t=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(t),this.dispatchEvent(Jt(t))});this._url=t,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return r.CONNECTING}get OPEN(){return r.OPEN}get CLOSING(){return r.CLOSING}get CLOSED(){return r.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?r.CLOSED:r.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(t=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)}reconnect(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())}send(t){if(this._ws?.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{let{maxEnqueuedMessages:n=Ve.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",t),this._messageQueue.push(t))}}_debug(...t){this._options.debug&&this._debugLogger("RWS>",...t)}_getNextDelay(){let{reconnectionDelayGrowFactor:t=Ve.reconnectionDelayGrowFactor,minReconnectionDelay:n=Ve.minReconnectionDelay,maxReconnectionDelay:i=Ve.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(t,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(t=>{setTimeout(t,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:t=Ve.maxRetries,connectionTimeout:n=Ve.connectionTimeout}=this._options;if(this._retryCount>=t){this._debug("max retries reached",this._retryCount,">=",t);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!zi&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),zi=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new je.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new je.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(t=1e3,n){if(this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new je.CloseEvent(t,n,this))}catch{}}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var Wa=[WebSocket.CLOSING,WebSocket.CLOSED],st=class extends te{constructor(...t){super();c(this,"criteria");this.criteria=new Set(t)}getCriteria(){return this.criteria}_addCriteria(t){this.criteria.add(t)}_removeCriteria(t){this.criteria.delete(t)}},cn=class{constructor(e,t){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"tokenExpiry");c(this,"connecting",!1);this.criteria=e,this.emitter=new st(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}clearAttachedSubscription(){this.subscriptionId=void 0,this.token=void 0,this.tokenExpiry=void 0}},Yt=class{constructor(e,t,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"tokenRefreshTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof Xt))throw new f(v("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(v("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new Kt(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new st,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??5e3,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=Ee(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let l=this.criteriaEntriesBySubscriptionId.get(a);if(!l){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}l.connecting=!1,l.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(Ee(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(_n(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t})}),e.addEventListener("close",()=>{let t={type:"close"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.tokenRefreshTimer&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=void 0),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let t={type:"open"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.refreshAllSubscriptions().catch(console.error),this.pingTimer||(this.pingTimer=setInterval(()=>{if(this.waitingForPong){this.waitingForPong=!1,e.reconnect();return}e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0},this.pingIntervalMs)),this.tokenRefreshTimer??=setInterval(()=>{this.checkTokenExpirations()},6e4)}),this.medplum.addEventListener("change",()=>{let t=this.medplum.getProfile();this.currentProfile&&t===void 0?this.ws.close():t&&this.currentProfile?.id!==t.id&&this.ws.reconnect(),this.currentProfile=t})}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${A(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(a=>a.name==="token")?.valueString,o=n?.find(a=>a.name==="websocket-url")?.valueUrl,s=n?.find(a=>a.name==="expiration")?.valueDateTime;if(!i)throw new f(v("Failed to get token"));if(!o)throw new f(v("Failed to get URL from $get-ws-binding-token"));if(!s)throw new f(v("Failed to get expiration from $get-ws-binding-token"));return[t,i,s]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(de(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!de(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}async subscribeToCriteria(e){this.wsClosed&&await this.reconnectIfNeeded(),!this.isReconnecting(e)&&(e.connecting=!0,await this.rebindCriteriaEntry(e))}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();for(let e of this.criteriaEntries.values())for(let t of[...e.bareCriteria?[e.bareCriteria]:[],...e.criteriaWithProps])t.clearAttachedSubscription(),await this.subscribeToCriteria(t)}isReconnecting(e){return!!(this.ws.readyState!==WebSocket.OPEN||e.connecting)}async rebindCriteriaEntry(e){try{let[t,n,i]=await this.getTokenForCriteria(e);e.token=n,e.tokenExpiry=new Date(i).getTime(),e.subscriptionId=t,this.criteriaEntriesBySubscriptionId.set(t,e),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:n}}))}catch(t){console.error(_e(t)),this.emitError(e,t)}}checkTokenExpirations(){let e=Date.now();for(let t of this.criteriaEntries.values())for(let n of[...t.bareCriteria?[t.bareCriteria]:[],...t.criteriaWithProps])n.tokenExpiry&&n.tokenExpiry-e<=3e5&&!this.isReconnecting(n)&&this.rebindCriteriaEntry(n).catch(i=>{this.masterSubEmitter?.dispatchEvent({type:"error",payload:i})})}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new cn(e,t);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}getWebSocket(){return this.ws}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new st(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){Wa.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let t=()=>{this.getWebSocket().removeEventListener("open",t),e()};this.getWebSocket().addEventListener("open",t),this.reconnectWebSocket()})}},ja=new z(1e3);async function Bf({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(!$a(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=nt(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Ha(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=pe(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");if(u&&u.valueCode!==t.interaction)return i?.debug(`Ignore rest hook for different interaction (wanted "${u.valueCode}", received "${t.interaction}")`),!1;if(!Wt(r,s))return!1;let l=$r(e.meta)??[],d=$r(r.meta)??[];return l.length&&!l.some(y=>d.some(x=>x.reference===y.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:A(r)}),!1):!0}function $a(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function Ha(r,e,t){let n=pe(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":b(e),"%previous":b(i??{})};return P(n.valueString,[b(e)],o,ja)?.[0]?.value===!0}var un="5.1.2-a3e2a8a",om="medplum-cli",Ga=O.FHIR_JSON+", */*; q=0.1",Qa="https://api.medplum.com/",za=1e3,Ja=6e4,Ka=0,Ya=3e5,Xa="Binary/",Ji={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},$e={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange"},Za={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},sm={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},ec={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},am={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},Xt=class extends te{constructor(t){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"cdsServicesUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"maxRetryTime");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??tc(),this.storage=t?.storage??new ot(void 0,t?.storagePrefix),this.createPdfImpl=t?.createPdf,this.baseUrl=zr(t?.baseUrl??Qa),this.fhirBaseUrl=F(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=F(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=F(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=F(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=F(this.baseUrl,t?.fhircastHubUrl??"fhircast/STU3"),this.cdsServicesUrl=F(this.baseUrl,t?.cdsServicesUrl??"cds-services"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.credentialsInHeader=t?.authCredentialsMethod==="header",this.defaultHeaders=t?.defaultHeaders??{},this.onUnauthenticated=t?.onUnauthenticated,this.refreshGracePeriod=t?.refreshGracePeriod??Ya,this.logLevel=this.initializeLogLevel(t),this.maxRetryTime=t?.maxRetryTime??2e3,this.cacheTime=t?.cacheTime??(H()?Ja:Ka),this.cacheTime>0?this.requestCache=new z(t?.resourceCacheSize??za):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(t){return t?.logLevel?t.logLevel:t?.verbose!==void 0&&t.verbose?"verbose":"none"}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}getFhircastHubUrl(){return this.fhircastHubUrl}getCdsServicesUrl(){return this.cdsServicesUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),H()&&sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=F(this.fhirBaseUrl,t);for(let i of this.requestCache?.keys()??g)(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&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new U(o);return this.setCacheEntry(t,s,n),s}post(t,n,i,o={}){return t=t.toString(),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(),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,O.JSON_PATCH),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(se.getSearch()).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){se.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),se.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n,i){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let o={grant_type:$e.TokenExchange,subject_token_type:Za.AccessToken,client_id:n,subject_token:t};return i&&(o.membership_id=i),this.fetchTokens(o)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(F(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=xi(n)),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u,i),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new U(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u,i),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new U(this.search(t,n,i).then(Yi));return this.setCacheEntry(s,u,i),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield Yi(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}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 Ji;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new U(Promise.reject(new Error("Missing reference")));if(i==="system")return new U(Promise.resolve(Ji));let[o,s]=i.split("/");return!o||!s?new U(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(t,n,i){return Array.isArray(t)?this.searchOne("",{_type:t.join(","),url:n},i):this.searchOne(t,"url="+n,i)}requestSchema(t,n){if(Qn(t))return Promise.resolve();let i=t+"-requestSchema",o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new U((async()=>{let a=`{
5
5
  StructureDefinitionList(_filter: "name eq ${t}") {
6
6
  resourceType,
7
7
  name,
@@ -41,17 +41,17 @@ var Oo=Object.defineProperty;var Io=(r,e,t)=>e in r?Oo(r,e,{enumerable:!0,config
41
41
  expression,
42
42
  target
43
43
  }
44
- }`.replaceAll(/\s+/g," "),u=await this.graphql(a);Ar(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)Kr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(t,n){if(!n?.expandProfile&&zn(t))return Promise.resolve();let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new F((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let u=await this.post(a.toString(),{});Ar(u)}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${t}!`);return}wr(a)}})());return this.setCacheEntry(i,s,n),s}readHistory(t,n,i,o){let s=this.fhirUrl(t,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$everything"),n)}readPatientSummary(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$summary"),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={}){let o=this.fhirUrl(t.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,t,void 0,i);return this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=Xi(t,n,i,o);if(a.contentType===O.XML){let p=a.data,y;p instanceof Blob?y=await new Promise((T,$)=>{let Q=new FileReader;Q.onload=()=>{if(!Q.result){$(new Error("Failed to load file"));return}T(Q.result)},Q.readAsText(p,"utf-8")}):ArrayBuffer.isView(p)?y=new TextDecoder().decode(p):y=p,y.includes("<ClinicalDocument")&&y.includes("urn:hl7-org:v3")&&(a={...a,contentType:O.CDA_XML})}let u=s??(typeof n=="object"?n:{}),l=await this.createBinary(a,u);return{contentType:a.contentType,url:l.url,title:a.filename}}createBinary(t,n,i,o,s){let a=Xi(t,n,i,o),u=s??(typeof n=="object"?n:{}),{data:l,contentType:p,filename:y,securityContext:T,onProgress:$}=a,Q=this.fhirUrl("Binary");return y&&Q.searchParams.set("_filename",y),T?.reference&&this.setRequestHeader(u,"X-Security-Context",T.reference),$?this.uploadwithProgress(Q,l,p,$,u):this.post(Q,l,p,u)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,p=()=>l.abort();s?.signal?.addEventListener("abort",p);let y=T=>{s?.signal?.removeEventListener("abort",p),T instanceof Error?u(T):a(T)};if(l.responseType="json",l.onabort=()=>y(new DOMException("Request aborted","AbortError")),l.onerror=()=>y(new Error("Request error")),o&&(l.upload.onprogress=T=>o(T),l.upload.onload=T=>o(T)),l.onload=()=>{l.status>=200&&l.status<300?y(l.response):y(new f(ht(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&l.setRequestHeader("X-Medplum","extended"),s?.headers){let T=s.headers;for(let[$,Q]of Object.entries(T))l.setRequestHeader($,Q)}l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=rc(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:l,fonts:p,...y}=s,T=await this.createPdfImpl(u,l,p),$={...y,data:T,contentType:"application/pdf"};return this.createBinary($,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=be(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=be(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[be(t)],encounter:s,subject:a,sender:o?be(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");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i,n),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}async patchResource(t,n,i,o){let s=await this.patch(this.fhirUrl(t,n),i,o);return this.cacheResource(s,o),this.invalidateUrl(this.fhirUrl(t,n,"_history")),this.invalidateSearches(t),s}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"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl,t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,O.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},O.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){let{waitTimeout:u,returnAck:l,...p}=a??{};return this.post(this.fhirUrl("Agent",Se(t),"$push"),{destination:typeof n=="string"?n:A(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0,...l!==void 0?{returnAck:l}:void 0},O.FHIR_JSON,p)}getCdsServices(t){return this.get("/cds-services",t)}callCdsService(t,n,i){return this.post(`/cds-services/${t}`,n,O.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||A(this.sessionDetails.profile)!==t.profile?.reference)&&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}isAuthenticated(t){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(t??this.refreshGracePeriod)}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.accessTokenExpires=$i(t),this.medplumServer=ji(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(){if(this.medplumServer)return this.profilePromise=new Promise((t,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}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?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Ka)&&(t=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async createMedia(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:t.contentType},...i});o.securityContext||(o.securityContext=be(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(t,n,i,o,s){return this.createMedia({data:t,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:t.contentType}}],...i});o.securityContext||(o.securityContext=be(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}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;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new zt(this)),this.keyValueClient}getBundle(t,n){return new F((async()=>{let i=await this.get(t,n);for(let o of i.entry??g)this.cacheResource(o.resource,n);return i})())}isCacheEnabled(t){return!!this.requestCache&&!this.getRequestHeader(t,"x-medplum-on-behalf-of")}getCacheEntry(t,n){if(!this.isCacheEnabled(n)||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,i){this.isCacheEnabled(i)&&(this.requestCache.set(t,{requestTime:Date.now(),value:n}),i?.signal&&i.signal.addEventListener("abort",()=>{this.requestCache.delete(t)}))}cacheResource(t,n){t?.id&&!t.meta?.tag?.some(i=>i.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new F(Promise.resolve(t)),n)}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let u=s.headers.get("content-type")?.includes("json");if(s.status===404&&!u)throw new f(Vn);let l=await this.parseBody(s,u);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await Ki(s,l);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let y=await Ki(s,l)??o.statusUrl;if(y)return this.pollStatus(y,i,o)}if(s.status>=400)throw new f(ht(l));return l}async parseBody(t,n){let i;if(t.headers.get("content-length")!=="0"){if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}}async fetchWithRetry(t,n){t.startsWith("http")||(t=G(this.baseUrl,t));let i=n?.maxRetries??2;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(t,n);let s=await this.fetch(t,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!nc(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??2e3;if(a>u)return s;await Qr(a,{signal:n.signal})}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of Pt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),this.logLevel==="verbose"&&t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(t){if(!t?.headers||typeof t.headers.get!="function")return;let n=t.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let t=this.currentRateLimits;return t.split(",").map(n=>{let i=n.split(";").map(p=>p.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+t);let o=i[0].substring(1,i[0].length-1),s=i.find(p=>p.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(p=>p.startsWith("t="))?.substring(2),l=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(l))throw new Error("Could not parse RateLimit header: "+t);return{name:o,remainingUnits:a,secondsUntilReset:l,resetsAfter:Math.ceil((Date.now()+1e3*l)/1e3)}})}getRetryDelay(t){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,t);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await Qr(s,{signal:n.signal}),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;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,G(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(ht(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,n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!br(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){Object.entries(this.defaultHeaders).forEach(([n,i])=>{this.setRequestHeader(t,n,i)}),this.setRequestHeader(t,"Accept",$a,!0),this.options.extendedMode!==!1&&this.setRequestHeader(t,"X-Medplum","extended"),t.body&&this.setRequestHeader(t,"Content-Type",O.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}getRequestHeader(t,n){let i=t?.headers;if(i)if(Array.isArray(i)){let o=i.find(([s])=>s.toLowerCase()===n.toLowerCase());return o?o[1]:void 0}else{if(i instanceof Headers)return i.get(n)??void 0;if(E(i))return i[n]??void 0}else return}setRequestHeader(t,n,i,o=!1){let s=t.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):E(s)&&(!o||!s[n])&&(s[n]=i):t.headers={[n]:i}}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}async handleUnauthenticated(t,n,i){if(this.refresh())return this.request(t,n,i);throw this.clear(),this.onUnauthenticated?.(),new f(Me)}async startPkce(){let t=en();sessionStorage.setItem("pkceState",t);let n=en().slice(0,128);sessionStorage.setItem("codeVerifier",n);try{let i=await Fi(n);return{codeChallengeMethod:"S256",codeChallenge:di(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}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??oe.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),oe.assign(i.toString())}processCode(t,n){let i={grant_type:$e.AuthorizationCode,code:t,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??oe.getOrigin()};if(typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&(i.code_verifier=o)}return this.fetchTokens(i)}refreshIfExpired(t){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(t)&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken)return this.refreshPromise=this.fetchTokens({grant_type:$e.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}),this.refreshPromise;if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){return this.clientId=t,this.clientSecret=n,this.fetchTokens({grant_type:$e.ClientCredentials,client_id:t,client_secret:n})}async startJwtBearerLogin(t,n,i){return this.clientId=t,this.fetchTokens({grant_type:$e.JwtBearer,client_id:t,assertion:n,scope:i})}async startJwtAssertionLogin(t){return this.fetchTokens({grant_type:$e.ClientCredentials,client_assertion_type:Xa.JwtBearer,client_assertion:t})}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=$t(t+":"+n)}setLogLevel(t){this.logLevel=t,this.options.verbose=t==="verbose"}getLogLevel(){return this.logLevel}setVerbose(t){this.logLevel=t?"verbose":"none",this.options.verbose=t}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(x("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(x("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post(this.fhircastHubUrl,on(i),O.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Gt(t))throw new f(x("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(x("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post(this.fhircastHubUrl,on(t),O.FORM_URL_ENCODED)}fhircastConnect(t){return new Ht(t)}async fhircastPublish(t,n,i,o){return Ui(n)?this.post(this.fhircastHubUrl,sn(t,n,i,o),O.JSON):(Bi(n),this.post(this.fhircastHubUrl,sn(t,n,i),O.JSON))}async fhircastGetContext(t){return this.get(`${this.fhircastHubUrl}/${t}`,{cache:"no-cache"})}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async handleTokenError(t){try{let n=await t.json();throw Ge(n)?new f(n):n.error_description?new f(R(n.error_description)):new Error(JSON.stringify(n))}catch(n){throw n instanceof f?(n.message=`Failed to fetch tokens: ${n.message}`,n):new f(R("Failed to fetch tokens"),{cause:n})}}async fetchTokens(t){let n=new URLSearchParams(t),i={...this.defaultHeaders,"Content-Type":O.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&t.client_id&&t.client_secret&&(i.Authorization=`Basic ${$t(t.client_id+":"+t.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}s.ok||(this.clearActiveLogin(),this.onUnauthenticated?.(),await this.handleTokenError(s));let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Wi(n)){let i=Qt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new f(Mn);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new f(vr)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new f(vr)}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}checkSessionDetailsMatchLogin(t){return this.sessionDetails&&t?t.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",t=>{if(t.key===null)oe.reload();else if(t.key===this.storage.makeKey("activeLogin")){let n=t.oldValue?JSON.parse(t.oldValue):void 0,i=t.newValue?JSON.parse(t.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?oe.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Yt(this,gi(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t,n){return this.getSubscriptionManager().addCriteria(t,n)}unsubscribeFromCriteria(t,n){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t,n),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function Za(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function Ki(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(Ge(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Yi(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function ec(r){return E(r)&&"data"in r&&"contentType"in r}function Xi(r,e,t,n){return ec(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function tc(r){return E(r)&&"docDefinition"in r}function rc(r,e,t,n){return tc(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}function nc(r){return r.status===429||r.status>=500}var sm={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function um(r,e,t){let n=new ln;Array.isArray(r)||(r=r.entry?.map(i=>i.resource)??[]);for(let i of r)n.addObservation(i);return n.summarize(e,t)}var ln=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!ic(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...eo(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,t){if(!this.code)throw new Error("Code is required for data points");let n=t(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:oc(this.dataPoints,this.sampling)}}]}}};function ic(r,e){return!!r.coding?.some(t=>e.coding?.some(n=>t.system===n.system&&t.code===n.code))}function eo(r){return r.data?.split(" ").map(e=>Number.parseFloat(e)*(r.factor??1)+(r.origin.value??0))??[]}function oc(r,e){if(r.length)return r.map(t=>(t-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function lm(r){let e=[],t=r.effectiveInstant??r.effectiveDateTime??r.effectivePeriod?.start,n=t?Date.parse(t).valueOf():0;r.valueSampledData&&e.push(...Zi(r.valueSampledData,n,r));for(let i of r.component??g)i.valueSampledData&&e.push(...Zi(i.valueSampledData,n,{...r,...i}));return e}function Zi(r,e,t){let n=[],i=eo(r),o=A(t);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/r.dimensions)*r.period;n.push({...t,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...r.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...t.derivedFrom??[],{reference:o}]:t.derivedFrom})}return n}function pn({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===r?.path)return;i??=r?.debugMode??!1,o??=r?.accessPolicyResource;let s=sc(e,t,r,!!i),a=Xe(e,".",2)[1];s=ac(s,o,a),s=cc(s,o,a);let u=Object.create(null);for(let[p,y]of Object.entries(s))u[e+"."+p]=y;let l;if(r&&!r.isDefaultContext)l=r.getExtendedProps;else{let p=Object.create(null);l=y=>{let T=Xe(y,".",2)[1];if(T){if(!p[T]){let $=Zt(T,o?.hiddenFields);p[T]={hidden:$,readonly:$||Zt(T,o?.readonlyFields)}}return p[T]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function sc(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let u=de(r,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function ac(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!Zt(n+i,e.hiddenFields)))}function cc(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))Zt(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Zt(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function to(r){return r.type!==void 0&&r.type.length>0}function uc(r,e,t,n){let i=Fe(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>Fr(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function ro(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.type??i.type?.[0].code};if(t.every(s=>uc(o,s,i,i.typeSchema?.url??n)))return i.name}}var at=class{constructor(e,t,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=pn({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!re(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=lc(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);re(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!to(o))continue;let s=o.type.find(a=>re(a.profile))?.profile?.[0];if(re(s)){let a=Jn(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;re(s)&&(o=pn({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function lc(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let l of e)if(t(l.key,o)){n(l,a),u=!0;break}u||e.push(a)}return e}var er="__sliceName";function Am(r,e){let t=new tr(r,r.resourceType,"resource");return new at(e,t).crawlResource(),t.getDefaultValue()}function wm(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){rr(r,n,i,e);continue}let o=de(t,n);o!==void 0&&rr(r,o,i,e)}return r}function Om(r,e,t,n){let i=new tr([{[er]:e.name}],e.path,"element");return new at(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var tr=class{constructor(e,t,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=Ee(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=de(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let l=de(n.path,o),p=Array.isArray(u)?u:[u];for(let y of p){pc(y,s,t,n.elements,l),rr(y,s,t,n.elements);let T=fn(y,s,n.elements,l);T!==void 0&&a.push(T)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=de(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=de(n.path,this.value.path);for(let a of this.value.values){let u=fn(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let p=u[l];re(p)||u.splice(l,1)}C(u)&&dn(a,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,t,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[er]??ro(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Gr(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];er in i&&delete i[er]}}getDefaultValue(){return this.rootValue}};function pc(r,e,t,n,i){let o=fn(r,e,n,i);t.min>0&&o===void 0&&Gr(t.type[0].code)&&(t.isArray?dn(r,[Object.create(null)],e,t):dn(r,Object.create(null),e,t))}function dn(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",M(o))}e===void 0?delete r[i]:r[i]=e}function fn(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let l=(n?n+".":"")+i.slice(0,a+1).join("."),y=t[l].type[0].code;u=u.replace("[x]",M(y))}if(a===i.length-1){Array.isArray(o)?s=o.map(l=>l[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(l=>l[u]);else if(E(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function rr(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>rr(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",M(p))}if(a===o.length-1){let l=Array.isArray(s)?s:[s];for(let p of l)t.fixed?p[u]??=t.fixed.value:t.pattern&&(p[u]=no(p[u],t.pattern.value))}else{if(!(u in s)){let l=o.slice(0,a+1).join(".");s[u]=n[l].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function no(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:Ee(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=Ee(r)??Object.create(null);for(let n of Object.keys(e))t[n]=no(t[n],e[n]);return t}return r}function io(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=dc(e),n=fc(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function dc(r){let e=Object.create(null);if(r.code&&!r.coding&&!r.codeableConcept){if(!r.system)throw new f(R("System parameter must be provided with code"));e[r.system]=[r.code]}else if(r.coding&&!r.code&&!r.codeableConcept)r.coding.code&&(e[r.coding.system??""]=[r.coding.code]);else if(r.codeableConcept&&!r.code&&!r.coding)for(let{system:t,code:n}of r.codeableConcept.coding??g)n&&(e[t??""]=z(e[t??""],n));else throw r.code||r.coding||r.codeableConcept?new f(R("Ambiguous input: multiple source codings provided")):new f(R("Source Coding (system + code) must be specified"));return e}function fc(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=mc(i,o)),s&&t.push(...s)}return t}function mc(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var hc=[...tt,"->","<<",">>","=="];function oo(r){return new ye(r,et,hc).tokenize()}var yc={"-":"disjoint","==":"equal"},mn=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;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}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}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(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],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("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(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==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(v.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(v.Arrow);e.check=i.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={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],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==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(v.As);t instanceof ie?(e.transform=t.name,e.parameter=t.args?.map(so)):t instanceof W||t instanceof L?(e.transform="copy",e.parameter=[so(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}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(v.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=yc[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,p=e?.group?.find(y=>y.source===i&&y.target===u);p||(p={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:l,equivalence:s}]})}};function so(r){if(r instanceof L)return{valueId:r.name};if(r instanceof W)return gc(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function gc(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var xc=rt().registerInfix("->",{precedence:v.Arrow}).registerInfix(";",{precedence:v.Semicolon});function qm(r){let e=xc.construct(oo(r));return e.removeComments(),new mn(e).parse()}var hn=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,t){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,t)&&n.push(i);return n}matchesUrl(e,t){if(t.includes("*")){let n=t.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===t}};function Km(r,e,t=new hn){return vc({root:r,transformMaps:t},r,e)}function vc(r,e,t){return Tc(r,e),co(r,e),gn(r,e.group[0],t)}function Tc(r,e){let t=ir(r);if(t&&e.import)for(let n of e.import){let i=t.get("StructureMap",n);for(let o of i)co(r,o)}}function co(r,e){let t=ir(r);if(t&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&t.resources.push(n);for(let n of e.group??g)nr(r,n.name,{type:"StructureMapGroup",value:n})}function gn(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)ct(o,l.name,t[a++]);for(let l of i){let p=t[a++]??{type:l.type??"BackboneElement",value:{}};ct(o,l.name,p),s.push(p)}let u={root:r.root,parent:r,variables:o};for(let l of e.rule??g)uo(u,l);return s}function uo(r,e){e.source&&lo(r,e,0)}function lo(r,e,t){let n=e.source[t];for(let i of Rc(r,n))nr(r,"_",i),n.variable&&nr(r,n.variable,i),t<e.source.length-1?lo(r,e,t+1):bc(r,e)}function bc(r,e){if(!Sc(r,e)){for(let t of e.target??g)po(r,t);for(let t of e.rule??g)uo(r,t);for(let t of e.dependent??g)Mc(r,t)}}function Sc(r,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let t=ge(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return!1;let n=Ec(r,t);if(!n)return po(r,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=ge(r,i.context),s=o.value[i.element],a=mo(o,i.element)||Array.isArray(s),u={root:r.root,parent:r,variables:{}},l=gn(u,n,[t]);return fo(r,i,o,l,a,s),!0}function Ec(r,e){let t=r;for(;t;){if(t.variables){for(let n of Object.values(t.variables))for(let i of yn(n))if(i.type==="StructureMapGroup"){let o=i.value;if((o.typeMode==="types"||o.typeMode==="type-and-types")&&o.input.length===2&&o.input[0].mode==="source"&&o.input[0].type===e.type&&o.input[1].mode==="target")return o}}t=t.parent}}function Rc(r,e){let t=ge(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=P(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ao(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ao(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Cc(e,i)),i}function ao(r,e,t){return U(P(t,[r],e))}function Cc(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function po(r,e){let t=ge(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=mo(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Pc(r,e);break;case"cast":i=Ac(r,e);break;case"cc":i=wc(r,e);break;case"copy":i=Oc(r,e);break;case"create":i=Ic(r,e);break;case"evaluate":i=kc(r,e);break;case"translate":i=Dc(r,e);break;case"truncate":i=Vc(r,e);break;case"uuid":i=[{type:"string",value:se()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=ho(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:b({})]:i=[a?{type:a,value:n}:b(n)]}fo(r,e,t,i,o,n)}function fo(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],ct(t.value,e.element,o));for(let s of n)o.push(s.value)}else ct(t.value,e.element,n[0].value);e.variable&&nr(r,e.variable,_c(n))}}function mo(r,e){return ho(r,e)?.isArray}function ho(r,e){return Qe(r.type)?.elements?.[e]}function Pc(r,e){let t=N(r,e.parameter?.[0])?.[0]?.value,n=N(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Ac(r,e){let t=N(r,e.parameter?.[0])?.[0];return N(r,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:t?.value?.toString()}]:[t]}function wc(r,e){let t=e.parameter;if(t.length===2){let n=N(r,t[0])?.[0]?.value,i=N(r,t[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:N(r,t[0])?.[0]?.value}}]}function Oc(r,e){return e.parameter.flatMap(t=>N(r,t))}function Ic(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=N(r,e.parameter?.[0])?.[0]?.value),[b(t)]}function kc(r,e){let n=N(r,e.parameter?.[0])[0].value;return P(n,[],yo(r))}function Dc(r,e){let t=e.parameter.flatMap(u=>N(r,u)),n=t[0].value,i=t[1].value,s=ir(r)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=io(s,{system:s.group?.[0]?.source,code:n});return[b(a.match?.[0]?.concept?.code)]}function Vc(r,e){let t=N(r,e.parameter?.[0])?.[0],n=N(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Mc(r,e){let t=ge(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=ge(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};gn(o,t.value,i)}function ir(r){if(r.transformMaps)return r.transformMaps;if(r.parent)return ir(r.parent)}function N(r,e){let n=V({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=yn(n),n.length===1&&n[0].type==="id"){let i=ge(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return yn(i)}return n}function ge(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ge(r.parent,e)}function yo(r,e={}){if(r.parent&&yo(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function nr(r,e,t){r.variables||(r.variables={}),ct(r.variables,e,t)}function ct(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function yn(r){return Array.isArray(r)?r:[r]}function _c(r){return r.length===1?r[0]:r}var Lc=" ".repeat(2),go=class{constructor(e=Lc,t=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,t&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
44
+ }`.replaceAll(/\s+/g," "),u=await this.graphql(a);Ar(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)Kr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(t,n){if(!n?.expandProfile&&zn(t))return Promise.resolve();let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new U((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let u=await this.post(a.toString(),{});Ar(u)}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${t}!`);return}wr(a)}})());return this.setCacheEntry(i,s,n),s}readHistory(t,n,i,o){let s=this.fhirUrl(t,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$everything"),n)}readPatientSummary(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$summary"),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={}){let o=this.fhirUrl(t.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,t,void 0,i);return this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=Xi(t,n,i,o);if(a.contentType===O.XML){let d=a.data,y;d instanceof Blob?y=await new Promise((x,k)=>{let Q=new FileReader;Q.onload=()=>{if(!Q.result){k(new Error("Failed to load file"));return}x(Q.result)},Q.readAsText(d,"utf-8")}):ArrayBuffer.isView(d)?y=new TextDecoder().decode(d):y=d,y.includes("<ClinicalDocument")&&y.includes("urn:hl7-org:v3")&&(a={...a,contentType:O.CDA_XML})}let u=s??(typeof n=="object"?n:{}),l=await this.createBinary(a,u);return{contentType:a.contentType,url:l.url,title:a.filename}}createBinary(t,n,i,o,s){let a=Xi(t,n,i,o),u=s??(typeof n=="object"?n:{}),{data:l,contentType:d,filename:y,securityContext:x,onProgress:k}=a,Q=this.fhirUrl("Binary");return y&&Q.searchParams.set("_filename",y),x?.reference&&this.setRequestHeader(u,"X-Security-Context",x.reference),k?this.uploadwithProgress(Q,l,d,k,u):this.post(Q,l,d,u)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,d=()=>l.abort();s?.signal?.addEventListener("abort",d);let y=x=>{s?.signal?.removeEventListener("abort",d),x instanceof Error?u(x):a(x)};if(l.responseType="json",l.onabort=()=>y(new DOMException("Request aborted","AbortError")),l.onerror=()=>y(new Error("Request error")),o&&(l.upload.onprogress=x=>o(x),l.upload.onload=x=>o(x)),l.onload=()=>{l.status>=200&&l.status<300?y(l.response):y(new f(ht(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&l.setRequestHeader("X-Medplum","extended"),s?.headers){let x=s.headers;for(let[k,Q]of Object.entries(x))l.setRequestHeader(k,Q)}l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=ic(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:l,fonts:d,...y}=s,x=await this.createPdfImpl(u,l,d),k={...y,data:x,contentType:"application/pdf"};return this.createBinary(k,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=Se(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=Se(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[Se(t)],encounter:s,subject:a,sender:o?Se(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");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i,n),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}async patchResource(t,n,i,o){let s=await this.patch(this.fhirUrl(t,n),i,o);return this.cacheResource(s,o),this.invalidateUrl(this.fhirUrl(t,n,"_history")),this.invalidateSearches(t),s}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"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl,t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,O.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},O.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){let{waitTimeout:u,returnAck:l,...d}=a??{};return this.post(this.fhirUrl("Agent",Ee(t),"$push"),{destination:typeof n=="string"?n:A(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0,...l!==void 0?{returnAck:l}:void 0},O.FHIR_JSON,d)}getCdsServices(t){return this.get(this.cdsServicesUrl,t)}callCdsService(t,n,i){return this.post(F(this.cdsServicesUrl,t),n,O.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||A(this.sessionDetails.profile)!==t.profile?.reference)&&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}isAuthenticated(t){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(t??this.refreshGracePeriod)}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.accessTokenExpires=$i(t),this.medplumServer=ji(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(){if(this.medplumServer)return this.profilePromise=new Promise((t,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}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?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Xa)&&(t=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async createMedia(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:t.contentType},...i});o.securityContext||(o.securityContext=Se(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(t,n,i,o,s){return this.createMedia({data:t,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:t.contentType}}],...i});o.securityContext||(o.securityContext=Se(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}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;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new zt(this)),this.keyValueClient}getBundle(t,n){return new U((async()=>{let i=await this.get(t,n);for(let o of i.entry??g)this.cacheResource(o.resource,n);return i})())}isCacheEnabled(t){return!!this.requestCache&&!this.getRequestHeader(t,"x-medplum-on-behalf-of")}getCacheEntry(t,n){if(!this.isCacheEnabled(n)||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,i){this.isCacheEnabled(i)&&(this.requestCache.set(t,{requestTime:Date.now(),value:n}),i?.signal&&i.signal.addEventListener("abort",()=>{this.requestCache.delete(t)}))}cacheResource(t,n){t?.id&&!t.meta?.tag?.some(i=>i.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new U(Promise.resolve(t)),n)}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let u=s.headers.get("content-type")?.includes("json");if(s.status===404&&!u)throw new f(Dn);let l=await this.parseBody(s,u);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let d=await Ki(s,l);if(d)return this.request("GET",d,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let y=await Ki(s,l)??o.statusUrl;if(y)return this.pollStatus(y,i,o)}if(s.status>=400)throw new f(ht(l));return l}async parseBody(t,n){let i;if(t.headers.get("content-length")!=="0"){if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}}async fetchWithRetry(t,n){t.startsWith("http")||(t=F(this.baseUrl,t));let i=n?.maxRetries??2;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(t,n);let s=await this.fetch(t,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!oc(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??this.maxRetryTime;if(a>u)return s;await Qr(a,{signal:n.signal})}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of Pt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),this.logLevel==="verbose"&&t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(t){if(!t?.headers||typeof t.headers.get!="function")return;let n=t.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let t=this.currentRateLimits;return t.split(",").map(n=>{let i=n.split(";").map(d=>d.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+t);let o=i[0].substring(1,i[0].length-1),s=i.find(d=>d.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(d=>d.startsWith("t="))?.substring(2),l=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(l))throw new Error("Could not parse RateLimit header: "+t);return{name:o,remainingUnits:a,secondsUntilReset:l,resetsAfter:Math.ceil((Date.now()+1e3*l)/1e3)}})}getRetryDelay(t){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,t);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await Qr(s,{signal:n.signal}),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;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,F(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(ht(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,n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!br(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){Object.entries(this.defaultHeaders).forEach(([n,i])=>{this.setRequestHeader(t,n,i)}),this.setRequestHeader(t,"Accept",Ga,!0),this.options.extendedMode!==!1&&this.setRequestHeader(t,"X-Medplum","extended"),t.body&&this.setRequestHeader(t,"Content-Type",O.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}getRequestHeader(t,n){let i=t?.headers;if(i)if(Array.isArray(i)){let o=i.find(([s])=>s.toLowerCase()===n.toLowerCase());return o?o[1]:void 0}else{if(i instanceof Headers)return i.get(n)??void 0;if(E(i))return i[n]??void 0}else return}setRequestHeader(t,n,i,o=!1){let s=t.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):E(s)&&(!o||!s[n])&&(s[n]=i):t.headers={[n]:i}}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}async handleUnauthenticated(t,n,i){if(this.refresh())return this.request(t,n,i);throw this.clear(),this.onUnauthenticated?.(),new f(Me)}async startPkce(){let t=en();sessionStorage.setItem("pkceState",t);let n=en().slice(0,128);sessionStorage.setItem("codeVerifier",n);try{let i=await Fi(n);return{codeChallengeMethod:"S256",codeChallenge:di(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}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??se.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),se.assign(i.toString())}processCode(t,n){let i={grant_type:$e.AuthorizationCode,code:t,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??se.getOrigin()};if(typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&(i.code_verifier=o)}return this.fetchTokens(i)}refreshIfExpired(t){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(t)&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken)return this.refreshPromise=this.fetchTokens({grant_type:$e.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}),this.refreshPromise;if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){return this.clientId=t,this.clientSecret=n,this.fetchTokens({grant_type:$e.ClientCredentials,client_id:t,client_secret:n})}async startJwtBearerLogin(t,n,i){return this.clientId=t,this.fetchTokens({grant_type:$e.JwtBearer,client_id:t,assertion:n,scope:i})}async startJwtAssertionLogin(t){return this.fetchTokens({grant_type:$e.ClientCredentials,client_assertion_type:ec.JwtBearer,client_assertion:t})}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=$t(t+":"+n)}setLogLevel(t){this.logLevel=t,this.options.verbose=t==="verbose"}getLogLevel(){return this.logLevel}setVerbose(t){this.logLevel=t?"verbose":"none",this.options.verbose=t}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(v("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(v("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post(this.fhircastHubUrl,on(i),O.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Gt(t))throw new f(v("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(v("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post(this.fhircastHubUrl,on(t),O.FORM_URL_ENCODED)}fhircastConnect(t){return new Ht(t)}async fhircastPublish(t,n,i,o){return Ui(n)?this.post(this.fhircastHubUrl,sn(t,n,i,o),O.JSON):(Bi(n),this.post(this.fhircastHubUrl,sn(t,n,i),O.JSON))}async fhircastGetContext(t){return this.get(`${this.fhircastHubUrl}/${t}`,{cache:"no-cache"})}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async handleTokenError(t){try{let n=await t.json();throw Ge(n)?new f(n):n.error_description?new f(R(n.error_description)):new Error(JSON.stringify(n))}catch(n){throw n instanceof f?(n.message=`Failed to fetch tokens: ${n.message}`,n):new f(R("Failed to fetch tokens"),{cause:n})}}async fetchTokens(t){let n=new URLSearchParams(t),i={...this.defaultHeaders,"Content-Type":O.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&t.client_id&&t.client_secret&&(i.Authorization=`Basic ${$t(t.client_id+":"+t.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}s.ok||(this.clearActiveLogin(),this.onUnauthenticated?.(),await this.handleTokenError(s));let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Wi(n)){let i=Qt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new f(Mn);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new f(vr)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new f(vr)}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}checkSessionDetailsMatchLogin(t){return this.sessionDetails&&t?t.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",t=>{if(t.key===null)se.reload();else if(t.key===this.storage.makeKey("activeLogin")){let n=t.oldValue?JSON.parse(t.oldValue):void 0,i=t.newValue?JSON.parse(t.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?se.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Yt(this,gi(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t,n){return this.getSubscriptionManager().addCriteria(t,n)}unsubscribeFromCriteria(t,n){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t,n),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function tc(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function Ki(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(Ge(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Yi(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function rc(r){return E(r)&&"data"in r&&"contentType"in r}function Xi(r,e,t,n){return rc(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function nc(r){return E(r)&&"docDefinition"in r}function ic(r,e,t,n){return nc(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}function oc(r){return r.status===429||r.status>=500}var lm={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function fm(r,e,t){let n=new ln;Array.isArray(r)||(r=r.entry?.map(i=>i.resource)??[]);for(let i of r)n.addObservation(i);return n.summarize(e,t)}var ln=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!sc(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...eo(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,t){if(!this.code)throw new Error("Code is required for data points");let n=t(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:ac(this.dataPoints,this.sampling)}}]}}};function sc(r,e){return!!r.coding?.some(t=>e.coding?.some(n=>t.system===n.system&&t.code===n.code))}function eo(r){return r.data?.split(" ").map(e=>Number.parseFloat(e)*(r.factor??1)+(r.origin.value??0))??[]}function ac(r,e){if(r.length)return r.map(t=>(t-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function mm(r){let e=[],t=r.effectiveInstant??r.effectiveDateTime??r.effectivePeriod?.start,n=t?Date.parse(t).valueOf():0;r.valueSampledData&&e.push(...Zi(r.valueSampledData,n,r));for(let i of r.component??g)i.valueSampledData&&e.push(...Zi(i.valueSampledData,n,{...r,...i}));return e}function Zi(r,e,t){let n=[],i=eo(r),o=A(t);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/r.dimensions)*r.period;n.push({...t,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...r.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...t.derivedFrom??[],{reference:o}]:t.derivedFrom})}return n}function pn({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===r?.path)return;i??=r?.debugMode??!1,o??=r?.accessPolicyResource;let s=cc(e,t,r,!!i),a=Xe(e,".",2)[1];s=uc(s,o,a),s=lc(s,o,a);let u=Object.create(null);for(let[d,y]of Object.entries(s))u[e+"."+d]=y;let l;if(r&&!r.isDefaultContext)l=r.getExtendedProps;else{let d=Object.create(null);l=y=>{let x=Xe(y,".",2)[1];if(x){if(!d[x]){let k=Zt(x,o?.hiddenFields);d[x]={hidden:k,readonly:k||Zt(x,o?.readonlyFields)}}return d[x]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function cc(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let u=fe(r,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function uc(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!Zt(n+i,e.hiddenFields)))}function lc(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))Zt(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Zt(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function to(r){return r.type!==void 0&&r.type.length>0}function pc(r,e,t,n){let i=Fe(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>Fr(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function ro(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.type??i.type?.[0].code};if(t.every(s=>pc(o,s,i,i.typeSchema?.url??n)))return i.name}}var at=class{constructor(e,t,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=pn({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!ne(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=dc(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);ne(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!to(o))continue;let s=o.type.find(a=>ne(a.profile))?.profile?.[0];if(ne(s)){let a=Jn(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;ne(s)&&(o=pn({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function dc(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let l of e)if(t(l.key,o)){n(l,a),u=!0;break}u||e.push(a)}return e}var er="__sliceName";function km(r,e){let t=new tr(r,r.resourceType,"resource");return new at(e,t).crawlResource(),t.getDefaultValue()}function Vm(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){rr(r,n,i,e);continue}let o=fe(t,n);o!==void 0&&rr(r,o,i,e)}return r}function Dm(r,e,t,n){let i=new tr([{[er]:e.name}],e.path,"element");return new at(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var tr=class{constructor(e,t,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=Re(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=fe(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let l=fe(n.path,o),d=Array.isArray(u)?u:[u];for(let y of d){fc(y,s,t,n.elements,l),rr(y,s,t,n.elements);let x=fn(y,s,n.elements,l);x!==void 0&&a.push(x)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=fe(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=fe(n.path,this.value.path);for(let a of this.value.values){let u=fn(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let d=u[l];ne(d)||u.splice(l,1)}C(u)&&dn(a,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,t,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[er]??ro(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Gr(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];er in i&&delete i[er]}}getDefaultValue(){return this.rootValue}};function fc(r,e,t,n,i){let o=fn(r,e,n,i);t.min>0&&o===void 0&&Gr(t.type[0].code)&&(t.isArray?dn(r,[Object.create(null)],e,t):dn(r,Object.create(null),e,t))}function dn(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",_(o))}e===void 0?delete r[i]:r[i]=e}function fn(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let l=(n?n+".":"")+i.slice(0,a+1).join("."),y=t[l].type[0].code;u=u.replace("[x]",_(y))}if(a===i.length-1){Array.isArray(o)?s=o.map(l=>l[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(l=>l[u]);else if(E(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function rr(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>rr(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let d=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",_(d))}if(a===o.length-1){let l=Array.isArray(s)?s:[s];for(let d of l)t.fixed?d[u]??=t.fixed.value:t.pattern&&(d[u]=no(d[u],t.pattern.value))}else{if(!(u in s)){let l=o.slice(0,a+1).join(".");s[u]=n[l].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function no(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:Re(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=Re(r)??Object.create(null);for(let n of Object.keys(e))t[n]=no(t[n],e[n]);return t}return r}function io(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=mc(e),n=hc(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function mc(r){let e=Object.create(null);if(r.code&&!r.coding&&!r.codeableConcept){if(!r.system)throw new f(R("System parameter must be provided with code"));e[r.system]=[r.code]}else if(r.coding&&!r.code&&!r.codeableConcept)r.coding.code&&(e[r.coding.system??""]=[r.coding.code]);else if(r.codeableConcept&&!r.code&&!r.coding)for(let{system:t,code:n}of r.codeableConcept.coding??g)n&&(e[t??""]=J(e[t??""],n));else throw r.code||r.coding||r.codeableConcept?new f(R("Ambiguous input: multiple source codings provided")):new f(R("Source Coding (system + code) must be specified"));return e}function hc(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=yc(i,o)),s&&t.push(...s)}return t}function yc(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var gc=[...tt,"->","<<",">>","=="];function oo(r){return new ge(r,et,gc).tokenize()}var xc={"-":"disjoint","==":"equal"},mn=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;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}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}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(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],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("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(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==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(T.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(T.Arrow);e.check=i.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={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],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==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(T.As);t instanceof oe?(e.transform=t.name,e.parameter=t.args?.map(so)):t instanceof $||t instanceof N?(e.transform="copy",e.parameter=[so(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}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(T.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=xc[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,d=e?.group?.find(y=>y.source===i&&y.target===u);d||(d={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(d)),d.element||(d.element=[]),d.element.push({code:o,target:[{code:l,equivalence:s}]})}};function so(r){if(r instanceof N)return{valueId:r.name};if(r instanceof $)return vc(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function vc(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var Tc=rt().registerInfix("->",{precedence:T.Arrow}).registerInfix(";",{precedence:T.Semicolon});function Hm(r){let e=Tc.construct(oo(r));return e.removeComments(),new mn(e).parse()}var hn=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,t){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,t)&&n.push(i);return n}matchesUrl(e,t){if(t.includes("*")){let n=t.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===t}};function eh(r,e,t=new hn){return bc({root:r,transformMaps:t},r,e)}function bc(r,e,t){return Sc(r,e),co(r,e),gn(r,e.group[0],t)}function Sc(r,e){let t=ir(r);if(t&&e.import)for(let n of e.import){let i=t.get("StructureMap",n);for(let o of i)co(r,o)}}function co(r,e){let t=ir(r);if(t&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&t.resources.push(n);for(let n of e.group??g)nr(r,n.name,{type:"StructureMapGroup",value:n})}function gn(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)ct(o,l.name,t[a++]);for(let l of i){let d=t[a++]??{type:l.type??"BackboneElement",value:{}};ct(o,l.name,d),s.push(d)}let u={root:r.root,parent:r,variables:o};for(let l of e.rule??g)uo(u,l);return s}function uo(r,e){e.source&&lo(r,e,0)}function lo(r,e,t){let n=e.source[t];for(let i of Pc(r,n))nr(r,"_",i),n.variable&&nr(r,n.variable,i),t<e.source.length-1?lo(r,e,t+1):Ec(r,e)}function Ec(r,e){if(!Rc(r,e)){for(let t of e.target??g)po(r,t);for(let t of e.rule??g)uo(r,t);for(let t of e.dependent??g)Lc(r,t)}}function Rc(r,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let t=xe(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return!1;let n=Cc(r,t);if(!n)return po(r,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=xe(r,i.context),s=o.value[i.element],a=mo(o,i.element)||Array.isArray(s),u={root:r.root,parent:r,variables:{}},l=gn(u,n,[t]);return fo(r,i,o,l,a,s),!0}function Cc(r,e){let t=r;for(;t;){if(t.variables){for(let n of Object.values(t.variables))for(let i of yn(n))if(i.type==="StructureMapGroup"){let o=i.value;if((o.typeMode==="types"||o.typeMode==="type-and-types")&&o.input.length===2&&o.input[0].mode==="source"&&o.input[0].type===e.type&&o.input[1].mode==="target")return o}}t=t.parent}}function Pc(r,e){let t=xe(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=P(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ao(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ao(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Ac(e,i)),i}function ao(r,e,t){return q(P(t,[r],e))}function Ac(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function po(r,e){let t=xe(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=mo(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=wc(r,e);break;case"cast":i=Oc(r,e);break;case"cc":i=Ic(r,e);break;case"copy":i=kc(r,e);break;case"create":i=Vc(r,e);break;case"evaluate":i=Dc(r,e);break;case"translate":i=Mc(r,e);break;case"truncate":i=_c(r,e);break;case"uuid":i=[{type:"string",value:ae()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=ho(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:b({})]:i=[a?{type:a,value:n}:b(n)]}fo(r,e,t,i,o,n)}function fo(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],ct(t.value,e.element,o));for(let s of n)o.push(s.value)}else ct(t.value,e.element,n[0].value);e.variable&&nr(r,e.variable,Fc(n))}}function mo(r,e){return ho(r,e)?.isArray}function ho(r,e){return Qe(r.type)?.elements?.[e]}function wc(r,e){let t=B(r,e.parameter?.[0])?.[0]?.value,n=B(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Oc(r,e){let t=B(r,e.parameter?.[0])?.[0];return B(r,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:t?.value?.toString()}]:[t]}function Ic(r,e){let t=e.parameter;if(t.length===2){let n=B(r,t[0])?.[0]?.value,i=B(r,t[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:B(r,t[0])?.[0]?.value}}]}function kc(r,e){return e.parameter.flatMap(t=>B(r,t))}function Vc(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=B(r,e.parameter?.[0])?.[0]?.value),[b(t)]}function Dc(r,e){let n=B(r,e.parameter?.[0])[0].value;return P(n,[],yo(r))}function Mc(r,e){let t=e.parameter.flatMap(u=>B(r,u)),n=t[0].value,i=t[1].value,s=ir(r)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=io(s,{system:s.group?.[0]?.source,code:n});return[b(a.match?.[0]?.concept?.code)]}function _c(r,e){let t=B(r,e.parameter?.[0])?.[0],n=B(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Lc(r,e){let t=xe(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=xe(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};gn(o,t.value,i)}function ir(r){if(r.transformMaps)return r.transformMaps;if(r.parent)return ir(r.parent)}function B(r,e){let n=M({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=yn(n),n.length===1&&n[0].type==="id"){let i=xe(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return yn(i)}return n}function xe(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return xe(r.parent,e)}function yo(r,e={}){if(r.parent&&yo(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function nr(r,e,t){r.variables||(r.variables={}),ct(r.variables,e,t)}function ct(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function yn(r){return Array.isArray(r)?r:[r]}function Fc(r){return r.length===1?r[0]:r}var Nc=" ".repeat(2),go=class{constructor(e=Nc,t=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,t&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
45
45
  `)}appendNoWrap(e){this.b.push(this.indent.repeat(this.indentCount)),this.b.push(e),this.b.push(`
46
46
  `)}append(e){let t=this.indent.repeat(this.indentCount)+e;if(t.length<160)this.b.push(t),this.b.push(`
47
- `);else{let n=!0;for(let i of Fc(t,120-this.indent.length*this.indentCount))n?this.b.push(this.indent.repeat(this.indentCount)):this.b.push(this.indent.repeat(this.indentCount+2)),this.b.push(i.trim()),this.b.push(`
47
+ `);else{let n=!0;for(let i of Uc(t,120-this.indent.length*this.indentCount))n?this.b.push(this.indent.repeat(this.indentCount)):this.b.push(this.indent.repeat(this.indentCount+2)),this.b.push(i.trim()),this.b.push(`
48
48
  `),n=!1}}toString(){return this.b.join("").replaceAll(`
49
49
 
50
50
 
51
51
  `,`
52
52
 
53
- `)}};function Fc(r,e){let t=[],n=[],i=0;return r.split(" ").forEach(function(o){i+o.length>e&&(t.push(n.join(" ").trim()),n=[],i=0),i+=o.length+1,n.push(o)}),n.length>0&&t.push(n.join(" ").trim()),t}var Nc=[...tt,"eq","ne","co"];function xo(r){return new ye(r,et,Nc,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var or=class{constructor(e,t,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=t,this.value=n}},sr=class{constructor(e){c(this,"child");this.child=e}},ar=class{constructor(e,t,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=t,this.right=n}};var Uc={eq:m.EXACT,ne:m.NOT_EQUALS,co:m.CONTAINS,sw:m.STARTS_WITH,ew:void 0,gt:m.GREATER_THAN,lt:m.LESS_THAN,ge:m.GREATER_THAN_OR_EQUALS,le:m.LESS_THAN_OR_EQUALS,ap:m.APPROXIMATELY,sa:m.STARTS_AFTER,eb:m.ENDS_BEFORE,pr:m.PRESENT,po:void 0,ss:void 0,sb:void 0,in:m.IN,ni:m.NOT_IN,re:m.EQUALS,identifier:m.IDENTIFIER};function Bc(r){let e=Uc[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var xn=class{constructor(e){c(this,"parser");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 sr(this.parse()),this.parser.consume(")")):e=new or(this.parser.consume("Symbol").value,Bc(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 ar(t,e,this.parse())):e}},qc=rt();function ph(r){let e=qc.construct(xo(r));return e.removeComments(),new xn(e).parse()}var hh={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"},Wc={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},xe=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){c(this,"segmentSeparator");c(this,"fieldSeparator");c(this,"componentSeparator");c(this,"repetitionSeparator");c(this,"escapeCharacter");c(this,"subcomponentSeparator");this.segmentSeparator=e,this.fieldSeparator=t,this.componentSeparator=n,this.repetitionSeparator=i,this.escapeCharacter=o,this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},vo=class r{constructor(e,t=new xe){c(this,"context");c(this,"segments");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(e){let t=new Date,n=this.getSegment("MSH"),i=n?.getField(3)?.toString()??"",o=n?.getField(4)?.toString()??"",s=n?.getField(5)?.toString()??"",a=n?.getField(6)?.toString()??"",u=n?.getField(10)?.toString()??"",l=n?.getField(12)?.toString()??"2.5.1",p=e?.ackCode??"AA";return new r([new ut(["MSH",this.context.getMsh2(),s,a,i,o,$c(t),"",this.buildAckMessageType(n),t.getTime().toString(),"P",l],this.context),new ut(["MSA",p,u,Wc[p]],this.context),...e?.errSegment?[e.errSegment]:[]])}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 xe("\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=>ut.parse(n,t)),t)}setSegment(e,t){if(t.name==="MSH"){if(typeof e=="number"){if(e!==0)return!1}else if(this.segments.findIndex(o=>o.name===e)!==0)return!1}else if(typeof e=="number"&&e===0&&t.name!=="MSH")return!1;if(typeof e=="number")return e>=this.segments.length?(this.segments.push(t),!0):(this.segments[e]=t,!0);let n=this.segments.findIndex(i=>i.name===e);return n===0&&t.name!=="MSH"?!1:n!==-1?(this.segments[n]=t,!0):!1}},ut=class r{constructor(e,t=new xe){c(this,"context");c(this,"name");c(this,"fields");this.context=t,ui(e)?this.fields=e.map(n=>te.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 new te([[this.context.getMsh1()]],this.context);if(e===2)return new te([[this.context.getMsh2()]],this.context);if(e>2)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 xe){return new r(e.split(t.fieldSeparator).map(n=>te.parse(n,t)),t)}setField(e,t){if(this.name==="MSH"){if(e===1||e===2)return!1;if(e>2){let n=e-1;for(;this.fields.length<=n;)this.fields.push(new te([[""]],this.context));return this.fields[n]=typeof t=="string"?te.parse(t,this.context):t,!0}}for(;this.fields.length<=e;)this.fields.push(new te([[""]],this.context));return this.fields[e]=typeof t=="string"?te.parse(t,this.context):t,!0}setComponent(e,t,n,i,o=0){let s=this.getField(e);return s?s.setComponent(t,n,i,o):!1}},te=class r{constructor(e,t=new xe){c(this,"context");c(this,"components");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 xe){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}setComponent(e,t,n,i=0){if(e<1)return!1;if(i>=this.components.length)for(;this.components.length<=i;)this.components.push([""]);if(n!==void 0){if(n<0)return!1;let s=(this.components[i][e-1]||"").split(this.context.subcomponentSeparator);for(;s.length<=n;)s.push("");s[n]=t,this.components[i][e-1]=s.join(this.context.subcomponentSeparator)}else this.components[i][e-1]=t;return!0}};function yh(r,e){if(!r)return;let t=De(r.slice(0,4),0),n=De(r.slice(4,6),1)-1,i=De(r.slice(6,8),1),o=De(r.slice(8,10),0),s=De(r.slice(10,12),0),a=De(r.slice(12,14),0),u=0;r.includes(".")&&(u=De(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),p=jc(r,e?.tzOffset);return p!==0&&(l=new Date(l.getTime()-p)),l.toISOString()}function De(r,e){let t=Number.parseInt(r,10);return Number.isNaN(t)?e:t}function jc(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=Number.parseInt(t.slice(0,2),10),a=Number.parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function $c(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replaceAll(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var He={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},Hc=["NONE","ERROR","WARN","INFO","DEBUG"],To=class r{constructor(e,t={},n=He.INFO,i={}){c(this,"write");c(this,"metadata");c(this,"options");c(this,"prefix");c(this,"level");this.write=e,this.metadata=t,this.level=n,this.options=i,i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let t=this.getLoggerConfig(),n=e?{...t,override:e,options:{...t.options,...e.options}}:t;return new r(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:t,level:n,options:i}=this;return{write:e,metadata:t,level:n,options:i}}error(e,t){this.log(He.ERROR,e,t)}warn(e,t){this.log(He.WARN,e,t)}info(e,t){this.log(He.INFO,e,t)}debug(e,t){this.log(He.DEBUG,e,t)}log(e,t,n){if(e>this.level)return;let i;if(Tr(n))i=cr(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=cr(s))}this.write(JSON.stringify({level:Hc[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...i,...this.metadata}))}};function Th(r){let e=He[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function cr(r,e=0,t=10){if(e>=t)return{error:"Max error depth reached"};let n={error:r.toString(),stack:r.stack?.split(`
54
- `)};r.name&&r.name!=="Error"&&(n.name=r.name),r.message&&(n.message=r.message),"cause"in r&&r.cause!==void 0&&(r.cause instanceof Error?n.cause=cr(r.cause,e+1,t):n.cause=r.cause);let i=Object.getOwnPropertyNames(r).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=r[o];s instanceof Error?n[o]=cr(s,e+1,t):n[o]=s}catch{}return n}var Sn=`${dt}/fhir/StructureDefinition/patient-preferredPharmacy`,bo="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",vn="primary",So="preferred";function Tn(r){let e=r.extension?.find(t=>t.url==="pharmacy");return e?.valueReference?A(e.valueReference):void 0}function bn(r){return r.url===Sn&&!!r.extension}function Gc(r,e){let t=r.extension?.find(n=>n.url==="type");t&&(t.valueCodeableConcept={coding:[{system:e,code:So,display:"Preferred Pharmacy"}]})}function Ch(r,e){if(!r.extension)return[];let t=[];for(let n of r.extension){if(n.url!==Sn||!n.extension)continue;let i=n.extension.find(s=>s.url==="pharmacy"),o=n.extension.find(s=>s.url==="type");if(i?.valueReference){let s=e?o?.valueCodeableConcept?.coding?.some(a=>a.system===e&&a.code===vn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===vn)??!1;t.push({organizationRef:i.valueReference,isPrimary:s})}}return t}function Qc(r,e,t=bo){return{url:Sn,extension:[{url:"pharmacy",valueReference:r},{url:"type",valueCodeableConcept:{coding:[{system:t,code:e?vn:So,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function Ph(r,e,t,n=bo){r.extension??=[];let i=A(e);if(t)for(let a of r.extension)bn(a)&&Tn(a)!==i&&Gc(a,n);let o=r.extension.findIndex(a=>bn(a)&&Tn(a)===i),s=Qc(e,t,n);return o>=0?r.extension[o]=s:r.extension.push(s),r}function Ah(r,e){if(!r.extension)return r;let t=A(e);return r.extension=r.extension.filter(n=>bn(n)?Tn(n)!==t:!0),r}function wh(r){if(!Array.isArray(r))return!1;if(r.length>0){let e=r[0];return typeof e=="object"&&e!==null&&e.resourceType==="Organization"}return!0}function Oh(r){if(typeof r!="object"||r===null)return!1;let e=r;return typeof e.success=="boolean"&&typeof e.message=="string"}function Vh(r){if(!r)throw new f(x("Resource type is null"));if(!yt(r))throw new f(x("Unknown resource type"))}function Eo(r,e,t){r===null?t.push(S(e,"Invalid null value")):Array.isArray(r)?zc(r,e,t):typeof r=="object"&&Jc(r,e,t)}function zc(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(S(`${e}[${n}]`,"Invalid undefined value")):Eo(r[n],`${e}[${n}]`,t)}function Jc(r,e,t){for(let[n,i]of Object.entries(r))Eo(i,`${e}${e?".":""}${n}`,t)}function Lh(r){return{resourceType:"SearchParameter",code:r.code+":identifier",base:r.base,type:"token",expression:`(${r.expression}).identifier`}}function Ro(r){return r.match(/^\((.+)\)\.identifier$/)?.[1]}function Co(r,e){return new me(r,new Z(e,new L("identifier")))}var ae={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function jh(r,e){let t=B.types[r]?.searchParamsDetails?.[e.code];return t||(t=Yc(r,e)),t}function Kc(r,e,t){let n=B.types[r];n||(n={},B.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Yc(r,e){let t=e.code,n=e.expression,i=wo(r,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let u of i){let l=ur(u),p=yi(()=>l.join("."));l.length===1&&l[0]instanceof w?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):p().endsWith("extension.value.code")||p().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):Ao(o,l,r,1),p().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let u=Ro(n);if(u===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=Po(r,u);s=Co(n,l)}else s=Po(r,n);let a={type:eu(e,o.propertyTypes),elementDefinitions:o.elementDefinitions.map(u=>({...u,type:u.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(u=>u.type&&u.type.length>0),parsedExpression:s,array:o.array};return Kc(r,t,a),a}function Ao(r,e,t,n){let i=e[n];if(i instanceof he){r.propertyTypes.add(i.right.toString());return}if(i instanceof ie){Xc(r,i);return}let o=i.toString(),s=Et(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof we&&(a=!0,u++);let l=e[u];if(s.isArray&&!a&&(r.array=!0),u===e.length-1&&l instanceof he){r.elementDefinitions.push(s),r.propertyTypes.add(l.right.toString());return}if(u>=e.length){r.elementDefinitions.push(s);for(let p of s.type??g)r.propertyTypes.add(p.code);return}for(let p of s.type??g){let y=p.code;Zc(y)&&(y=s.type[0].code),Ao(r,e,y,u)}}function Xc(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){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 Ae){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Zc(r){return r==="Element"||r==="BackboneElement"}function eu(r,e){switch(r.type){case"date":return e.size===1&&e.has(d.date)?ae.DATE:ae.DATETIME;case"number":return ae.NUMBER;case"quantity":return ae.QUANTITY;case"reference":return e.has(d.canonical)?ae.CANONICAL:ae.REFERENCE;case"token":return e.size===1&&e.has(d.boolean)?ae.BOOLEAN:ae.TEXT;default:return ae.TEXT}}function wo(r,e){let t=[],n=qt(e);return lr(r,n.child,t),t}function $h(r,e){let t=wo(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Po(r,e){let t=[],n=qt(e);if(lr(r,n.child,t),t.length===0)return n;let i=t[0];for(let o=1;o<t.length;o++)i=new Pe(i,t[o]);return new me("<original-not-available>",i)}function lr(r,e,t){e instanceof Pe?(lr(r,e.left,t),lr(r,e.right,t)):e.toString().includes(r+".")&&t.push(e)}function ur(r){if(r instanceof he||r instanceof we)return[ur(r.left),r].flat();if(r instanceof w)return[r];if(r instanceof Z)return[ur(r.left),ur(r.right)].flat();if(r instanceof ie){if(r.name==="where"&&!(r.args[0]instanceof Ae))return[];if(r.name==="last")return[]}return[r]}function Gh(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 Yh(r,e){let t=[];for(let n of e)t.push(...tu(r,n));return t}function tu(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};for(let i of r.constant??g){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=V(o,"value")}let n=b(e);for(let i of r.where??g){let o=P(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return En(r,n,t)}function En(r,e,t){let n=[],i;r.forEach?i=P(r.forEach,[e],t):r.forEachOrNull?i=P(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??g){let u=P(a.path,[o],t),l;if(u.length===0)l={[a.name]:null};else if(a.collection)l={[a.name]:u.map(p=>p.value)};else if(u.length===1)l={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([l])}for(let a of r.select??g){let u=En(a,o,t);s.push(u)}if(r.unionAll){let a=[];for(let u of r.unionAll)for(let l of En(u,o,t))a.push(l);s.push(a)}n.push(...ru(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??g)o[s.name]=null;n.push(o)}return n}function ru(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=nu(e,r[t]);return e}function nu(r,e){let t=[];for(let n of r)for(let i of e)t.push(iu(n,i));return t}function iu(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}var ou="https://meta.medplum.com/releases",pr=new Map;function ty(){pr.clear()}function su(r){let e=r;if(!e.tag_name)throw new Error("Manifest missing tag_name");let t=e.assets;if(!t?.length)throw new Error("Manifest missing assets list");for(let n of t){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function Rn(r,e,t){let n=pr.get(e??"latest");if(!n){let i=e?`v${e}`:"latest",o=new URL(`${ou}/${i}.json`);if(o.searchParams.set("a",r),o.searchParams.set("c",un),t)for(let[u,l]of Object.entries(t))o.searchParams.set(u,l);let s=await fetch(o.toString());if(s.status!==200){let u;try{u=(await s.json()).message}catch(l){console.error(`Failed to parse message from body: ${_e(l)}`)}throw new Error(`Received status code ${s.status} while fetching manifest for version '${e??"latest"}'. Message: ${u}`)}let a=await s.json();su(a),n=a,pr.set(e??"latest",n),e||pr.set(n.tag_name.slice(1),n)}return n}function au(r){return/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/.test(r)}async function ry(r,e){if(!au(e))return!1;try{await Rn(r,e)}catch{return!1}return!0}async function ny(r){let e=await Rn(r);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);return e.tag_name.slice(1)}async function iy(r,e){try{let t=un.split("-")[0],i=(await Rn(r,void 0,e)).tag_name.slice(1);t!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${t}) may be missing important updates and bug fixes.`)}catch(t){console.warn(`Failed to check for newer version: ${_e(t)}`)}}export{Ie as AccessPolicyInteraction,hh as AckCode,Ft as AndAtom,_ as ArithemticOperatorAtom,he as AsAtom,w as BooleanInfixOperatorAtom,yu as CPT,ot as ClientStorage,It as ConcatAtom,kt as ContainsAtom,O as ContentType,$a as DEFAULT_ACCEPT,md as DEFAULT_MAX_SEARCH_COUNT,fd as DEFAULT_SEARCH_COUNT,ln as DataSampler,Z as DotAtom,g as EMPTY,wt as EmptySetAtom,Vt as EqualsAtom,_t as EquivalentAtom,tn as EventTarget,sm as ExternalSecretSystems,rn as FHIRCAST_EVENT_NAMES,Va as FHIRCAST_EVENT_RESOURCES,nn as FHIRCAST_EVENT_VERSION_REQUIRED,Da as FHIRCAST_RESOURCE_TYPES,or as FhirFilterComparison,ar as FhirFilterConnective,sr as FhirFilterNegation,me as FhirPathAtom,Ht as FhircastConnection,go as FileBuilder,ie as FunctionAtom,dt as HTTP_HL7_ORG,vu as HTTP_TERMINOLOGY_HL7_ORG,xe as Hl7Context,te as Hl7Field,vo as Hl7Message,ut as Hl7Segment,gu as ICD10,Bt as ImpliesAtom,Dt as InAtom,we as IndexerAtom,ce as InfixOperatorAtom,Ae as IsAtom,fu as LOINC,Ve as LRUCache,W as LiteralAtom,He as LogLevel,Hc as LogLevelNames,To as Logger,tm as MEDPLUM_CLI_CLIENT_ID,ou as MEDPLUM_RELEASES_URL,un as MEDPLUM_VERSION,Xt as MedplumClient,zt as MedplumKeyValueClient,an as MemoryStorage,Gi as MockAsyncClientStorage,xu as NDC,Mt as NotEqualsAtom,Lt as NotEquivalentAtom,Xa as OAuthClientAssertionType,$e as OAuthGrantType,nm as OAuthSigningAlgorithm,rm as OAuthTokenAuthMethod,Ya as OAuthTokenType,f as OperationOutcomeError,m as Operator,v as OperatorPrecedence,Nt as OrAtom,Sn as PATIENT_PREFERRED_PHARMACY_URL,bo as PHARMACY_PREFERENCE_TYPE_SYSTEM,So as PHARMACY_TYPE_PREFERRED,vn as PHARMACY_TYPE_PRIMARY,dr as Parser,pt as ParserBuilder,lt as PrefixOperatorAtom,d as PropertyType,hu as RXNORM,F as ReadablePromise,Kt as ReconnectingWebSocket,Dd as ReturnAckCategory,mu as SNOMED,ae as SearchParameterType,st as SubscriptionEmitter,Yt as SubscriptionManager,L as SymbolAtom,ye as Tokenizer,hn as TransformMapCollection,ee as TypedEventTarget,Cn as UCUM,Ot as UnaryOperatorAtom,Pe as UnionAtom,Ts as VALID_HOSTNAME_REGEX,Ut as XorAtom,Iu as accepted,Mi as accessPolicySupportsInteraction,Ph as addPreferredPharmacyToPatient,tp as addProfileToResource,bu as allOk,z as append,wm as applyDefaultValuesToElement,Am as applyDefaultValuesToResource,rr as applyFixedOrPatternValue,di as arrayBufferToBase64,pi as arrayBufferToHex,Ne as arrayify,Ba as assert,Bi as assertContextVersionOptional,ju as assertOk,su as assertReleaseManifest,R as badRequest,h as booleanToTypedValue,Kd as buildCdsRequest,pn as buildElementsContext,ks as buildTypeName,Mu as businessRule,Rt as calculateAge,Ll as calculateAgeString,wd as canReadResourceType,Id as canWriteResource,Od as canWriteResourceType,M as capitalize,Eo as checkForNull,ry as checkIfValidMedplumVersion,ty as clearReleaseCache,Gu as compressElement,G as concatUrls,io as conceptMapTranslate,ku as conflict,Hd as convertContainedResourcesToBundle,Pi as convertToSearchableDates,id as convertToSearchableNumbers,od as convertToSearchableQuantities,wi as convertToSearchableReferences,Ai as convertToSearchableStrings,Oi as convertToSearchableTokens,sd as convertToSearchableUris,Sa as convertToTransactionBundle,Dr as crawlTypedValue,ul as crawlTypedValueAsync,Fn as createConstraintIssue,sn as createFhircastMessagePayload,ve as createOperationOutcomeIssue,Qc as createPreferredPharmacyExtension,Nn as createProcessingIssue,be as createReference,S as createStructureIssue,Su as created,ba as decodeBase64,Li as decodeBase64Url,Ee as deepClone,pe as deepEquals,ze as deepIncludes,Lh as deriveIdentifierSearchParameter,$t as encodeBase64,Nd as encodeBase64Url,Fi as encryptSHA256,vs as ensureNoLeadingSlash,zr as ensureTrailingSlash,op as escapeHtml,Xp as evalFhirPath,P as evalFhirPathTyped,Yh as evalSqlOnFhir,eo as expandSampledData,lm as expandSampledObservation,$r as extractAccountReferences,ny as fetchLatestVersionString,Rn as fetchVersionManifest,ti as fhirPathArrayEquals,Ur as fhirPathArrayEquivalent,ri as fhirPathArrayNotEquals,Je as fhirPathEquals,Zo as fhirPathEquivalent,bt as fhirPathIs,ei as fhirPathNot,Mr as fhirTypeToJsType,jl as findCodeBySystem,Gl as findObservationInterval,Ql as findObservationReferenceRange,fs as findObservationReferenceRanges,Xl as findResourceByCode,Gd as findResourceInBundle,ip as flatMapFilter,Ru as forbidden,Ss as formatAddress,Ke as formatCodeableConcept,Ti as formatCoding,pp as formatDate,Jr as formatDateTime,lp as formatFamilyName,up as formatGivenName,$c as formatHl7DateTime,Ze as formatHumanName,yp as formatMoney,ws as formatObservationValue,fp as formatPeriod,fe as formatQuantity,hp as formatRange,bs as formatReferenceString,yd as formatSearchQuery,dp as formatTime,mp as formatTiming,Es as formatWallTime,se as generateId,Gn as getAllDataTypes,Nl as getAllQuestionnaireAnswers,Zr as getBuffer,jr as getCodeBySystem,ue as getDataType,_l as getDateProperty,Om as getDefaultValuesForNewSliceEntry,rs as getDisplayString,Et as getElementDefinition,_s as getElementDefinitionFromElements,Rr as getElementDefinitionTypeName,$h as getExpressionForResourceType,wo as getExpressionsForResourceType,le as getExtension,Bl as getExtensionValue,os as getIdentifier,Ml as getImageSrc,Ro as getInnerDerivedIdentifierExpression,Fe as getNestedProperty,Co as getParsedDerivedIdentifierExpression,Po as getParsedExpressionForResourceType,de as getPathDifference,Cp as getPathDisplayName,Ch as getPreferredPharmaciesFromPatient,Ds as getPropertyDisplayName,xi as getQueryString,Fl as getQuestionnaireAnswers,en as getRandomString,A as getReferenceString,Sp as getResourceTypes,Rp as getSearchParameter,jh as getSearchParameterDetails,Ep as getSearchParameters,Wu as getStatus,V as getTypedPropertyValue,Vr as getTypedPropertyValueWithPath,Yo as getTypedPropertyValueWithSchema,Xo as getTypedPropertyValueWithoutSchema,ro as getValueSliceName,gi as getWebSocketUrl,_d as getWindow,B as globalSchema,Cu as gone,dc as indexConceptMapCodings,Kn as indexDefaultSearchParameters,Kr as indexSearchParameter,bp as indexSearchParameterBundle,Ar as indexStructureDefinitionBundle,Un as inflateBaseSchema,Vo as inflateElement,rt as initFhirPathParserBuilder,gd as invalidSearchOperator,Lu as isAccepted,Oh as isAddPharmacyResponse,j as isBrowserEnvironment,Wr as isCodeableConcept,qr as isCoding,qi as isCompletedSubscriptionRequest,Gr as isComplexTypeCode,Uu as isConflict,Ui as isContextVersionRequired,_u as isCreated,Qn as isDataTypeLoaded,ni as isDateString,Ue as isDateTimeString,sp as isDefined,C as isEmpty,Tr as isError,ja as isFhirCriteriaMet,Ma as isFhircastResourceType,Bu as isGone,Wi as isJwt,$l as isLowerCase,ji as isMedplumAccessToken,Md as isNodeEnvironment,Nu as isNotFound,E as isObject,br as isOk,Ge as isOperationOutcome,wh as isOrganizationArray,ii as isPeriod,re as isPopulated,gt as isPrimitiveType,zn as isProfileLoaded,ts as isProfileResource,I as isQuantity,oi as isQuantityEquivalent,Fu as isRedirect,H as isReference,k as isResource,yt as isResourceType,Or as isResourceTypeSchema,Ye as isResourceWithId,to as isSliceDefinitionWithTypes,Be as isString,ui as isStringArray,ds as isTextObject,Pp as isTypedValue,Wl as isUUID,qu as isUnauthenticated,At as isValidDate,ep as isValidHostname,au as isValidMedplumSemver,yi as lazy,wr as loadDataType,oe as locationUtils,rp as mapByIdentifier,Fr as matchDiscriminant,hi as matchesRange,Wt as matchesSearchRequest,wu as multipleMatches,fi as normalizeArrayBufferView,Xi as normalizeCreateBinaryOptions,rc as normalizeCreatePdfOptions,_e as normalizeErrorString,ht as normalizeOperationOutcome,Vn as notFound,Eu as notModified,ko as operationOutcomeIssueToString,Ln as operationOutcomeToString,qt as parseFhirPath,ph as parseFilterParameter,yh as parseHl7DateTime,Qt as parseJWTPayload,Th as parseLogLevel,qm as parseMappingLanguage,Xs as parseParameter,Vl as parseReference,nt as parseSearchRequest,Cr as parseStructureDefinition,hd as parseXFhirQuery,ll as pathToJSONPointer,Jl as preciseEquals,Yl as preciseGreaterThan,xs as preciseGreaterThanOrEquals,Kl as preciseLessThan,gs as preciseLessThanOrEquals,zl as preciseRound,Pu as preconditionFailed,ga as projectAdminResourceTypes,ya as protectedResourceTypes,xa as readInteractions,Vu as redirect,Tt as removeDuplicates,Ah as removePreferredPharmacyFromPatient,np as removeProfileFromResource,Ra as reorderBundle,Ia as replaceQueryVariables,Se as resolveId,Lf as resourceMatchesSubscriptionCriteria,va as satisfiedAccessPolicy,cr as serializeError,on as serializeFhircastSubscriptionRequest,_n as serverError,Du as serverTimeout,Hl as setCodeBySystem,Ul as setIdentifier,J as singleton,Zl as singularize,Qr as sleep,Pt as sortStringArray,Xe as splitN,it as splitSearchOnComma,Gh as streamToBuffer,Ct as stringify,Ri as stringifyTypedValue,Km as structureMapTransform,tl as subsetResource,um as summarizeObservations,U as toJsBoolean,St as toPeriod,b as toTypedValue,Ou as tooManyRequests,ql as trimTrailingEmptyElements,Qe as tryGetDataType,$i as tryGetJwtExpiration,Jn as tryGetProfile,vi as typedValueToString,Me as unauthorized,vr as unauthorizedTokenAudience,Mn as unauthorizedTokenExpired,Au as unsupportedMediaType,Gt as validateFhircastSubscriptionRequest,Sl as validateResource,Vh as validateResourceType,jo as validateTypedValue,x as validationError,xt as validationRegexes,iy as warnIfNewerVersionAvailable,Fc as wordWrap};
53
+ `)}};function Uc(r,e){let t=[],n=[],i=0;return r.split(" ").forEach(function(o){i+o.length>e&&(t.push(n.join(" ").trim()),n=[],i=0),i+=o.length+1,n.push(o)}),n.length>0&&t.push(n.join(" ").trim()),t}var Bc=[...tt,"eq","ne","co"];function xo(r){return new ge(r,et,Bc,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var or=class{constructor(e,t,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=t,this.value=n}},sr=class{constructor(e){c(this,"child");this.child=e}},ar=class{constructor(e,t,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=t,this.right=n}};var qc={eq:m.EXACT,ne:m.NOT_EQUALS,co:m.CONTAINS,sw:m.STARTS_WITH,ew:void 0,gt:m.GREATER_THAN,lt:m.LESS_THAN,ge:m.GREATER_THAN_OR_EQUALS,le:m.LESS_THAN_OR_EQUALS,ap:m.APPROXIMATELY,sa:m.STARTS_AFTER,eb:m.ENDS_BEFORE,pr:m.PRESENT,po:void 0,ss:void 0,sb:void 0,in:m.IN,ni:m.NOT_IN,re:m.EQUALS,identifier:m.IDENTIFIER};function Wc(r){let e=qc[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var xn=class{constructor(e){c(this,"parser");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 sr(this.parse()),this.parser.consume(")")):e=new or(this.parser.consume("Symbol").value,Wc(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 ar(t,e,this.parse())):e}},jc=rt();function hh(r){let e=jc.construct(xo(r));return e.removeComments(),new xn(e).parse()}var vh={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"},$c={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},ve=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){c(this,"segmentSeparator");c(this,"fieldSeparator");c(this,"componentSeparator");c(this,"repetitionSeparator");c(this,"escapeCharacter");c(this,"subcomponentSeparator");this.segmentSeparator=e,this.fieldSeparator=t,this.componentSeparator=n,this.repetitionSeparator=i,this.escapeCharacter=o,this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},vo=class r{constructor(e,t=new ve){c(this,"context");c(this,"segments");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(e){let t=new Date,n=this.getSegment("MSH"),i=n?.getField(3)?.toString()??"",o=n?.getField(4)?.toString()??"",s=n?.getField(5)?.toString()??"",a=n?.getField(6)?.toString()??"",u=n?.getField(10)?.toString()??"",l=n?.getField(12)?.toString()??"2.5.1",d=e?.ackCode??"AA";return new r([new ut(["MSH",this.context.getMsh2(),s,a,i,o,Gc(t),"",this.buildAckMessageType(n),t.getTime().toString(),"P",l],this.context),new ut(["MSA",d,u,$c[d]],this.context),...e?.errSegment?[e.errSegment]:[]])}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 ve("\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=>ut.parse(n,t)),t)}setSegment(e,t){if(t.name==="MSH"){if(typeof e=="number"){if(e!==0)return!1}else if(this.segments.findIndex(o=>o.name===e)!==0)return!1}else if(typeof e=="number"&&e===0&&t.name!=="MSH")return!1;if(typeof e=="number")return e>=this.segments.length?(this.segments.push(t),!0):(this.segments[e]=t,!0);let n=this.segments.findIndex(i=>i.name===e);return n===0&&t.name!=="MSH"?!1:n!==-1?(this.segments[n]=t,!0):!1}},ut=class r{constructor(e,t=new ve){c(this,"context");c(this,"name");c(this,"fields");this.context=t,ui(e)?this.fields=e.map(n=>re.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 new re([[this.context.getMsh1()]],this.context);if(e===2)return new re([[this.context.getMsh2()]],this.context);if(e>2)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 ve){return new r(e.split(t.fieldSeparator).map(n=>re.parse(n,t)),t)}setField(e,t){if(this.name==="MSH"){if(e===1||e===2)return!1;if(e>2){let n=e-1;for(;this.fields.length<=n;)this.fields.push(new re([[""]],this.context));return this.fields[n]=typeof t=="string"?re.parse(t,this.context):t,!0}}for(;this.fields.length<=e;)this.fields.push(new re([[""]],this.context));return this.fields[e]=typeof t=="string"?re.parse(t,this.context):t,!0}setComponent(e,t,n,i,o=0){let s=this.getField(e);return s?s.setComponent(t,n,i,o):!1}},re=class r{constructor(e,t=new ve){c(this,"context");c(this,"components");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 ve){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}setComponent(e,t,n,i=0){if(e<1)return!1;if(i>=this.components.length)for(;this.components.length<=i;)this.components.push([""]);if(n!==void 0){if(n<0)return!1;let s=(this.components[i][e-1]||"").split(this.context.subcomponentSeparator);for(;s.length<=n;)s.push("");s[n]=t,this.components[i][e-1]=s.join(this.context.subcomponentSeparator)}else this.components[i][e-1]=t;return!0}};function Th(r,e){if(!r)return;let t=De(r.slice(0,4),0),n=De(r.slice(4,6),1)-1,i=De(r.slice(6,8),1),o=De(r.slice(8,10),0),s=De(r.slice(10,12),0),a=De(r.slice(12,14),0),u=0;r.includes(".")&&(u=De(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),d=Hc(r,e?.tzOffset);return d!==0&&(l=new Date(l.getTime()-d)),l.toISOString()}function De(r,e){let t=Number.parseInt(r,10);return Number.isNaN(t)?e:t}function Hc(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=Number.parseInt(t.slice(0,2),10),a=Number.parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function Gc(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replaceAll(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var He={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},Qc=["NONE","ERROR","WARN","INFO","DEBUG"],To=class r{constructor(e,t={},n=He.INFO,i={}){c(this,"write");c(this,"metadata");c(this,"options");c(this,"prefix");c(this,"level");this.write=e,this.metadata=t,this.level=n,this.options=i,i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let t=this.getLoggerConfig(),n=e?{...t,override:e,options:{...t.options,...e.options}}:t;return new r(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:t,level:n,options:i}=this;return{write:e,metadata:t,level:n,options:i}}error(e,t){this.log(He.ERROR,e,t)}warn(e,t){this.log(He.WARN,e,t)}info(e,t){this.log(He.INFO,e,t)}debug(e,t){this.log(He.DEBUG,e,t)}log(e,t,n){if(e>this.level)return;let i;if(Tr(n))i=cr(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=cr(s))}this.write(JSON.stringify({level:Qc[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...i,...this.metadata}))}};function Rh(r){let e=He[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function cr(r,e=0,t=10){if(e>=t)return{error:"Max error depth reached"};let n={error:r.toString(),stack:r.stack?.split(`
54
+ `)};r.name&&r.name!=="Error"&&(n.name=r.name),r.message&&(n.message=r.message),"cause"in r&&r.cause!==void 0&&(r.cause instanceof Error?n.cause=cr(r.cause,e+1,t):n.cause=r.cause);let i=Object.getOwnPropertyNames(r).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=r[o];s instanceof Error?n[o]=cr(s,e+1,t):n[o]=s}catch{}return n}var Sn=`${dt}/fhir/StructureDefinition/patient-preferredPharmacy`,bo="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",vn="primary",So="preferred";function Tn(r){let e=r.extension?.find(t=>t.url==="pharmacy");return e?.valueReference?A(e.valueReference):void 0}function bn(r){return r.url===Sn&&!!r.extension}function zc(r,e){let t=r.extension?.find(n=>n.url==="type");t&&(t.valueCodeableConcept={coding:[{system:e,code:So,display:"Preferred Pharmacy"}]})}function Oh(r,e){if(!r.extension)return[];let t=[];for(let n of r.extension){if(n.url!==Sn||!n.extension)continue;let i=n.extension.find(s=>s.url==="pharmacy"),o=n.extension.find(s=>s.url==="type");if(i?.valueReference){let s=e?o?.valueCodeableConcept?.coding?.some(a=>a.system===e&&a.code===vn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===vn)??!1;t.push({organizationRef:i.valueReference,isPrimary:s})}}return t}function Jc(r,e,t=bo){return{url:Sn,extension:[{url:"pharmacy",valueReference:r},{url:"type",valueCodeableConcept:{coding:[{system:t,code:e?vn:So,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function Ih(r,e,t,n=bo){r.extension??=[];let i=A(e);if(t)for(let a of r.extension)bn(a)&&Tn(a)!==i&&zc(a,n);let o=r.extension.findIndex(a=>bn(a)&&Tn(a)===i),s=Jc(e,t,n);return o>=0?r.extension[o]=s:r.extension.push(s),r}function kh(r,e){if(!r.extension)return r;let t=A(e);return r.extension=r.extension.filter(n=>bn(n)?Tn(n)!==t:!0),r}function Vh(r){if(!Array.isArray(r))return!1;if(r.length>0){let e=r[0];return typeof e=="object"&&e!==null&&e.resourceType==="Organization"}return!0}function Dh(r){if(typeof r!="object"||r===null)return!1;let e=r;return typeof e.success=="boolean"&&typeof e.message=="string"}function Fh(r){if(!r)throw new f(v("Resource type is null"));if(!yt(r))throw new f(v("Unknown resource type"))}function Eo(r,e,t){r===null?t.push(S(e,"Invalid null value")):Array.isArray(r)?Kc(r,e,t):typeof r=="object"&&Yc(r,e,t)}function Kc(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(S(`${e}[${n}]`,"Invalid undefined value")):Eo(r[n],`${e}[${n}]`,t)}function Yc(r,e,t){for(let[n,i]of Object.entries(r))Eo(i,`${e}${e?".":""}${n}`,t)}function Bh(r){return{resourceType:"SearchParameter",code:r.code+":identifier",base:r.base,type:"token",expression:`(${r.expression}).identifier`}}function Ro(r){return r.match(/^\((.+)\)\.identifier$/)?.[1]}function Co(r,e){return new he(r,new ee(e,new N("identifier")))}var ce={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function Qh(r,e){let t=W.types[r]?.searchParamsDetails?.[e.code];return t||(t=Zc(r,e)),t}function Xc(r,e,t){let n=W.types[r];n||(n={},W.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Zc(r,e){let t=e.code,n=e.expression,i=wo(r,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let u of i){let l=ur(u),d=yi(()=>l.join("."));l.length===1&&l[0]instanceof w?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):d().endsWith("extension.value.code")||d().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):Ao(o,l,r,1),d().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let u=Ro(n);if(u===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=Po(r,u);s=Co(n,l)}else s=Po(r,n);let a={type:ru(e,o.propertyTypes),elementDefinitions:o.elementDefinitions.map(u=>({...u,type:u.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(u=>u.type&&u.type.length>0),parsedExpression:s,array:o.array};return Xc(r,t,a),a}function Ao(r,e,t,n){let i=e[n];if(i instanceof ye){r.propertyTypes.add(i.right.toString());return}if(i instanceof oe){eu(r,i);return}let o=i.toString(),s=Et(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof Oe&&(a=!0,u++);let l=e[u];if(s.isArray&&!a&&(r.array=!0),u===e.length-1&&l instanceof ye){r.elementDefinitions.push(s),r.propertyTypes.add(l.right.toString());return}if(u>=e.length){r.elementDefinitions.push(s);for(let d of s.type??g)r.propertyTypes.add(d.code);return}for(let d of s.type??g){let y=d.code;tu(y)&&(y=s.type[0].code),Ao(r,e,y,u)}}function eu(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){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 we){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function tu(r){return r==="Element"||r==="BackboneElement"}function ru(r,e){switch(r.type){case"date":return e.size===1&&e.has(p.date)?ce.DATE:ce.DATETIME;case"number":return ce.NUMBER;case"quantity":return ce.QUANTITY;case"reference":return e.has(p.canonical)?ce.CANONICAL:ce.REFERENCE;case"token":return e.size===1&&e.has(p.boolean)?ce.BOOLEAN:ce.TEXT;default:return ce.TEXT}}function wo(r,e){let t=[],n=qt(e);return lr(r,n.child,t),t}function zh(r,e){let t=wo(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Po(r,e){let t=[],n=qt(e);if(lr(r,n.child,t),t.length===0)return n;let i=t[0];for(let o=1;o<t.length;o++)i=new Ae(i,t[o]);return new he("<original-not-available>",i)}function lr(r,e,t){e instanceof Ae?(lr(r,e.left,t),lr(r,e.right,t)):e.toString().includes(r+".")&&t.push(e)}function ur(r){if(r instanceof ye||r instanceof Oe)return[ur(r.left),r].flat();if(r instanceof w)return[r];if(r instanceof ee)return[ur(r.left),ur(r.right)].flat();if(r instanceof oe){if(r.name==="where"&&!(r.args[0]instanceof we))return[];if(r.name==="last")return[]}return[r]}function Kh(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 ty(r,e){let t=[];for(let n of e)t.push(...nu(r,n));return t}function nu(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};for(let i of r.constant??g){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=M(o,"value")}let n=b(e);for(let i of r.where??g){let o=P(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return En(r,n,t)}function En(r,e,t){let n=[],i;r.forEach?i=P(r.forEach,[e],t):r.forEachOrNull?i=P(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??g){let u=P(a.path,[o],t),l;if(u.length===0)l={[a.name]:null};else if(a.collection)l={[a.name]:u.map(d=>d.value)};else if(u.length===1)l={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([l])}for(let a of r.select??g){let u=En(a,o,t);s.push(u)}if(r.unionAll){let a=[];for(let u of r.unionAll)for(let l of En(u,o,t))a.push(l);s.push(a)}n.push(...iu(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??g)o[s.name]=null;n.push(o)}return n}function iu(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=ou(e,r[t]);return e}function ou(r,e){let t=[];for(let n of r)for(let i of e)t.push(su(n,i));return t}function su(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}var au="https://meta.medplum.com/releases",pr=new Map;function oy(){pr.clear()}function cu(r){let e=r;if(!e.tag_name)throw new Error("Manifest missing tag_name");let t=e.assets;if(!t?.length)throw new Error("Manifest missing assets list");for(let n of t){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function Rn(r,e,t){let n=pr.get(e??"latest");if(!n){let i=e?`v${e}`:"latest",o=new URL(`${au}/${i}.json`);if(o.searchParams.set("a",r),o.searchParams.set("c",un),t)for(let[u,l]of Object.entries(t))o.searchParams.set(u,l);let s=await fetch(o.toString());if(s.status!==200){let u;try{u=(await s.json()).message}catch(l){console.error(`Failed to parse message from body: ${_e(l)}`)}throw new Error(`Received status code ${s.status} while fetching manifest for version '${e??"latest"}'. Message: ${u}`)}let a=await s.json();cu(a),n=a,pr.set(e??"latest",n),e||pr.set(n.tag_name.slice(1),n)}return n}function uu(r){return/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/.test(r)}async function sy(r,e){if(!uu(e))return!1;try{await Rn(r,e)}catch{return!1}return!0}async function ay(r){let e=await Rn(r);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);return e.tag_name.slice(1)}async function cy(r,e){try{let t=un.split("-")[0],i=(await Rn(r,void 0,e)).tag_name.slice(1);t!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${t}) may be missing important updates and bug fixes.`)}catch(t){console.warn(`Failed to check for newer version: ${_e(t)}`)}}export{ke as AccessPolicyInteraction,vh as AckCode,Ft as AndAtom,L as ArithemticOperatorAtom,ye as AsAtom,w as BooleanInfixOperatorAtom,xu as CPT,ot as ClientStorage,It as ConcatAtom,kt as ContainsAtom,O as ContentType,Ga as DEFAULT_ACCEPT,yd as DEFAULT_MAX_SEARCH_COUNT,hd as DEFAULT_SEARCH_COUNT,ln as DataSampler,ee as DotAtom,g as EMPTY,wt as EmptySetAtom,Dt as EqualsAtom,_t as EquivalentAtom,tn as EventTarget,lm as ExternalSecretSystems,rn as FHIRCAST_EVENT_NAMES,Ma as FHIRCAST_EVENT_RESOURCES,nn as FHIRCAST_EVENT_VERSION_REQUIRED,Da as FHIRCAST_RESOURCE_TYPES,or as FhirFilterComparison,ar as FhirFilterConnective,sr as FhirFilterNegation,he as FhirPathAtom,Ht as FhircastConnection,go as FileBuilder,oe as FunctionAtom,dt as HTTP_HL7_ORG,bu as HTTP_TERMINOLOGY_HL7_ORG,ve as Hl7Context,re as Hl7Field,vo as Hl7Message,ut as Hl7Segment,vu as ICD10,Bt as ImpliesAtom,Vt as InAtom,Oe as IndexerAtom,ue as InfixOperatorAtom,we as IsAtom,hu as LOINC,z as LRUCache,$ as LiteralAtom,He as LogLevel,Qc as LogLevelNames,To as Logger,om as MEDPLUM_CLI_CLIENT_ID,au as MEDPLUM_RELEASES_URL,un as MEDPLUM_VERSION,Xt as MedplumClient,zt as MedplumKeyValueClient,an as MemoryStorage,Gi as MockAsyncClientStorage,Tu as NDC,Mt as NotEqualsAtom,Lt as NotEquivalentAtom,ec as OAuthClientAssertionType,$e as OAuthGrantType,am as OAuthSigningAlgorithm,sm as OAuthTokenAuthMethod,Za as OAuthTokenType,f as OperationOutcomeError,m as Operator,T as OperatorPrecedence,Nt as OrAtom,Sn as PATIENT_PREFERRED_PHARMACY_URL,bo as PHARMACY_PREFERENCE_TYPE_SYSTEM,So as PHARMACY_TYPE_PREFERRED,vn as PHARMACY_TYPE_PRIMARY,dr as Parser,pt as ParserBuilder,lt as PrefixOperatorAtom,p as PropertyType,gu as RXNORM,U as ReadablePromise,Kt as ReconnectingWebSocket,_d as ReturnAckCategory,yu as SNOMED,ce as SearchParameterType,st as SubscriptionEmitter,Yt as SubscriptionManager,N as SymbolAtom,ge as Tokenizer,hn as TransformMapCollection,te as TypedEventTarget,Cn as UCUM,Ot as UnaryOperatorAtom,Ae as UnionAtom,Ts as VALID_HOSTNAME_REGEX,Ut as XorAtom,Vu as accepted,Mi as accessPolicySupportsInteraction,Ih as addPreferredPharmacyToPatient,np as addProfileToResource,Eu as allOk,J as append,Vm as applyDefaultValuesToElement,km as applyDefaultValuesToResource,rr as applyFixedOrPatternValue,di as arrayBufferToBase64,pi as arrayBufferToHex,Ne as arrayify,qa as assert,Bi as assertContextVersionOptional,Hu as assertOk,cu as assertReleaseManifest,R as badRequest,h as booleanToTypedValue,Zd as buildCdsRequest,pn as buildElementsContext,ks as buildTypeName,Lu as businessRule,Rt as calculateAge,Nl as calculateAgeString,kd as canReadResourceType,Dd as canWriteResource,Vd as canWriteResourceType,_ as capitalize,Eo as checkForNull,sy as checkIfValidMedplumVersion,oy as clearReleaseCache,zu as compressElement,F as concatUrls,io as conceptMapTranslate,Du as conflict,zd as convertContainedResourcesToBundle,Pi as convertToSearchableDates,sd as convertToSearchableNumbers,ad as convertToSearchableQuantities,wi as convertToSearchableReferences,Ai as convertToSearchableStrings,Oi as convertToSearchableTokens,cd as convertToSearchableUris,Ea as convertToTransactionBundle,Vr as crawlTypedValue,pl as crawlTypedValueAsync,Fn as createConstraintIssue,sn as createFhircastMessagePayload,Te as createOperationOutcomeIssue,Jc as createPreferredPharmacyExtension,Nn as createProcessingIssue,Se as createReference,S as createStructureIssue,Ru as created,Sa as decodeBase64,Li as decodeBase64Url,Re as deepClone,de as deepEquals,ze as deepIncludes,Bh as deriveIdentifierSearchParameter,$t as encodeBase64,qd as encodeBase64Url,Fi as encryptSHA256,vs as ensureNoLeadingSlash,zr as ensureTrailingSlash,ap as escapeHtml,ed as evalFhirPath,P as evalFhirPathTyped,ty as evalSqlOnFhir,eo as expandSampledData,mm as expandSampledObservation,$r as extractAccountReferences,ay as fetchLatestVersionString,Rn as fetchVersionManifest,ti as fhirPathArrayEquals,Ur as fhirPathArrayEquivalent,ri as fhirPathArrayNotEquals,Je as fhirPathEquals,Zo as fhirPathEquivalent,bt as fhirPathIs,ei as fhirPathNot,Mr as fhirTypeToJsType,Hl as findCodeBySystem,zl as findObservationInterval,Jl as findObservationReferenceRange,fs as findObservationReferenceRanges,ep as findResourceByCode,Jd as findResourceInBundle,sp as flatMapFilter,Pu as forbidden,Ss as formatAddress,Ke as formatCodeableConcept,Ti as formatCoding,fp as formatDate,Jr as formatDateTime,dp as formatFamilyName,pp as formatGivenName,Gc as formatHl7DateTime,Ze as formatHumanName,xp as formatMoney,ws as formatObservationValue,hp as formatPeriod,me as formatQuantity,gp as formatRange,bs as formatReferenceString,xd as formatSearchQuery,mp as formatTime,yp as formatTiming,Es as formatWallTime,ae as generateId,Gn as getAllDataTypes,Bl as getAllQuestionnaireAnswers,Zr as getBuffer,jr as getCodeBySystem,le as getDataType,Fl as getDateProperty,Dm as getDefaultValuesForNewSliceEntry,rs as getDisplayString,Et as getElementDefinition,_s as getElementDefinitionFromElements,Rr as getElementDefinitionTypeName,zh as getExpressionForResourceType,wo as getExpressionsForResourceType,pe as getExtension,Wl as getExtensionValue,os as getIdentifier,Ll as getImageSrc,Ro as getInnerDerivedIdentifierExpression,Fe as getNestedProperty,Co as getParsedDerivedIdentifierExpression,Po as getParsedExpressionForResourceType,fe as getPathDifference,Ap as getPathDisplayName,Oh as getPreferredPharmaciesFromPatient,Vs as getPropertyDisplayName,xi as getQueryString,Ul as getQuestionnaireAnswers,en as getRandomString,A as getReferenceString,Rp as getResourceTypes,Pp as getSearchParameter,Qh as getSearchParameterDetails,Cp as getSearchParameters,$u as getStatus,M as getTypedPropertyValue,Dr as getTypedPropertyValueWithPath,Yo as getTypedPropertyValueWithSchema,Xo as getTypedPropertyValueWithoutSchema,ro as getValueSliceName,gi as getWebSocketUrl,Nd as getWindow,W as globalSchema,Au as gone,mc as indexConceptMapCodings,Kn as indexDefaultSearchParameters,Kr as indexSearchParameter,Ep as indexSearchParameterBundle,Ar as indexStructureDefinitionBundle,Un as inflateBaseSchema,Do as inflateElement,rt as initFhirPathParserBuilder,vd as invalidSearchOperator,Nu as isAccepted,Dh as isAddPharmacyResponse,H as isBrowserEnvironment,Wr as isCodeableConcept,qr as isCoding,qi as isCompletedSubscriptionRequest,Gr as isComplexTypeCode,qu as isConflict,Ui as isContextVersionRequired,Fu as isCreated,Qn as isDataTypeLoaded,ni as isDateString,Ue as isDateTimeString,cp as isDefined,C as isEmpty,Tr as isError,Ha as isFhirCriteriaMet,_a as isFhircastResourceType,Wu as isGone,Wi as isJwt,Gl as isLowerCase,ji as isMedplumAccessToken,Fd as isNodeEnvironment,Bu as isNotFound,E as isObject,br as isOk,Ge as isOperationOutcome,Vh as isOrganizationArray,ii as isPeriod,ne as isPopulated,gt as isPrimitiveType,zn as isProfileLoaded,ts as isProfileResource,I as isQuantity,oi as isQuantityEquivalent,Uu as isRedirect,G as isReference,V as isResource,yt as isResourceType,Or as isResourceTypeSchema,Ye as isResourceWithId,to as isSliceDefinitionWithTypes,Be as isString,ui as isStringArray,ds as isTextObject,wp as isTypedValue,$l as isUUID,ju as isUnauthenticated,At as isValidDate,rp as isValidHostname,uu as isValidMedplumSemver,yi as lazy,wr as loadDataType,se as locationUtils,ip as mapByIdentifier,Fr as matchDiscriminant,hi as matchesRange,Wt as matchesSearchRequest,Iu as multipleMatches,fi as normalizeArrayBufferView,Xi as normalizeCreateBinaryOptions,ic as normalizeCreatePdfOptions,_e as normalizeErrorString,ht as normalizeOperationOutcome,Dn as notFound,Cu as notModified,ko as operationOutcomeIssueToString,Ln as operationOutcomeToString,qt as parseFhirPath,hh as parseFilterParameter,Th as parseHl7DateTime,Qt as parseJWTPayload,Rh as parseLogLevel,Hm as parseMappingLanguage,Xs as parseParameter,_l as parseReference,nt as parseSearchRequest,Cr as parseStructureDefinition,gd as parseXFhirQuery,dl as pathToJSONPointer,Yl as preciseEquals,Zl as preciseGreaterThan,xs as preciseGreaterThanOrEquals,Xl as preciseLessThan,gs as preciseLessThanOrEquals,Kl as preciseRound,wu as preconditionFailed,xa as projectAdminResourceTypes,ga as protectedResourceTypes,va as readInteractions,_u as redirect,Tt as removeDuplicates,kh as removePreferredPharmacyFromPatient,op as removeProfileFromResource,Ca as reorderBundle,ka as replaceQueryVariables,Ee as resolveId,Bf as resourceMatchesSubscriptionCriteria,Ta as satisfiedAccessPolicy,cr as serializeError,on as serializeFhircastSubscriptionRequest,_n as serverError,Mu as serverTimeout,Ql as setCodeBySystem,ql as setIdentifier,K as singleton,tp as singularize,Qr as sleep,Pt as sortStringArray,Xe as splitN,it as splitSearchOnComma,Kh as streamToBuffer,Ct as stringify,Ri as stringifyTypedValue,eh as structureMapTransform,nl as subsetResource,fm as summarizeObservations,q as toJsBoolean,St as toPeriod,b as toTypedValue,ku as tooManyRequests,jl as trimTrailingEmptyElements,Qe as tryGetDataType,$i as tryGetJwtExpiration,Jn as tryGetProfile,vi as typedValueToString,Me as unauthorized,vr as unauthorizedTokenAudience,Mn as unauthorizedTokenExpired,Ou as unsupportedMediaType,Gt as validateFhircastSubscriptionRequest,Rl as validateResource,Fh as validateResourceType,jo as validateTypedValue,v as validationError,xt as validationRegexes,cy as warnIfNewerVersionAvailable,Uc as wordWrap};
55
55
  /*!
56
56
  * Reconnecting WebSocket
57
57
  * by Pedro Ladaria <pedro.ladaria@gmail.com>