@medplum/core 3.1.5 → 3.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/index.d.ts +124 -15
- package/dist/esm/index.d.ts +124 -15
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +3 -3
package/dist/esm/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},Q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Be=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new Dt(e,this.prefixParselets,this.infixParselets)}},Dt=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var Ir="http://unitsofmeasure.org",ha="http://loinc.org",ya="http://snomed.info/sct",ga="http://www.nlm.nih.gov/research/umls/rxnorm",xa="http://www.ama-assn.org/go/cpt",va="http://hl7.org/fhir/sid/icd-10",kr="http://hl7.org";var Mt="ok",qe="created",Nt="gone",Ft="not-modified",_t="not-found",Vr="conflict",Dr="unauthorized",Mr="forbidden",Nr="precondition-failed",Fr="multiple-matches",_r="too-many-requests",je="accepted",Sa={resourceType:"OperationOutcome",id:Mt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ea={resourceType:"OperationOutcome",id:qe,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},ba={resourceType:"OperationOutcome",id:Ft,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Lr={resourceType:"OperationOutcome",id:_t,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Ra={resourceType:"OperationOutcome",id:Dr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Pa={resourceType:"OperationOutcome",id:Mr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ca={resourceType:"OperationOutcome",id:Nt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},wa={resourceType:"OperationOutcome",id:Nr,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Aa={resourceType:"OperationOutcome",id:Fr,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Oa={resourceType:"OperationOutcome",id:_r,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Ia(r){return{resourceType:"OperationOutcome",id:je,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},expression:e?[e]:void 0}]}}function ka(r){return{resourceType:"OperationOutcome",id:Vr,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function m(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Ur(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function pe(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Lt(r){return r.id===Mt||r.id===qe||r.id===Ft||r.id===je}function Va(r){return r.id===qe}function Da(r){return r.id===je}function Ma(r){return r.id===_t}function Na(r){return r.id===Nt}function Fa(r){switch(r.id){case Mt:return 200;case qe:return 201;case je:return 202;case Ft:return 304;case Dr:return 401;case Mr:return 403;case _t:return 404;case Vr:return 409;case Nt:return 410;case Nr:case Fr:return 412;case _r:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function _a(r,e){if(!Lt(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(Br(e)),this.outcome=e,this.cause=t}};function $e(r){return r instanceof d?r.outcome:pe(r)?r:R(vi(r))}function vi(r){return r?typeof r=="string"?r:r instanceof Error?r.message:pe(r)?Br(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Br(r){let e=r.issue?.map(Ti)??[];return e.length>0?e.join("; "):"Unknown error"}function Ti(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 X(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 v(r,e){return X("error","structure",e,r)}function qr(r,e){return X("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function jr(r,e,t,n){return X("error","processing",e,r,{...n,error:t})}var Si={"http://hl7.org/fhirpath/System.String":"string"};function Ua(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:Si[t.code]??t.code})),e}function Ei(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 $r(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Ei(i,o)])),constraints:[],innerTypes:[]};return e}var Wr={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"}]}}},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"]}]}}},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"}]}}},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"}]},account:{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"}]}}},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"}]}}},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"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},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 $t(r){return new qt(r).parse()}var Pe=$r(Wr),Wt=Object.create(null),Hr=Object.create(null);function Bt(r){let e;return r?(e=Hr[r],e||(e=Hr[r]=Object.create(null))):e=Pe,e}function Ht(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)Gt(n,e)}function Gt(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=$t(r),n=Bt(e);n[r.name]=t,e&&r.url===e&&(Wt[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function zr(){return Pe}function Jr(r){return!!Pe[r]}function Ce(r,e){let t=Bt(e)[r];return!t&&e&&(t=Bt()[r]),t}function fe(r,e){let t=Ce(r,e);if(!t)throw new d(R("Unknown data type: "+r));return t}function Yr(r){let e=Pe[r];return e&&Kt(e)}function Zr(r){return!!Wt[r]}function Xr(r){return Wt[r]}var qt=class{constructor(e){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,title:e.title,type:e.type,url:e.url,kind:e.kind,description:wi(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=Ut(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[Ut(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ut(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),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!de(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:jt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:de(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Ci(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&&!de(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!de(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!de(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=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!!(de(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.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10),binding:e.binding}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=jt(e)),n||(n=Qt(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=Qr(e.max),n=e.base?.max?Qr(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:Kr(A(i,"fixed[x]")),pattern:Kr(A(i,"pattern[x]")),binding:e.binding}}};function Ja(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Pe[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+C(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Ri.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(Gr):[Gr]},r}var Gr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ri=["resourceType","id","meta"];function Qr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ut(r,e=""){return Pi(r.path,e)}function Pi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function de(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Kr(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function Ci(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 wi(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 Jt(r,e,t,n){new zt(r,e,t,n).crawl()}var zt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=fe(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=_(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);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=we(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of He(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!We(e.type.charAt(0))){let n=fe(e.type);this.crawlObject(e,n,t)}}};function we(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Ai:A,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let p of u)c.push(n(p,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function Ai(r,e,t){let n=r.path;return Oi(A(r,e,t),n,e)}function Oi(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}`}}var en={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},Ge={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},Ii={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function bc(r,e){return new Yt(r.resourceType,r,e).validate()}var Yt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=$t(n.profile):this.schema=fe(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(m("Missing resource type"));this.constraintsCheck(x(this.rootResource),this.schema,e),Zt(this.rootResource,e,this.issues),Jt(this.rootResource,this,this.schema);let t=this.issues,n=!1;for(let i of t)i.severity==="error"&&(n=!0);if(n)throw new d({resourceType:"OperationOutcome",issue:t});return t}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.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 c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),tn(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let y=Di(p,s.slicing);y&&u&&(u[y]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){We(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(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=Vi(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&this.issues.push(X("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(X("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in Ii)&&!this.isExpressionTrue(o,e,n)){this.issues.push(qr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!ee(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=kr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",y=p+o;for(let g of s)if(g===c||g===u||g===y||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(X("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){try{let i=W(e.expression,[t],{"%context":t,"%resource":x(this.currentResource[this.currentResource.length-1]),"%rootResource":x(this.rootResource),"%ucum":x(Ir)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(jr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Mi(e);if(n){let{type:o,value:s}=n;if(!(o in en)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=en[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Jt(i.value,this,fe("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=Ge[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):ki(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function ki(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function Vi(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 A(r,o)?n+a:void 0}}function Zt(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(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&Zt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Zt(i,o,t)}}function tn(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&&!Ke(t,e.pattern)||e.fixed&&!Qe(t,e.fixed))}function Xt(r,e,t,n){if(Array.isArray(r))return!1;let i=(n??t.elements)[e.path],o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(tn(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Di(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>He(we(r,n.path))?.some(i=>Xt(i,n,t))))return t.name}}function Mi(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 f(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:O(r)?{type:l.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function F(r){return r.length===0?!1:!!r[0].value}function L(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 A(r,e,t){if(!r.value)return;let n=Ze(r.type,e,t?.profileUrl);return n?Ni(r,e,n):Fi(r,e)}function Ni(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let p=c+C(u.code);if(o=n[p],a=n["_"+p],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=an(o[c],a[c])}else o=an(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>rn(c,s)):rn(o,s)}function rn(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function Fi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+C(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function Je(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(F(cn(t,i))){n=!0;break}n||e.push(t)}return e}function er(r){return f(!F(r))}function tr(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!1):f(r.every((t,n)=>F(cn(t,e[n]))))}function cn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?f(Math.abs(t-n)<1e-8):O(t)&&O(n)?f(pn(t,n)):f(typeof t=="object"&&typeof n=="object"?nr(r,e):t===n)}function rr(r,e){return r.length===0&&e.length===0?f(!0):r.length!==e.length?f(!1):(r.sort(nn),e.sort(nn),f(r.every((t,n)=>F(_i(t,e[n])))))}function _i(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"?f(Math.abs(s-a)<.01):O(s)&&O(a)?f(pn(s,a)):f(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"?nr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function nn(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 Ye(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return un(t);case"DateTime":return ze(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return ln(t);case"Quantity":return O(t);default:return typeof t=="object"&&t?.resourceType===e}}function un(r){return typeof r=="string"&&!!Ge.date.exec(r)}function ze(r){return typeof r=="string"&&!!Ge.dateTime.exec(r)}function ln(r){return!!(r&&typeof r=="object"&&("start"in r&&ze(r.start)||"end"in r&&ze(r.end)))}function Oc(r){if(r){if(un(r))return{start:on(r,"0000-00-00T00:00:00.000Z"),end:on(r,"xxxx-12-31T23:59:59.999Z")};if(ze(r))return{start:r,end:r};if(ln(r))return r}}function on(r,e){return r+e.substring(r.length)}function O(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function pn(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 nr(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(sn(o)&&sn(s)){if(!nr(o,s))return!1}else if(o!==s)return!1}return!0}function sn(r){return r!==null&&typeof r=="object"}function an(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Li(r??{},e)}return r}function Li(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function K(r){let e=te(r),t=Bi(r);return t===e?{reference:e}:{reference:e,display:t}}function te(r){return ee(r)?r.reference:`${r.resourceType}/${r.id}`}function et(r){if(r)return ee(r)?r.reference.split("/")[1]:r.id}function Nc(r){if(r?.reference===void 0)throw new d(m("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(m("Unable to parse reference string."));return[e,t]}function Ui(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Bi(r){if(Ui(r)){let e=qi(r);if(e)return e}if(r.resourceType==="Device"){let e=ji(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return Xe(e)}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]),Yi(e))return Xe(e);if(Zi(e))return e.text}return te(r)}function qi(r){let e=r.name;if(e&&e.length>0)return nt(e[0])}function ji(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Fc(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=dn(t);if(n)return n}else return dn(e)}function dn(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function _c(r){return r?new Date(r):void 0}function tt(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c<o||c===o&&u<s)&&p--;let y=a*12+c-(i*12+o);u<s&&y--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:y,days:g}}function Lc(r,e){let{years:t,months:n,days:i}=tt(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 Uc(r){let e={};return fn(r.item,e),e}function fn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),fn(t.item,e)}function Bc(r){let e={};return mn(r.item,e),e}function mn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),mn(t.item,e)}function qc(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 jc(r,e,t){let n=r.identifier;if(!n){r.identifier=[{system:e,value:t}];return}for(let i of n)if(i.system===e){i.value=t;return}n.push({system:e,value:t})}function $c(r,...e){let t=Qt(r,...e);if(!t)return;let n=A({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Qt(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 hn(r,e){return JSON.stringify(r,$i,e?2:void 0)}function $i(r,e){return!Wi(r)&&S(e)?void 0:e}function Wi(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!H(r):!1}function H(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 Qe(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Hi(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?Gi(r,e,t):(b(r)||b(e),!1)}function Hi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Qe(r[t],e[t]))return!1;return!0}function Gi(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Qe(o,s,i))return!1}return!0}function Ke(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Qi(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?Ki(r,e):b(r)||b(e)?!1:r===e}function Qi(r,e){return e.every(t=>r.some(n=>Ke(n,t)))}function Ki(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ke(r[t],n))}function re(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Wc(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function b(r){return r!==null&&typeof r=="object"}function yn(r){return r.every(zi)}function zi(r){return typeof r=="string"}function Ji(r){return b(r)&&"code"in r&&typeof r.code=="string"}function Yi(r){return b(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(Ji)}function Zi(r){return b(r)&&"text"in r&&typeof r.text=="string"}var gn=[];for(let r=0;r<256;r++)gn.push(r.toString(16).padStart(2,"0"));function xn(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=gn[e[n]];return t.join("")}function vn(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function C(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function We(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function or(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function me(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function ir(r,e){return r.coding?.find(t=>t.system===e)?.code}function Hc(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Gc(r,e,t,n){return r.qualifiedInterval?.find(i=>Tn(i,e)&&to(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Qc(r,e,t){return r.qualifiedInterval?.find(n=>Tn(n,e)&&t.includes(n.condition))}function Tn(r,e){return Xi(r,e)&&eo(r,e)}function Xi(r,e){return!r.gender||r.gender===e.gender}function eo(r,e){return!r.age||Sn(tt(e.birthDate).years,r.age)}function to(r,e,t){return!!r.range&&Sn(e,r.range,t)}function Sn(r,e,t){return(e.low?.value===void 0||no(r,e.low.value,t))&&(e.high?.value===void 0||ro(r,e.high.value,t))}function Kc(r,e){return parseFloat(r.toFixed(e))}function zc(r,e,t){return U(r,t)===U(e,t)}function Jc(r,e,t){return U(r,t)<U(e,t)}function Yc(r,e,t){return U(r,t)>U(e,t)}function ro(r,e,t){return U(r,t)<=U(e,t)}function no(r,e,t){return U(r,t)>=U(e,t)}function U(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Zc(r,e,t){return r.find(n=>typeof e=="string"?ir(n.code||{},t)===e:ir(n.code||{},t)===ir(e,t))}function He(r){if(r)return Array.isArray(r)?r:[r]}var sr=r=>new Promise(e=>{setTimeout(e,r)});function Xc(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 En(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function he(r,e){return r?(r.push(e),r):[e]}function rt(r){return r.sort((e,t)=>e.localeCompare(t))}function ar(r){return r.endsWith("/")?r:r+"/"}function io(r){return r.startsWith("/")?r.slice(1):r}function B(r,e){return new URL(io(e),ar(r.toString())).toString()}function bn(r,e){return B(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Rn(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 oo=/^(([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 eu(r){return oo.test(r)}function nu(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function nt(r,e){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=ye(r.text);if(n)return n}return t.join(" ").trim()}function iu(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function ou(r){return ye(r.family)??""}function ur(r){return r instanceof Date&&!isNaN(r.getTime())}function su(r,e,t){if(!r)return"";let n=new Date(r);return ur(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function so(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return ur(n)?n.toLocaleTimeString(e,t):""}function cr(r,e,t){if(!r)return"";let n=new Date(r);return ur(n)?n.toLocaleString(e,t):""}function au(r,e,t){return!r||!r.start&&!r.end?"":cr(r.start,e,t)+" - "+cr(r.end,e,t)}var ao={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},co={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},uo={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function cu(r){if(!r)return"";let e=[];return lo(e,r.repeat),r.event&&e.push(r.event.map(t=>cr(t)).join(", ")),C(e.join(" ").trim())}function lo(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(ao[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+co[i]):r.push("per "+n+" "+uo[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(C).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>so(o)).join(", "))}function uu(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=ho(n.value,e),`> ${ne(n,e)}`):`>= ${ne(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=mo(i.value,e),`< ${ne(i,e)}`):`<= ${ne(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${ne(n,e)} - ${ne(i,e)}`)}function ne(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function lu(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Xe(r){if(!r)return"";let e=ye(r.text);return e||(r.coding?r.coding.map(t=>po(t)).join(", "):"")}function po(r){return ye(r?.display)??ye(r?.code)??""}function fo(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(ne(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Xe(r.valueCodeableConcept));else{let t=ye(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>fo(t)).join(" / ")),e.join(" / ").trim()}function ye(r){return typeof r=="string"?r:void 0}function mo(r,e,t=1){return(Pn(r,e)+t)*Math.pow(10,-e)}function ho(r,e,t=1){return(Pn(r,e)-t)*Math.pow(10,-e)}function Pn(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={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",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",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",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"};function gu(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&lr(t)}}function lr(r){for(let e of r.base??[]){let t=V.types[e];t||(t={searchParamsDetails:{}},V.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function jt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?yo((r.base?.path??r.path)?.split(".")):e}function yo(r){return r.length===1?r[0]:r.map(C).join("")}function Kt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function xu(){return Object.values(zr()).filter(Kt).map(r=>r.name)}function vu(r){return V.types[r]?.searchParams}function Tu(r,e){return V.types[r]?.searchParams?.[e]}function Su(r){let e=r.replaceAll("[x]","").split(".").pop();return go(e)}function go(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(vo).join(" ").replace("_"," ").replace(/\s+/g," ")}var xo=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function vo(r){let e=r.toUpperCase();return r===e?r:xo.has(e)?e:e.charAt(0)+r.slice(1)}function Ze(r,e,t){let n=Ce(r,t);if(n)return To(n.elements,e)}function To(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 _(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ee(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var V={types:{}};function wn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return Cn(r.value);case l.CodeableConcept:return r.value.coding?.map(Cn).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:nt(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return _(r.value)?K(r.value).reference:JSON.stringify(r)}}function Cn(r){return r?`${r.system??""}|${r.code}`:""}function ge(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 Ae=()=>[],w={empty:(r,e)=>f(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>f(e.length!==0),exists:(r,e,t)=>t?f(e.filter(n=>F(t.eval(r,[n]))).length>0):f(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>f(e.every(n=>F(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return f(!1);return f(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return f(!0);return f(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return f(!1);return f(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return f(!0);return f(!1)},subsetOf:Ae,supersetOf:Ae,count:(r,e)=>[{type:l.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)=>f(e.length===w.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>F(t.eval({parent:r,variables:{$this:n}},[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Ae,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Je([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return F(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return f(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return f(!0);if(["false","f","no","n","0","0.0"].includes(n))return f(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:f(w.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:f(w.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:ge(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:f(w.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:ge(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:f(w.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:f(w.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);return O(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:f(w.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);return t==null?[]:O(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:f(w.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=j(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:ge("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:f(w.toTime(r,e).length===1),indexOf:(r,e,t)=>D((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>D((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>D((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>D((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>D((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>D(t=>t.toUpperCase(),r,e),lower:(r,e)=>D(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>D((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>D((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>D((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>D(t=>t.length,r,e),toChars:(r,e)=>D(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>q(Math.abs,r,e),ceiling:(r,e)=>q(Math.ceil,r,e),exp:(r,e)=>q(Math.exp,r,e),floor:(r,e)=>q(Math.floor,r,e),ln:(r,e)=>q(Math.log,r,e),log:(r,e,t)=>q((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>q(Math.pow,r,e,t),round:(r,e)=>q(Math.round,r,e),sqrt:(r,e)=>q(Math.sqrt,r,e),truncate:(r,e)=>q(t=>t|0,r,e),children:Ae,descendants:Ae,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=w.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=w.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=tt(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof $?n=t.name:t instanceof z&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:Ye(i,n)})):[]},not:(r,e)=>w.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:_(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.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:l.boolean,value:o.value?.resourceType===i}))}};function D(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=j(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function q(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=j(t,1),o=O(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function j(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var it=class{constructor(e,t){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}`)}}toString(){return this.child.toString()}},M=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},$=class{constructor(e){this.name=e}eval(e,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 _(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},ot=class{eval(){return[]}toString(){return"{}"}},st=class extends Ue{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},ie=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return w.ofType(e,this.left.eval(e,t),this.right)}},P=class extends Q{},I=class extends P{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=O(s)?s.value:s,u=O(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?f(p):O(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},at=class extends Q{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:l.string,value:o.map(s=>s.value).join("")}]:o}},ct=class extends P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return f(n.some(o=>o.value===i[0].value))}},ut=class extends P{constructor(e,t){super("in",e,t)}eval(e,t){let n=L(this.left.eval(e,t)),i=this.right.eval(e,t);return n?f(i.some(o=>o.value===n.value)):[]}},z=class extends Q{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()}`}},xe=class extends Q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Je([...n,...i])}},lt=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return tr(n,i)}},pt=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return er(tr(n,i))}},dt=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return rr(n,i)}},ft=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return er(rr(n,i))}},oe=class extends P{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 f(Ye(n[0],i))}},mt=class extends P{constructor(e,t){super("and",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?f(!0):n?.value===!1||i?.value===!1?f(!1):[]}},ht=class extends P{constructor(e,t){super("or",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?f(!1):n?.value||i?.value?f(!0):[]}},yt=class extends P{constructor(e,t){super("xor",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return!n||!i?[]:f(n.value!==i.value)}},gt=class extends P{constructor(e,t){super("implies",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?f(!0):!n||!i?[]:f(!1)}},G=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=w[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(", ")})`}},se=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var So=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],J=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
|
|
2
|
-
`))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;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()))));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()===" "&&
|
|
3
|
-
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function Eo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&So.includes(r.value)))}var Oe=["true","false"],Ie=["!=","!~","<=",">=","{}","->"];function An(r){return new J(r,Oe,Ie).tokenize()}var h={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},bo={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ro={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new se(e,t)},precedence:h.Indexer},Po={parse(r,e){if(!(e instanceof $))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new G(e.name,t)},precedence:h.FunctionCall};function Co(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function ke(){return new Be().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:ge(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:Co(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new M({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new M({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new M({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new $(e.value)}).registerPrefix("{}",{parse:()=>new ot}).registerPrefix("(",bo).registerInfix("[",Ro).registerInfix("(",Po).prefix("+",h.UnaryAdd,(r,e)=>new st("+",e,t=>t)).prefix("-",h.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",h.Dot,(r,e,t)=>new z(r,t)).infixLeft("/",h.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",h.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",h.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",h.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",h.Union,(r,e,t)=>new xe(r,t)).infixLeft("=",h.Equals,(r,e,t)=>new lt(r,t)).infixLeft("!=",h.NotEquals,(r,e,t)=>new pt(r,t)).infixLeft("~",h.Equivalent,(r,e,t)=>new dt(r,t)).infixLeft("!~",h.NotEquivalent,(r,e,t)=>new ft(r,t)).infixLeft("<",h.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",h.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",h.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",h.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",h.Ampersand,(r,e,t)=>new at(r,t)).infixLeft("and",h.And,(r,e,t)=>new mt(r,t)).infixLeft("as",h.As,(r,e,t)=>new ie(r,t)).infixLeft("contains",h.Contains,(r,e,t)=>new ct(r,t)).infixLeft("div",h.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",h.In,(r,e,t)=>new ut(r,t)).infixLeft("is",h.Is,(r,e,t)=>new oe(r,t)).infixLeft("mod",h.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",h.Or,(r,e,t)=>new ht(r,t)).infixLeft("xor",h.Xor,(r,e,t)=>new yt(r,t)).infixLeft("implies",h.Implies,(r,e,t)=>new gt(r,t))}var wo=ke();function pr(r){return new it(r,wo.construct(An(r)).consumeAndParse())}function ve(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return W(r,t).map(n=>n.value)}function W(r,e,t){let n=t??{};return pr(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var On=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(On||{});function In(r,e){let t=V.types[r]?.searchParamsDetails?.[e.code];return t||(t=Oo(r,e)),t}function Ao(r,e,t){let n=V.types[r];n||(n={},V.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Oo(r,e){let t=e.code,n=Vo(t),i=Vn(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Ve(a),u=En(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):kn(o,Ve(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Do(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Ao(r,t,s),s}function kn(r,e,t,n){let i=e[n];if(i instanceof ie){r.propertyTypes.add(i.right.toString());return}if(i instanceof G){Io(r,i);return}let o=i.toString(),s=Ze(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof se&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;ko(p)&&(p=s.type[0].code),kn(r,e,p,c)}}function Io(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof oe){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function ko(r){return r==="Element"||r==="BackboneElement"}function Vo(r){return r.split("-").reduce((e,t,n)=>e+(n?C(t):t),"")}function Do(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function Vn(r,e){let t=[],n=pr(e);return dr(r,n.child,t),t}function ol(r,e){let t=Vn(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function dr(r,e,t){e instanceof xe?(dr(r,e.left,t),dr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Ve(r){if(r instanceof ie||r instanceof se)return[Ve(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof z)return[Ve(r.left),Ve(r.right)].flat();if(r instanceof G){if(r.name==="where"&&!(r.args[0]instanceof oe))return[];if(r.name==="last")return[]}return[r]}var dl=20,Mo=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(Mo||{}),Nn={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},fr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Te(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 c of a)o.push([s,c]);else o.push([s,a??""]);return No(i,o)}function fl(r){return Te(r)}function ml(r){return Te(r)}function hl(r){return Te(r)}function No(r,e){let t={resourceType:r};for(let[n,i]of e)Fo(t,n,i);return t}function Fo(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=he(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":_o(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Dn(t);i==="iterate"&&(s.modifier="iterate"),r.include=he(r.include,s);break}case"_revinclude":{let s=Dn(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=he(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=V.types[r.resourceType]?.searchParams?.[n];s?r.filters=he(r.filters,Lo(s,i,t)):r.filters=he(r.filters,qo(n,i,t))}}}}function _o(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Lo(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Uo(r,t);case"reference":case"string":case"token":case"uri":return Bo(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Uo(r,e){let{operator:t,value:n}=jo(e);return{code:r.code,operator:t,value:n}}function Bo(r,e,t){return{code:r.code,operator:$o(e),value:t}}function qo(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in fr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function jo(r){let e=r.substring(0,2),t=fr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function $o(r){return Nn[r]??"eq"}function Dn(r){let e=r.split(":");if(e.includes("*"))throw new d(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(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 d(R(`Invalid include value '${r}'`))}var Wo=/{{([^{}]+)}}/g;function yl(r,e){return r=r.replaceAll(Wo,(t,n)=>{let i=W(n,[],e);return i.length!==1?"":wn(i[0])}),Te(r)}function gl(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Ho(t))),r.sortRules&&r.sortRules.length>0&&e.push(Go(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(Mn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Mn("_revinclude",t))),e.length===0?"":(rt(e),"?"+e.join("&"))}function Ho(r){let e=r.operator in Nn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in fr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Go(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Mn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Fn(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Qo(r,e,t))return!1}return!0}function Qo(r,e,t){let n=V.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ve(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Ko(r,t,n);case"string":case"uri":return _n(r,t,n);case"token":return zo(r,t,n);case"date":return Yo(r,t,n);default:return!1}}function Ko(r,e,t){let n=ve(t.expression,r),i=xt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function zo(r,e,t){return In(r.resourceType,t).type==="BOOLEAN"?Jo(r,e,t):_n(r,e,t,!0)}function Jo(r,e,t){let n=ve(t.expression,r),i=e.value==="true",o=n.includes(i);return xt(e.operator)?!o:o}function _n(r,e,t,n){let i=ve(t.expression,r),o=e.value.split(","),s=xt(e.operator);for(let a of i)for(let c of o)if(mr(a,e.operator,c,n))return!s;return s}function mr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return mr(r,e,o,!1)&&(!s||mr(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function Yo(r,e,t){let n=ve(t.expression,r),i=e.value.split(","),o=xt(e.operator);for(let s of n)for(let a of i)if(Zo(s,e.operator,a))return!o;return o}function Zo(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function xt(r){return r==="ne"||r==="not"}var Xo={resourceType:"*"},es=["DomainConfiguration","JsonWebKey","Login"],ts=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],rs=(E=>(E.READ="read",E.VREAD="vread",E.UPDATE="update",E.PATCH="patch",E.DELETE="delete",E.HISTORY="history",E.HISTORY_INSTANCE="history-instance",E.HISTORY_TYPE="history-type",E.HISTORY_SYSTEM="history-system",E.CREATE="create",E.SEARCH="search",E.SEARCH_TYPE="search-type",E.SEARCH_SYSTEM="search-system",E.SEARCH_COMPARTMENT="search-compartment",E.CAPABILITIES="capabilities",E.TRANSACTION="transaction",E.BATCH="batch",E.OPERATION="operation",E))(rs||{}),ns=["read","vread","history","history-instance"];function Pl(r,e){if(r.resource){for(let t of r.resource)if(hr(t.resourceType,e))return!0}return!1}function is(r,e){if(es.includes(e))return!1;if(r.resource){for(let t of r.resource)if(hr(t.resourceType,e)&&!t.readonly)return!0}return!1}function Cl(r,e){let t=e.resourceType;return is(r,t)?os(r,e,!1):!1}function os(r,e,t){if(r.resource){for(let n of r.resource)if(Ln(e,t?"read":"update",n))return!0}return!1}function wl(r,e,t){if(!t)return Xo;if(t.resource){for(let n of t.resource)if(Ln(r,e,n))return n}}function Ln(r,e,t){let n=r.resourceType;return!(!hr(t.resourceType,n)||t.readonly&&!ns.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!Fn(r,Te(t.criteria)))}function hr(r,e){return r===e||r==="*"&&!ts.includes(e)}function Un(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function Bn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function yr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),xn(r.buffer)}async function qn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ae(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function ss(r){let e={};r=re(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=ae(),i.fullUrl="urn:uuid:"+e[o],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)=>as(i,o,e),2);return cs(JSON.parse(n))}function as(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 cs(r){let e=ls(r),{sorted:t,cycles:n}=us(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function us(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function jn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ee(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else jn(n,e)}}function ls(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&jn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Nl(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 ss(e)}var vt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var N={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",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var De=class{constructor(){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];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},ce=class{constructor(){this.emitter=new De}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()}};var gr={"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"},ps=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],xr=["DiagnosticReport-update"];function Wn(r){return xr.includes(r)}function Hn(r){if(xr.includes(r))throw new d(m(`'context.version' is required for '${r}'.`))}var ds={"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"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function fs(r){return ps.includes(r)}function Gn(r){return!!r.endpoint}function vr(r){if(!St(r))throw new d(m("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 Gn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function St(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(!gr[o])return!1;return!(Gn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function $n(r,e,t,n){if(typeof e!="object")throw new d(m(`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 d(m(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(m(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!fs(e.resourceType))throw new d(m(`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 d(m(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function ms(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)$n(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(m(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)$n(r,s,t,n)}}function hs(r,e){let t=new Map,n=ds[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(m(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));ms(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(m(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(m(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Tr(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(m("Must provide a topic."));if(!gr[e])throw new d(m(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(gr).join(", ")}`));if(typeof t!="object")throw new d(m("context must be a context object or array of context objects."));if(xr.includes(e)&&!n)throw new d(m(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return hs(e,i),{timestamp:new Date().toISOString(),id:ae(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Tt=class extends ce{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(m("Subscription request should contain an endpoint."));if(!St(e))throw new d(m("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function ys(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Un(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function Qn(r){return r.split(".").length===3}function Et(r){let[e,t,n]=r.split(".");return ys(t)}function Kn(r){try{return typeof Et(r).login_id=="string"}catch{return!1}}function zn(r){try{let t=Et(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var bt=class{constructor(e){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)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var gs,k=class{constructor(e){this[gs]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};gs=Symbol.toStringTag;var Me=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Sr)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?hn(t):void 0)}},Sr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Jn=class extends Me{constructor(){super();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 Er=class extends ce{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Ne=class extends ce{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},br=class{constructor(e){this.criteria=e,this.emitter=new Ne(e),this.refCount=1}},Rt=class{constructor(e,t,n){if(!(e instanceof Pt))throw new d(m("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new d(m("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new Er(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Ne,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(et(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let{emitter:o}of this.criteriaEntries.values())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new d(Ur(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e}};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(n)}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${te(this.medplum.getProfile())}`,criteria:e.criteria,channel:{type:"websocket"}})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new d(m("Failed to get token"));if(!o)throw new d(m("Failed to get URL from $get-ws-binding-token"));return[t,i]}addCriteria(e){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let t=this.criteriaEntries.get(e);if(t)return t.refCount+=1,t.emitter;let n=new br(e);return this.criteriaEntries.set(e,n),this.getTokenForCriteria(n).then(([i,o])=>{n.subscriptionId=i,this.criteriaEntriesBySubscriptionId.set(i,n),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:o}}))}).catch(i=>{console.error(i.message),this.emitError(e,i),this.criteriaEntries.delete(e)}),n.emitter}removeCriteria(e){let t=this.criteriaEntries.get(e);if(!t){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}if(t.refCount-=1,t.refCount>0)return;let n=this.criteriaEntries.get(e)?.subscriptionId,i={type:"disconnect",payload:{subscriptionId:n}};this.masterSubEmitter&&(this.masterSubEmitter._removeCriteria(e),this.masterSubEmitter.dispatchEvent(i)),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(i),this.criteriaEntries.delete(e),n&&this.criteriaEntriesBySubscriptionId.delete(n)}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.criteriaEntries.size}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Ne(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};var Op="3.1.5-6e0fc2e2f",Ip="medplum-cli",xs=N.FHIR_JSON+", */*; q=0.1",vs="https://api.medplum.com/",Ts=1e3,Ss=6e4,Es=0,bs="Binary/",Yn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Rs=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(Rs||{}),Ps=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(Ps||{}),Cs=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(Cs||{}),ws=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(ws||{}),Pt=class extends De{constructor(t){super();this.initComplete=!0;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??As(),this.storage=t?.storage??new Me,this.createPdfImpl=t?.createPdf,this.baseUrl=ar(t?.baseUrl??vs),this.fhirBaseUrl=B(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=B(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=B(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=B(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?Es:Ss),this.cacheTime>0?this.requestCache=new vt(t?.resourceCacheSize??Ts):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.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0}).catch(console.error)),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}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}clear(){this.storage.clear(),typeof window<"u"&&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=B(this.fhirBaseUrl,t);if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new k(o);return this.setCacheEntry(t,s),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,N.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(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,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:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(B(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=Rn(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 c=new k((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k(this.search(t,n,i).then(Rr));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield Rr(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}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 Yn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new k(Promise.reject(new Error("Missing reference")));if(i==="system")return new k(Promise.resolve(Yn));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Jr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new k((async()=>{let s=`{
|
|
1
|
+
var je=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},K=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},$e=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new Lt(e,this.prefixParselets,this.infixParselets)}},Lt=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var Fr="http://unitsofmeasure.org",Pa="http://loinc.org",wa="http://snomed.info/sct",Aa="http://www.nlm.nih.gov/research/umls/rxnorm",Oa="http://www.ama-assn.org/go/cpt",Ia="http://hl7.org/fhir/sid/icd-10",Lr="http://hl7.org",ka="http://terminology.hl7.org";var _t="ok",We="created",Ut="gone",Bt="not-modified",qt="not-found",_r="conflict",Ur="unauthorized",Br="forbidden",qr="precondition-failed",jr="multiple-matches",$r="too-many-requests",Ge="accepted",Da={resourceType:"OperationOutcome",id:_t,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ma={resourceType:"OperationOutcome",id:We,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Na={resourceType:"OperationOutcome",id:Bt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Wr={resourceType:"OperationOutcome",id:qt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Fa={resourceType:"OperationOutcome",id:Ur,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},La={resourceType:"OperationOutcome",id:Br,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},_a={resourceType:"OperationOutcome",id:Ut,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ua={resourceType:"OperationOutcome",id:qr,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Ba={resourceType:"OperationOutcome",id:jr,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},qa={resourceType:"OperationOutcome",id:$r,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function ja(r){return{resourceType:"OperationOutcome",id:Ge,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 $a(r){return{resourceType:"OperationOutcome",id:_r,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Gr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function pe(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function jt(r){return r.id===_t||r.id===We||r.id===Bt||r.id===Ge}function Wa(r){return r.id===We}function Ga(r){return r.id===Ge}function Ha(r){return r.id===qt}function Qa(r){return r.id===Ut}function Ka(r){switch(r.id){case _t:return 200;case We:return 201;case Ge:return 202;case Bt:return 304;case Ur:return 401;case Br:return 403;case qt:return 404;case _r:return 409;case Ut:return 410;case qr:case jr:return 412;case $r:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function za(r,e){if(!jt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(Hr(e)),this.outcome=e,this.cause=t}};function He(r){return r instanceof f?r.outcome:pe(r)?r:R(Ri(r))}function Ri(r){return r?typeof r=="string"?r:r instanceof Error?r.message:pe(r)?Hr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Hr(r){let e=r.issue?.map(Ci)??[];return e.length>0?e.join("; "):"Unknown error"}function Ci(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 v(r,e){return te("error","structure",e,r)}function Qr(r,e){return te("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Kr(r,e,t,n){return te("error","processing",e,r,{...n,error:t})}var Pi={"http://hl7.org/fhirpath/System.String":"string"};function Ya(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:Pi[t.code]??t.code})),e}function wi(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 zr(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,wi(i,o)])),constraints:[],innerTypes:[]};return e}var Jr={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"}]}}},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"]}]}}},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"}]}}},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"}]},account:{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"}]}}},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"}]}}},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"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},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 Qt(r){return new Gt(r).parse()}var we=zr(Jr),Kt=Object.create(null),Yr=Object.create(null);function Wt(r){let e;return r?(e=Yr[r],e||(e=Yr[r]=Object.create(null))):e=we,e}function zt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)Jt(n,e)}function Jt(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Qt(r),n=Wt(e);n[r.name]=t,e&&r.url===e&&(Kt[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function tn(){return we}function rn(r){return!!we[r]}function Ae(r,e){let t=Wt(e)[r];return!t&&e&&(t=Wt()[r]),t}function me(r,e){let t=Ae(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function nn(r){let e=we[r];return e&&Yt(e)}function on(r){return!!Kt[r]}function sn(r){return Kt[r]}var Gt=class{constructor(e){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,title:e.title,type:e.type,url:e.url,kind:e.kind,description:Vi(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=$t(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[$t(e,n.path)]=t;break}n=n.parent}if(!n){let i=$t(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),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!fe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Ht(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:fe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){ki(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&&!fe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!fe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!fe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=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!!(fe(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.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Ht(e)),n||(n=he(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=Xr(e.max),n=e.base?.max?Xr(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:en(A(i,"fixed[x]")),pattern:en(A(i,"pattern[x]")),binding:e.binding}}};function cc(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=we[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+P(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Oi.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(Zr):[Zr]},r}var Zr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Oi=["resourceType","id","meta"];function Xr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function $t(r,e=""){return Ii(r.path,e)}function Ii(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function fe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function en(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function ki(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 Vi(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 Xt(r,e,t,n){new Zt(r,e,t,n).crawl()}var Zt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=me(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=_(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);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=Oe(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Ke(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Qe(e.type.charAt(0))){let n=me(e.type);this.crawlObject(e,n,t)}}};function Oe(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Di:A,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let d of u)c.push(n(d,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function Di(r,e,t){let n=r.path;return Mi(A(r,e,t),n,e)}function Mi(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}`}}var an={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},ze={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},Ni={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Nc(r,e){return new er(r.resourceType,r,e).validate()}var er=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=Qt(n.profile):this.schema=me(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new f(h("Missing resource type"));this.constraintsCheck(x(this.rootResource),this.schema,e),tr(this.rootResource,e,this.issues),Xt(this.rootResource,this,this.schema);let t=this.issues,n=!1;for(let i of t)i.severity==="error"&&(n=!0);if(n)throw new f({resourceType:"OperationOutcome",issue:t});return t}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.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 c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),_i(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(d=>[d.name,0])):void 0;for(let d of c){this.constraintsCheck(d,s,n),this.referenceTypeCheck(d,s,n),this.checkPropertyValue(d,n);let m=Ui(d,s.slicing);m&&u&&(u[m]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Qe(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(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=Li(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&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",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in Ni)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Qr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!re(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=Lr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,d="https://medplum.com/fhir/StructureDefinition/",m=d+o;for(let g of s)if(g===c||g===u||g===m||!g.startsWith(a)&&!g.startsWith(d))return;this.issues.push(te("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){try{let i=F(e.expression,[t],{"%context":t,"%resource":x(this.currentResource[this.currentResource.length-1]),"%rootResource":x(this.rootResource),"%ucum":x(Fr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Kr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Bi(e);if(n){let{type:o,value:s}=n;if(!(o in an)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=an[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Xt(i.value,this,me("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=ze[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):Fi(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function Fi(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function Li(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 A(r,o)?n+a:void 0}}function tr(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(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&tr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&tr(i,o,t)}}function _i(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&&!ke(t,e.pattern)||e.fixed&&!Ie(t,e.fixed))}function rr(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 ke(r,i.pattern);if(i.fixed)return Ie(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 Ui(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Ke(Oe(r,n.path))?.some(i=>rr(i,n,t))))return t.name}}function Bi(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 p(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:O(r)?{type:l.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function L(r){return r.length===0?!1:!!r[0].value}function U(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 A(r,e,t){if(!r.value)return;let n=Xe(r.type,e,t?.profileUrl);return n?qi(r,e,n):ji(r,e)}function qi(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let d=c+P(u.code);if(o=n[d],a=n["_"+d],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=pn(o[c],a[c])}else o=pn(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>cn(c,s)):cn(o,s)}function cn(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function ji(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+P(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function Ye(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(L(fn(t,i))){n=!0;break}n||e.push(t)}return e}function nr(r){return p(!L(r))}function ir(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?p(!1):p(r.every((t,n)=>L(fn(t,e[n]))))}function fn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?p(Math.abs(t-n)<1e-8):O(t)&&O(n)?p(yn(t,n)):p(typeof t=="object"&&typeof n=="object"?sr(r,e):t===n)}function or(r,e){return r.length===0&&e.length===0?p(!0):r.length!==e.length?p(!1):(r.sort(un),e.sort(un),p(r.every((t,n)=>L($i(t,e[n])))))}function $i(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"?p(Math.abs(s-a)<.01):O(s)&&O(a)?p(yn(s,a)):p(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"?sr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function un(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 Ze(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return mn(t);case"DateTime":return Je(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return hn(t);case"Quantity":return O(t);default:return typeof t=="object"&&t?.resourceType===e}}function mn(r){return typeof r=="string"&&!!ze.date.exec(r)}function Je(r){return typeof r=="string"&&!!ze.dateTime.exec(r)}function hn(r){return!!(r&&typeof r=="object"&&("start"in r&&Je(r.start)||"end"in r&&Je(r.end)))}function qc(r){if(r){if(mn(r))return{start:ln(r,"0000-00-00T00:00:00.000Z"),end:ln(r,"xxxx-12-31T23:59:59.999Z")};if(Je(r))return{start:r,end:r};if(hn(r))return r}}function ln(r,e){return r+e.substring(r.length)}function O(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function yn(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 sr(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(dn(o)&&dn(s)){if(!sr(o,s))return!1}else if(o!==s)return!1}return!0}function dn(r){return r!==null&&typeof r=="object"}function pn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Wi(r??{},e)}return r}function Wi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function z(r){let e=ne(r),t=Hi(r);return t===e?{reference:e}:{reference:e,display:t}}function ne(r){return re(r)?r.reference:`${r.resourceType}/${r.id}`}function tt(r){if(r)return re(r)?r.reference.split("/")[1]:r.id}function Qc(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function Gi(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Hi(r){if(Gi(r)){let e=Qi(r);if(e)return e}if(r.resourceType==="Device"){let e=Ki(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return et(e)}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]),no(e))return et(e);if(io(e))return e.text}return ne(r)}function Qi(r){let e=r.name;if(e&&e.length>0)return it(e[0])}function Ki(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Kc(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=gn(t);if(n)return n}else return gn(e)}function gn(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function zc(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(),c=n.getUTCMonth(),u=n.getUTCDate(),d=a-i;(c<o||c===o&&u<s)&&d--;let m=a*12+c-(i*12+o);u<s&&m--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:d,months:m,days:g}}function Jc(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 Yc(r){let e={};return xn(r.item,e),e}function xn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),xn(t.item,e)}function Zc(r){let e={};return vn(r.item,e),e}function vn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),vn(t.item,e)}function Xc(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 eu(r,e,t){let n=r.identifier;if(!n){r.identifier=[{system:e,value:t}];return}for(let i of n)if(i.system===e){i.value=t;return}n.push({system:e,value:t})}function tu(r,...e){let t=he(r,...e);if(!t)return;let n=A({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function he(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 Tn(r,e){return JSON.stringify(r,zi,e?2:void 0)}function zi(r,e){return!Ji(r)&&S(e)?void 0:e}function Ji(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!H(r):!1}function H(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 Ie(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Yi(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?Zi(r,e,t):(b(r)||b(e),!1)}function Yi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Ie(r[t],e[t]))return!1;return!0}function Zi(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Ie(o,s,i))return!1}return!0}function ke(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Xi(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?eo(r,e):b(r)||b(e)?!1:r===e}function Xi(r,e){return e.every(t=>r.some(n=>ke(n,t)))}function eo(r,e){return Object.entries(e).every(([t,n])=>t in r&&ke(r[t],n))}function ie(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function ru(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function b(r){return r!==null&&typeof r=="object"}function Sn(r){return r.every(to)}function to(r){return typeof r=="string"}function ro(r){return b(r)&&"code"in r&&typeof r.code=="string"}function no(r){return b(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(ro)}function io(r){return b(r)&&"text"in r&&typeof r.text=="string"}var En=[];for(let r=0;r<256;r++)En.push(r.toString(16).padStart(2,"0"));function bn(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=En[e[n]];return t.join("")}function Rn(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function P(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Qe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function cr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ye(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function ar(r,e){return r.coding?.find(t=>t.system===e)?.code}function nu(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function iu(r,e,t,n){return r.qualifiedInterval?.find(i=>Cn(i,e)&&ao(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function ou(r,e,t){return r.qualifiedInterval?.find(n=>Cn(n,e)&&t.includes(n.condition))}function Cn(r,e){return oo(r,e)&&so(r,e)}function oo(r,e){return!r.gender||r.gender===e.gender}function so(r,e){return!r.age||Pn(rt(e.birthDate).years,r.age)}function ao(r,e,t){return!!r.range&&Pn(e,r.range,t)}function Pn(r,e,t){return(e.low?.value===void 0||uo(r,e.low.value,t))&&(e.high?.value===void 0||co(r,e.high.value,t))}function su(r,e){return parseFloat(r.toFixed(e))}function au(r,e,t){return B(r,t)===B(e,t)}function cu(r,e,t){return B(r,t)<B(e,t)}function uu(r,e,t){return B(r,t)>B(e,t)}function co(r,e,t){return B(r,t)<=B(e,t)}function uo(r,e,t){return B(r,t)>=B(e,t)}function B(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function lu(r,e,t){return r.find(n=>typeof e=="string"?ar(n.code||{},t)===e:ar(n.code||{},t)===ar(e,t))}function Ke(r){if(r)return Array.isArray(r)?r:[r]}var ur=r=>new Promise(e=>{setTimeout(e,r)});function lr(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 wn(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ge(r,e){return r?(r.push(e),r):[e]}function nt(r){return r.sort((e,t)=>e.localeCompare(t))}function dr(r){return r.endsWith("/")?r:r+"/"}function lo(r){return r.startsWith("/")?r.slice(1):r}function q(r,e){return new URL(lo(e),dr(r.toString())).toString()}function An(r,e){return q(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function On(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 po=/^(([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 du(r){return po.test(r)}function pu(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 fu(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function yu(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function it(r,e){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=xe(r.text);if(n)return n}return t.join(" ").trim()}function gu(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function xu(r){return xe(r.family)??""}function fr(r){return r instanceof Date&&!isNaN(r.getTime())}function vu(r,e,t){if(!r)return"";let n=new Date(r);return fr(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function fo(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return fr(n)?n.toLocaleTimeString(e,t):""}function pr(r,e,t){if(!r)return"";let n=new Date(r);return fr(n)?n.toLocaleString(e,t):""}function Tu(r,e,t){return!r||!r.start&&!r.end?"":pr(r.start,e,t)+" - "+pr(r.end,e,t)}var mo={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ho={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},yo={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Su(r){if(!r)return"";let e=[];return go(e,r.repeat),r.event&&e.push(r.event.map(t=>pr(t)).join(", ")),P(e.join(" ").trim())}function go(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(mo[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ho[i]):r.push("per "+n+" "+yo[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(P).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>fo(o)).join(", "))}function Eu(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=So(n.value,e),`> ${oe(n,e)}`):`>= ${oe(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=To(i.value,e),`< ${oe(i,e)}`):`<= ${oe(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${oe(n,e)} - ${oe(i,e)}`)}function oe(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function bu(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function et(r){if(!r)return"";let e=xe(r.text);return e||(r.coding?r.coding.map(t=>xo(t)).join(", "):"")}function xo(r){return xe(r?.display)??xe(r?.code)??""}function vo(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(oe(r.valueQuantity));else if(r.valueCodeableConcept)e.push(et(r.valueCodeableConcept));else{let t=xe(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>vo(t)).join(" / ")),e.join(" / ").trim()}function xe(r){return typeof r=="string"?r:void 0}function To(r,e,t=1){return(In(r,e)+t)*Math.pow(10,-e)}function So(r,e,t=1){return(In(r,e)-t)*Math.pow(10,-e)}function In(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={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",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",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",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"};function Iu(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&mr(t)}}function mr(r){for(let e of r.base??[]){let t=D.types[e];t||(t={searchParamsDetails:{}},D.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function Ht(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Eo((r.base?.path??r.path)?.split(".")):e}function Eo(r){return r.length===1?r[0]:r.map(P).join("")}function Yt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function ku(){return Object.values(tn()).filter(Yt).map(r=>r.name)}function Vu(r){return D.types[r]?.searchParams}function Du(r,e){return D.types[r]?.searchParams?.[e]}function Mu(r){let e=r.replaceAll("[x]","").split(".").pop();return bo(e)}function bo(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(Co).join(" ").replace("_"," ").replace(/\s+/g," ")}var Ro=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Co(r){let e=r.toUpperCase();return r===e?r:Ro.has(e)?e:e.charAt(0)+r.slice(1)}function Xe(r,e,t){let n=Ae(r,t);if(n)return Po(n.elements,e)}function Po(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 _(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function re(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var D={types:{}};function Vn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return kn(r.value);case l.CodeableConcept:return r.value.coding?.map(kn).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:it(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return _(r.value)?z(r.value).reference:JSON.stringify(r)}}function kn(r){return r?`${r.system??""}|${r.code}`:""}function ve(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 hr=()=>[],w={empty:(r,e)=>p(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>p(e.length!==0),exists:(r,e,t)=>t?p(e.filter(n=>L(t.eval(r,[n]))).length>0):p(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>p(e.every(n=>L(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return p(!1);return p(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return p(!0);return p(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return p(!1);return p(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return p(!0);return p(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return p(!0);let n=t.eval(r,Te(r));return n.length===0?p(!1):p(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Te(r));return n.length===0?p(!0):e.length===0?p(!1):p(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:l.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)=>p(e.length===w.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>L(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:hr,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Te(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,Te(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,Te(r));return Ye([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Te(r));return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return L(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return p(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return p(!0);if(["false","f","no","n","0","0.0"].includes(n))return p(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:p(w.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:p(w.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:ve(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:p(w.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:ve(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:p(w.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:p(w.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);return O(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:p(w.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);return t==null?[]:O(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:p(w.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=$(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:ve("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:p(w.toTime(r,e).length===1),indexOf:(r,e,t)=>M((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>M((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>M((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>M((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>M((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>M(t=>t.toUpperCase(),r,e),lower:(r,e)=>M(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>M((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>M((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>M((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>M(t=>t.length,r,e),toChars:(r,e)=>M(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>j(Math.abs,r,e),ceiling:(r,e)=>j(Math.ceil,r,e),exp:(r,e)=>j(Math.exp,r,e),floor:(r,e)=>j(Math.floor,r,e),ln:(r,e)=>j(Math.log,r,e),log:(r,e,t)=>j((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>j(Math.pow,r,e,t),round:(r,e)=>j(Math.round,r,e),sqrt:(r,e)=>j(Math.sqrt,r,e),truncate:(r,e)=>j(t=>t|0,r,e),children:hr,descendants:hr,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=w.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=w.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=rt(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof W?n=t.name:t instanceof J&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:Ze(i,n)})):[]},not:(r,e)=>w.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:_(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.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:l.boolean,value:o.value?.resourceType===i}))}};function M(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=$(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function j(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=$(t,1),o=O(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(d=>d.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function $(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 Te(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var ot=class{constructor(e,t){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}`)}}toString(){return this.child.toString()}},N=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},W=class{constructor(e){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 _(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},st=class{eval(){return[]}toString(){return"{}"}},at=class extends je{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},se=class extends K{constructor(e,t){super("as",e,t)}eval(e,t){return w.ofType(e,this.left.eval(e,t),this.right)}},C=class extends K{},I=class extends C{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=O(s)?s.value:s,u=O(a)?a.value:a,d=this.impl(c,u);return typeof d=="boolean"?p(d):O(s)?[{type:l.Quantity,value:{...s,value:d}}]:[x(d)]}},ct=class extends K{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:l.string,value:o.map(s=>s.value).join("")}]:o}},ut=class extends C{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return p(n.some(o=>o.value===i[0].value))}},lt=class extends C{constructor(e,t){super("in",e,t)}eval(e,t){let n=U(this.left.eval(e,t)),i=this.right.eval(e,t);return n?p(i.some(o=>o.value===n.value)):[]}},J=class extends K{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()}`}},Se=class extends K{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ye([...n,...i])}},dt=class extends C{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ir(n,i)}},pt=class extends C{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return nr(ir(n,i))}},ft=class extends C{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return or(n,i)}},mt=class extends C{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return nr(or(n,i))}},ae=class extends C{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 p(Ze(n[0],i))}},ht=class extends C{constructor(e,t){super("and",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?p(!0):n?.value===!1||i?.value===!1?p(!1):[]}},yt=class extends C{constructor(e,t){super("or",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?p(!1):n?.value||i?.value?p(!0):[]}},gt=class extends C{constructor(e,t){super("xor",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return!n||!i?[]:p(n.value!==i.value)}},xt=class extends C{constructor(e,t){super("implies",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?p(!0):!n||!i?[]:p(!1)}},Q=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=w[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(", ")})`}},ce=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var wo=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Y=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
|
|
2
|
+
`))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;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()))));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()===" "&&Ao(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
|
|
3
|
+
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function Ao(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&wo.includes(r.value)))}var Ve=["true","false"],De=["!=","!~","<=",">=","{}","->"];function Dn(r){return new Y(r,Ve,De).tokenize()}var y={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},Oo={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Io={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ce(e,t)},precedence:y.Indexer},ko={parse(r,e){if(!(e instanceof W))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new Q(e.name,t)},precedence:y.FunctionCall};function Vo(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function Me(){return new $e().registerPrefix("String",{parse:(r,e)=>new N({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new N({type:l.dateTime,value:ve(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new N({type:l.Quantity,value:Vo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new N({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new N({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new N({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new W(e.value)}).registerPrefix("{}",{parse:()=>new st}).registerPrefix("(",Oo).registerInfix("[",Io).registerInfix("(",ko).prefix("+",y.UnaryAdd,(r,e)=>new at("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new J(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Se(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new dt(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new pt(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new ft(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new mt(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new ct(r,t)).infixLeft("and",y.And,(r,e,t)=>new ht(r,t)).infixLeft("as",y.As,(r,e,t)=>new se(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new ut(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new lt(r,t)).infixLeft("is",y.Is,(r,e,t)=>new ae(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new yt(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new gt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new xt(r,t))}var Do=Me();function yr(r){return new ot(r,Do.construct(Dn(r)).consumeAndParse())}function Ee(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return F(r,t).map(n=>n.value)}function F(r,e,t){let n=t??{};return yr(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Mn=(d=>(d.BOOLEAN="BOOLEAN",d.NUMBER="NUMBER",d.QUANTITY="QUANTITY",d.TEXT="TEXT",d.REFERENCE="REFERENCE",d.CANONICAL="CANONICAL",d.DATE="DATE",d.DATETIME="DATETIME",d.PERIOD="PERIOD",d.UUID="UUID",d))(Mn||{});function xr(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=No(r,e)),t}function Mo(r,e,t){let n=D.types[r];n||(n={},D.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function No(r,e){let t=e.code,n=_o(t),i=Fn(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Ne(a),u=wn(()=>c.join("."));c.length===1&&c[0]instanceof C?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Nn(o,Ne(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Uo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Mo(r,t,s),s}function Nn(r,e,t,n){let i=e[n];if(i instanceof se){r.propertyTypes.add(i.right.toString());return}if(i instanceof Q){Fo(r,i);return}let o=i.toString(),s=Xe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof ce&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let d=u.code;Lo(d)&&(d=s.type[0].code),Nn(r,e,d,c)}}function Fo(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof ae){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Lo(r){return r==="Element"||r==="BackboneElement"}function _o(r){return r.split("-").reduce((e,t,n)=>e+(n?P(t):t),"")}function Uo(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function Fn(r,e){let t=[],n=yr(e);return gr(r,n.child,t),t}function xl(r,e){let t=Fn(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function gr(r,e,t){e instanceof Se?(gr(r,e.left,t),gr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Ne(r){if(r instanceof se||r instanceof ce)return[Ne(r.left),r].flat();if(r instanceof C)return[r];if(r instanceof J)return[Ne(r.left),Ne(r.right)].flat();if(r instanceof Q){if(r.name==="where"&&!(r.args[0]instanceof ae))return[];if(r.name==="last")return[]}return[r]}var Cl=20,Un=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(Un||{}),Bn={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},vr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Z(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 c of a)o.push([s,c]);else o.push([s,a??""]);return Bo(i,o)}function Pl(r){return Z(r)}function wl(r){return Z(r)}function Al(r){return Z(r)}function Bo(r,e){let t={resourceType:r};for(let[n,i]of e)qo(t,n,i);return t}function qo(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=ge(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":jo(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Ln(t);i==="iterate"&&(s.modifier="iterate"),r.include=ge(r.include,s);break}case"_revinclude":{let s=Ln(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=ge(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=D.types[r.resourceType]?.searchParams?.[n];s?r.filters=ge(r.filters,$o(s,i,t)):r.filters=ge(r.filters,Ho(n,i,t))}}}}function jo(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function $o(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Wo(r,t);case"reference":case"string":case"token":case"uri":return Go(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Wo(r,e){let{operator:t,value:n}=Qo(e);return{code:r.code,operator:t,value:n}}function Go(r,e,t){return{code:r.code,operator:Ko(e),value:t}}function Ho(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in vr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Qo(r){let e=r.substring(0,2),t=vr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ko(r){return Bn[r]??"eq"}function Ln(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}'`))}var zo=/{{([^{}]+)}}/g;function Ol(r,e){return r=r.replaceAll(zo,(t,n)=>{let i=F(n,[],e);return i.length!==1?"":Vn(i[0])}),Z(r)}function Il(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Jo(t))),r.sortRules&&r.sortRules.length>0&&e.push(Yo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(_n("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(_n("_revinclude",t))),e.length===0?"":(nt(e),"?"+e.join("&"))}function Jo(r){let e=r.operator in Bn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in vr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Yo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function _n(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function vt(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 Tt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Zo(r,e,t))return!1}return!0}function Zo(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return Xo(r,t,n);switch(n.type){case"reference":return es(r,t,n);case"string":case"uri":return qn(r,t,n);case"token":return ts(r,t,n);case"date":return os(r,t,n);default:return!1}}function Xo(r,e,t){let i=Ee(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function es(r,e,t){let n=Ee(t.expression,r),i=St(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of vt(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function ts(r,e,t){return xr(r.resourceType,t).type==="BOOLEAN"?rs(r,e,t):qn(r,e,t,!0)}function rs(r,e,t){let n=Ee(t.expression,r),i=e.value==="true",o=n.includes(i);return St(e.operator)?!o:o}function qn(r,e,t,n){let o=xr(r.resourceType,t).elementDefinitions?.[0].type?.[0].code,s=Ee(t.expression,r),a=vt(e.value),c=St(e.operator);for(let u of s)for(let d of a){let m;if(o===l.Identifier?m=ns(u,e.operator,d):o===l.CodeableConcept?m=is(u,e.operator,d):m=Tr(u,e.operator,d,n),m)return!c}return c}function Tr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Tr(r,e,o,!1)&&(!s||Tr(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function ns(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function is(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function os(r,e,t){let n=Ee(t.expression,r),i=vt(e.value),o=St(e.operator);for(let s of n)for(let a of i)if(ss(s,e.operator,a))return!o;return o}function ss(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function St(r){return r==="ne"||r==="not"}var as={resourceType:"*"},cs=["DomainConfiguration","JsonWebKey","Login"],us=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],ls=(E=>(E.READ="read",E.VREAD="vread",E.UPDATE="update",E.PATCH="patch",E.DELETE="delete",E.HISTORY="history",E.HISTORY_INSTANCE="history-instance",E.HISTORY_TYPE="history-type",E.HISTORY_SYSTEM="history-system",E.CREATE="create",E.SEARCH="search",E.SEARCH_TYPE="search-type",E.SEARCH_SYSTEM="search-system",E.SEARCH_COMPARTMENT="search-compartment",E.CAPABILITIES="capabilities",E.TRANSACTION="transaction",E.BATCH="batch",E.OPERATION="operation",E))(ls||{}),ds=["read","vread","history","history-instance"];function ql(r,e){if(r.resource){for(let t of r.resource)if(Sr(t.resourceType,e))return!0}return!1}function ps(r,e){if(cs.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Sr(t.resourceType,e)&&!t.readonly)return!0}return!1}function jl(r,e){let t=e.resourceType;return ps(r,t)?fs(r,e,!1):!1}function fs(r,e,t){if(r.resource){for(let n of r.resource)if(jn(e,t?"read":"update",n))return!0}return!1}function $l(r,e,t){if(!t)return as;if(t.resource){for(let n of t.resource)if(jn(r,e,n))return n}}function jn(r,e,t){let n=r.resourceType;return!(!Sr(t.resourceType,n)||t.readonly&&!ds.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!Tt(r,Z(t.criteria)))}function Sr(r,e){return r===e||r==="*"&&!us.includes(e)}function $n(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function Wn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function Er(){let r=new Uint32Array(28);return crypto.getRandomValues(r),bn(r.buffer)}async function Gn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ue(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function ms(r){let e={};r=ie(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=ue(),i.fullUrl="urn:uuid:"+e[o],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)=>hs(i,o,e),2);return ys(JSON.parse(n))}function hs(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 ys(r){let e=xs(r),{sorted:t,cycles:n}=gs(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function gs(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Hn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(re(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Hn(n,e)}}function xs(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&Hn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Yl(r){r=ie(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=ue());return ms(e)}var Et=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var k={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",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var Fe=class{constructor(){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];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},le=class{constructor(){this.emitter=new Fe}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()}};var br={"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"},vs=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Rr=["DiagnosticReport-update"];function Kn(r){return Rr.includes(r)}function zn(r){if(Rr.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var Ts={"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"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Ss(r){return vs.includes(r)}function Jn(r){return!!r.endpoint}function Cr(r){if(!Rt(r))throw new f(h("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 Jn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Rt(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(!br[o])return!1;return!(Jn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Qn(r,e,t,n){if(typeof e!="object")throw new f(h(`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(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Ss(e.resourceType))throw new f(h(`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(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Es(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Qn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Qn(r,s,t,n)}}function bs(r,e){let t=new Map,n=Ts[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Es(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Pr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!br[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(br).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(Rr.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return bs(e,i),{timestamp:new Date().toISOString(),id:ue(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var bt=class extends le{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!Rt(e))throw new f(h("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function Rs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=$n(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function Yn(r){return r.split(".").length===3}function Ct(r){let[e,t,n]=r.split(".");return Rs(t)}function Zn(r){try{return typeof Ct(r).login_id=="string"}catch{return!1}}function Xn(r){try{let t=Ct(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Pt=class{constructor(e){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,k.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var ei;ei=Symbol.toStringTag;var V=class{constructor(e){this[ei]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var Le=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new wr)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Tn(t):void 0)}},wr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},ti=class extends Le{constructor(){super();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 Ar=class extends le{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},_e=class extends le{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Or=class{constructor(e){this.criteria=e,this.emitter=new _e(e),this.refCount=1}},wt=class{constructor(e,t,n){if(!(e instanceof At))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new Ar(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new _e,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(tt(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let{emitter:o}of this.criteriaEntries.values())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(Gr(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e}};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(n)}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${ne(this.medplum.getProfile())}`,criteria:e.criteria,channel:{type:"websocket"}})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new f(h("Failed to get token"));if(!o)throw new f(h("Failed to get URL from $get-ws-binding-token"));return[t,i]}addCriteria(e){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let t=this.criteriaEntries.get(e);if(t)return t.refCount+=1,t.emitter;let n=new Or(e);return this.criteriaEntries.set(e,n),this.getTokenForCriteria(n).then(([i,o])=>{n.subscriptionId=i,this.criteriaEntriesBySubscriptionId.set(i,n),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:o}}))}).catch(i=>{console.error(i.message),this.emitError(e,i),this.criteriaEntries.delete(e)}),n.emitter}removeCriteria(e){let t=this.criteriaEntries.get(e);if(!t){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}if(t.refCount-=1,t.refCount>0)return;let n=this.criteriaEntries.get(e)?.subscriptionId,i={type:"disconnect",payload:{subscriptionId:n}};this.masterSubEmitter&&(this.masterSubEmitter._removeCriteria(e),this.masterSubEmitter.dispatchEvent(i)),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(i),this.criteriaEntries.delete(e),n&&this.criteriaEntriesBySubscriptionId.delete(n)}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.criteriaEntries.size}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new _e(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function Ed({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!Cs(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=Z(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Ps(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=he(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):Tt(r,s)}function Cs(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 Ps(r,e,t){let n=he(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})},s=F(n.valueString,[x(e)],o);return console.log(s),s?.[0]?.value===!0}var Yd="3.1.7-5fa90717f",Zd="medplum-cli",ws=k.FHIR_JSON+", */*; q=0.1",As="https://api.medplum.com/",Os=1e3,Is=6e4,ks=0,Vs="Binary/",ri={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ds=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(Ds||{}),Ms=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(Ms||{}),Ns=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(Ns||{}),Fs=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Fs||{}),At=class extends Fe{constructor(t){super();this.initComplete=!0;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??Ls(),this.storage=t?.storage??new Le,this.createPdfImpl=t?.createPdf,this.baseUrl=dr(t?.baseUrl??As),this.fhirBaseUrl=q(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=q(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=q(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=q(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?ks:Is),this.cacheTime>0?this.requestCache=new Et(t?.resourceCacheSize??Os):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.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0}).catch(console.error)),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}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}clear(){this.storage.clear(),typeof window<"u"&&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=q(this.fhirBaseUrl,t);if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new V(o);return this.setCacheEntry(t,s),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,k.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(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,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:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(q(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=On(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 c=new V((async()=>{let u=await this.get(o,i);if(u.entry)for(let d of u.entry)this.cacheResource(d.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new V(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new V(this.search(t,n,i).then(Ir));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield Ir(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}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 ri;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new V(Promise.reject(new Error("Missing reference")));if(i==="system")return new V(Promise.resolve(ri));let[o,s]=i.split("/");return!o||!s?new V(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(rn(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new V((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|
|
@@ -39,6 +39,6 @@ var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${t
|
|
|
39
39
|
expression,
|
|
40
40
|
target
|
|
41
41
|
}
|
|
42
|
-
}`.replace(/\s+/g," "),a=await this.graphql(s);Ht(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)lr(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Zr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new k((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return Rr(c).map(u=>(Gt(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(Ht([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async 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),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=ei(t,n,i,o),c=s??(typeof n=="object"?n:{}),u=await this.createBinary(a,c);return{contentType:a.contentType,url:u.url,title:a.filename}}createBinary(t,n,i,o,s){let a=ei(t,n,i,o),c=s??(typeof n=="object"?n:{}),{data:u,contentType:p,filename:y,securityContext:g,onProgress:le}=a,Re=this.fhirUrl("Binary");return y&&Re.searchParams.set("_filename",y),g?.reference&&this.setRequestHeader(c,"X-Security-Context",g.reference),le?this.uploadwithProgress(Re,u,p,le,c):this.post(Re,u,p,c)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let y=g=>{s?.signal?.removeEventListener("abort",p),g instanceof Error?c(g):a(g)};if(u.responseType="json",u.onabort=()=>y(new Error("Request aborted")),u.onerror=()=>y(new Error("Request error")),o&&(u.upload.onprogress=g=>o(g),u.upload.onload=g=>o(g)),u.onload=()=>{u.status>=200&&u.status<300?y(u.response):y(new d($e(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),s?.headers){let g=s.headers;for(let[le,Re]of Object.entries(g))u.setRequestHeader(le,Re)}u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=ks(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:c,tableLayouts:u,fonts:p,...y}=s,g=await this.createPdfImpl(c,u,p),le={...y,data:g,contentType:"application/pdf"};return this.createBinary(le,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=K(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=K(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[K(t)],encounter:s,subject:a,sender:o?K(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),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),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,N.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},N.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){return this.post(this.fhirUrl("Agent",et(t),"$push"),{destination:typeof n=="string"?n:te(n),body:i,contentType:o,waitForResponse:s},N.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||te(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}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=zn(t),this.medplumServer=Kn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?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(bs)&&(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=K(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 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 bt(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new k(Promise.resolve(t)))}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 c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new d(Lr);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await Xn(s,u);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let y=await Xn(s,u)??o.statusUrl;if(y)return this.pollStatus(y,i,o)}if(s.status>=400)throw new d($e(u));return u}async parseBody(t,n){let i;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=B(this.baseUrl,t));let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await sr(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers;for(let o of rt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}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 sr(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,B(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new d($e(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&&!Lt(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){this.setRequestHeader(t,"X-Medplum","extended"),this.setRequestHeader(t,"Accept",xs,!0),t.body&&this.setRequestHeader(t,"Content-Type",N.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)}setRequestHeader(t,n,i,o=!1){t.headers||(t.headers={});let s=t.headers;o&&s[n]||(s[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))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clear(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=yr();sessionStorage.setItem("pkceState",t);let n=yr();sessionStorage.setItem("codeVerifier",n);let i=await qn(n),o=vn(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??Zn()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??Zn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Bn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(m("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(m("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("/fhircast/STU3",vr(i),N.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!St(t))throw new d(m("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(m("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",vr(t),N.FORM_URL_ENCODED)}fhircastConnect(t){return new Tt(t)}async fhircastPublish(t,n,i,o){return Wn(n)?this.post(`/fhircast/STU3/${t}`,Tr(t,n,i,o),N.JSON):(Hn(n),this.post(`/fhircast/STU3/${t}`,Tr(t,n,i),N.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":N.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(R(a.error_description))}catch(a){throw new d(R("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Qn(n)){let i=Et(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Rt(this,bn(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t){return this.getSubscriptionManager().addCriteria(t)}unsubscribeFromCriteria(t){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function As(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Zn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}async function Xn(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(pe(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Rr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function Os(r){return b(r)&&"data"in r&&"contentType"in r}function ei(r,e,t,n){return Os(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function Is(r){return b(r)&&"docDefinition"in r}function ks(r,e,t,n){return Is(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}var Vp={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Pr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i}){if(e===r?.path)return;let o=Vs(e,t,r,!!i),s=Object.create(null);for(let[a,c]of Object.entries(o))s[e+"."+a]=c;return{path:e,elements:o,elementsByPath:s,profileUrl:n??r?.profileUrl,debugMode:i??r?.debugMode??!1}}function Vs(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=me(r,s);c!==void 0&&(i[c]=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 ti(r){return r.type!==void 0&&r.type.length>0}function Ds(r,e,t,n){let i=we(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>Xt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function ri(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>Ds(o,s,i,i.typeSchema?.url??n)))return i.name}}var Se=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=Pr({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[this.elementsContextStack.length-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(!H(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=Ms(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);H(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(!ti(o))continue;let s=o.type.find(a=>H(a.profile))?.profile?.[0];if(H(s)){let a=Xr(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;H(s)&&(o=Pr({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 Ms(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:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var Ct="__sliceName";function rd(r,e){let t=new Fe(r,r.resourceType,"resource");return new Se(e,t).crawlResource(),t.getDefaultValue()}function nd(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Ot(r,n,i,e);continue}let o=me(t,n);o!==void 0&&Ot(r,o,i,e)}return r}function id(r,e,t,n,i){let o=r??Object.create(null),[s,a]=Fs(e,"."),c=Object.create(null);wt(c,o,a,t);let u=new Fe(c,s,"element");new Se(i,u,n).crawlElement(t,a,s);let y=u.getDefaultValue();return At(y,a,t,n)}function od(r,e,t,n){let i=new Fe([{[Ct]:e.name}],e.path,"element");return new Se(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Fe=class{constructor(e,t,n){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[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-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=me(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){Ns(p,s,t,n.elements),Ot(p,s,t,n.elements);let y=At(p,s,t,n.elements);y!==void 0&&a.push(y)}}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=me(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=At(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];H(u)||a.splice(c,1)}S(a)&&wt(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[Ct]??ri(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(or(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];Ct in i&&delete i[Ct]}}getDefaultValue(){return this.rootValue}};function Ns(r,e,t,n){let i=At(r,e,t,n);t.min>0&&i===void 0&&or(t.type[0].code)&&(t.isArray?wt(r,[Object.create(null)],e,t):wt(r,Object.create(null),e,t))}function wt(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]",C(o))}e===void 0?delete r[i]:r[i]=e}function At(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let p=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(b(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Ot(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Ot(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 c=o[a];if(c.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let p of u)t.fixed?p[c]??=t.fixed.value:t.pattern&&(p[c]=ni(p[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function ni(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:re(e);if(b(e)&&(b(r)&&!Array.isArray(r)||r===void 0)){let t=re(r)??Object.create(null);for(let n of Object.keys(e))t[n]=ni(t[n],e[n]);return t}return r}function Fs(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function ii(r,e){if(!r.group)throw new d(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=_s(e);if(pe(t))throw new d(t);let n=Us(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 _s(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?R("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?Ls(r.codeableConcept):r.code||r.coding||r.codeableConcept?R("Ambiguous input: multiple source codings provided"):R("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function Ls(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function Us(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(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Bs(i,o)),s&&t.push(...s)}return t}function Bs(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 qs=[...Ie,"->","<<",">>","=="];function oi(r){return new J(r,Oe,qs).tokenize()}var js={"-":"disjoint","==":"equal"},Cr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}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(h.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(h.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(h.As);t instanceof G?(e.transform=t.name,e.parameter=t.args?.map(si)):t instanceof M||t instanceof $?(e.transform="copy",e.parameter=[si(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(h.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.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=js[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(y=>y.source===i&&y.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function si(r){if(r instanceof $)return{valueId:r.name};if(r instanceof M)return $s(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function $s(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 Ws=ke().registerInfix("->",{precedence:h.Arrow}).registerInfix(";",{precedence:h.Semicolon});function yd(r){let e=Ws.construct(oi(r));return e.removeComments(),new Cr(e).parse()}function Rd(r,e,t){return Hs({root:r,loader:t},r,e)}function Hs(r,e,t){return Gs(r,e),ui(r,e),li(r,e.group[0],t)}function Gs(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)ui(r,i)}}function ui(r,e){if(e.group)for(let t of e.group)wr(r,t.name,{type:"StructureMapGroup",value:t})}function li(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);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 u of n)_e(o,u.name,t[a++]);for(let u of i){let p=t[a++]??x({});_e(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)pi(c,u);return s}function pi(r,e){e.source&&di(r,e,0)}function di(r,e,t){let n=e.source[t];for(let i of Ks(r,n))n.variable&&wr(r,n.variable,i),t<e.source.length-1?di(r,e,t+1):Qs(r,e)}function Qs(r,e){if(e.target)for(let t of e.target)Js(r,t);if(e.rule)for(let t of e.rule)pi(r,t);if(e.dependent)for(let t of e.dependent)ia(r,t)}function Ks(r,e){let t=Ee(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=W(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ai(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ai(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=zs(e,i)),i}function ai(r,e,t){return F(W(t,[r],e))}function zs(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-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 Js(r,e){let t=Ee(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Ys(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Zs(r,e);break;case"copy":i=Xs(r,e);break;case"create":i=ea(r,e);break;case"evaluate":i=ta(r,e);break;case"translate":i=ra(r,e);break;case"truncate":i=na(r,e);break;case"uuid":i=[{type:"string",value:ae()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=fi(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:x({})]:i=[a?{type:a,value:n}:x(n)]}if(i.length!==0){if(o){n||(n=[],_e(t.value,e.element,n));for(let s of i)n.push(s.value)}else _e(t.value,e.element,i[0].value);e.variable&&wr(r,e.variable,oa(i))}}function Ys(r,e){return fi(r,e)?.isArray}function fi(r,e){return Ce(r.type)?.elements?.[e]}function Zs(r,e){let t=Y(r,e.parameter?.[0])?.[0]?.value,n=Y(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Xs(r,e){return e.parameter.flatMap(t=>Y(r,t))}function ea(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=Y(r,e.parameter?.[0])?.[0]?.value),[x(t)]}function ta(r,e){let n=Y(r,e.parameter?.[0])[0].value;return W(n,[],mi(r))}function ra(r,e){let t=e.parameter.flatMap(a=>Y(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=ii(o,{system:o.group?.[0]?.source,code:n});return[x(s.match?.[0]?.concept?.code)]}function na(r,e){let t=Y(r,e.parameter?.[0])?.[0],n=Y(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function ia(r,e){let t=Ee(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=Ee(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};li(o,t.value,i)}function Y(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=ci(n),n.length===1&&n[0].type==="id"){let i=Ee(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return ci(i)}return n}function Ee(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Ee(r.parent,e)}function mi(r,e={}){if(r.parent&&mi(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function wr(r,e,t){r.variables||(r.variables={}),_e(r.variables,e,t)}function _e(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function ci(r){return Array.isArray(r)?r:[r]}function oa(r){return r.length===1?r[0]:r}var sa=[...Ie,"eq","ne","co"];function hi(r){return new J(r,Oe,sa,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var It=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},kt=class{constructor(e){this.child=e}},Vt=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var aa={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function ca(r){let e=aa[r];if(!e)throw new d(R("Invalid operator: "+r));return e}var Ar=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new kt(this.parse()),this.parser.consume(")")):e=new It(this.parser.consume("Symbol").value,ca(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 Vt(t,e,this.parse())):e}},ua=ke();function Fd(r){let e=ua.construct(hi(r));return e.removeComments(),new Ar(e).parse()}var Z=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},yi=class r{constructor(e,t=new Z){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new Le(["MSH",this.context.getMsh2(),o,s,n,i,pa(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new Le(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new Z("\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=>Le.parse(n,t)),t)}},Le=class r{constructor(e,t=new Z){this.context=t,yn(e)?this.fields=e.map(n=>be.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 be([[this.context.getMsh1()]],this.context);if(e===2)return new be([[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 Z){return new r(e.split(t.fieldSeparator).map(n=>be.parse(n,t)),t)}},be=class r{constructor(e,t=new Z){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 Z){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Ud(r,e){if(!r)return;let t=ue(r.slice(0,4),0),n=ue(r.slice(4,6),1)-1,i=ue(r.slice(6,8),1),o=ue(r.slice(8,10),0),s=ue(r.slice(10,12),0),a=ue(r.slice(12,14),0),c=0;r.includes(".")&&(c=ue(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=la(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function ue(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function la(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=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function pa(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var Or=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(Or||{}),gi=class{constructor(e,t={},n=3){this.write=e;this.metadata=t;this.level=n}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
|
|
43
|
-
`)}),this.write(JSON.stringify({level:
|
|
42
|
+
}`.replace(/\s+/g," "),a=await this.graphql(s);zt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)mr(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&on(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new V((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return Ir(c).map(u=>(Jt(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(zt([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async 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),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=oi(t,n,i,o),c=s??(typeof n=="object"?n:{}),u=await this.createBinary(a,c);return{contentType:a.contentType,url:u.url,title:a.filename}}createBinary(t,n,i,o,s){let a=oi(t,n,i,o),c=s??(typeof n=="object"?n:{}),{data:u,contentType:d,filename:m,securityContext:g,onProgress:G}=a,Pe=this.fhirUrl("Binary");return m&&Pe.searchParams.set("_filename",m),g?.reference&&this.setRequestHeader(c,"X-Security-Context",g.reference),G?this.uploadwithProgress(Pe,u,d,G,c):this.post(Pe,u,d,c)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,d=()=>u.abort();s?.signal?.addEventListener("abort",d);let m=g=>{s?.signal?.removeEventListener("abort",d),g instanceof Error?c(g):a(g)};if(u.responseType="json",u.onabort=()=>m(new Error("Request aborted")),u.onerror=()=>m(new Error("Request error")),o&&(u.upload.onprogress=g=>o(g),u.upload.onload=g=>o(g)),u.onload=()=>{u.status>=200&&u.status<300?m(u.response):m(new f(He(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),s?.headers){let g=s.headers;for(let[G,Pe]of Object.entries(g))u.setRequestHeader(G,Pe)}u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=Bs(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:c,tableLayouts:u,fonts:d,...m}=s,g=await this.createPdfImpl(c,u,d),G={...m,data:g,contentType:"application/pdf"};return this.createBinary(G,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=z(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=z(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[z(t)],encounter:s,subject:a,sender:o?z(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),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),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,k.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},k.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){return this.post(this.fhirUrl("Agent",tt(t),"$push"),{destination:typeof n=="string"?n:ne(n),body:i,contentType:o,waitForResponse:s},k.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||ne(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}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=Xn(t),this.medplumServer=Zn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?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(Vs)&&(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=z(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 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 Pt(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new V(Promise.resolve(t)))}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 c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new f(Wr);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let d=await ii(s,u);if(d)return this.request("GET",d,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let m=await ii(s,u)??o.statusUrl;if(m)return this.pollStatus(m,i,o)}if(s.status>=400)throw new f(He(u));return u}async parseBody(t,n){let i;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=q(this.baseUrl,t));let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await ur(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers;for(let o of nt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}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 ur(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,q(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(He(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&&!jt(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){this.setRequestHeader(t,"X-Medplum","extended"),this.setRequestHeader(t,"Accept",ws,!0),t.body&&this.setRequestHeader(t,"Content-Type",k.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)}setRequestHeader(t,n,i,o=!1){t.headers||(t.headers={});let s=t.headers;o&&s[n]||(s[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))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clear(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=Er();sessionStorage.setItem("pkceState",t);let n=Er();sessionStorage.setItem("codeVerifier",n);let i=await Gn(n),o=Rn(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??ni()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??ni()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Wn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(h("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("/fhircast/STU3",Cr(i),k.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Rt(t))throw new f(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",Cr(t),k.FORM_URL_ENCODED)}fhircastConnect(t){return new bt(t)}async fhircastPublish(t,n,i,o){return Kn(n)?this.post(`/fhircast/STU3/${t}`,Pr(t,n,i,o),k.JSON):(zn(n),this.post(`/fhircast/STU3/${t}`,Pr(t,n,i),k.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":k.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new f(R(a.error_description))}catch(a){throw new f(R("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Yn(n)){let i=Ct(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new wt(this,An(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t){return this.getSubscriptionManager().addCriteria(t)}unsubscribeFromCriteria(t){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function Ls(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function ni(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}async function ii(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(pe(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Ir(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function _s(r){return b(r)&&"data"in r&&"contentType"in r}function oi(r,e,t,n){return _s(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function Us(r){return b(r)&&"docDefinition"in r}function Bs(r,e,t,n){return Us(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}var ep={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function kr({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=qs(e,t,r,!!i),a=lr(e,".",2)[1];s=js(s,o,a),s=$s(s,o,a);let c=Object.create(null);for(let[d,m]of Object.entries(s))c[e+"."+d]=m;let u;if(r&&!r.isDefaultContext)u=r.getExtendedProps;else{let d=Object.create(null);u=m=>{let g=lr(m,".",2)[1];if(g){if(!d[g]){let G=Ot(g,o?.hiddenFields);d[g]={hidden:G,readonly:G||Ot(g,o?.readonlyFields)}}return d[g]}}}return{path:e,elements:s,elementsByPath:c,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:u,accessPolicyResource:o}}function qs(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=ye(r,s);c!==void 0&&(i[c]=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 js(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!Ot(n+i,e.hiddenFields)))}function $s(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))Ot(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Ot(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 si(r){return r.type!==void 0&&r.type.length>0}function Ws(r,e,t,n){let i=Oe(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>rr(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function ai(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>Ws(o,s,i,i.typeSchema?.url??n)))return i.name}}var be=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=kr({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[this.elementsContextStack.length-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(!H(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=Gs(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);H(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(!si(o))continue;let s=o.type.find(a=>H(a.profile))?.profile?.[0];if(H(s)){let a=sn(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;H(s)&&(o=kr({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 Gs(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:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var It="__sliceName";function Rp(r,e){let t=new Ue(r,r.resourceType,"resource");return new be(e,t).crawlResource(),t.getDefaultValue()}function Cp(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Dt(r,n,i,e);continue}let o=ye(t,n);o!==void 0&&Dt(r,o,i,e)}return r}function Pp(r,e,t,n,i){let o=r??Object.create(null),[s,a]=Qs(e,"."),c=Object.create(null);kt(c,o,a,t);let u=new Ue(c,s,"element");new be(i,u,n).crawlElement(t,a,s);let m=u.getDefaultValue();return Vt(m,a,t,n)}function wp(r,e,t,n){let i=new Ue([{[It]:e.name}],e.path,"element");return new be(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Ue=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=ie(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-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=ye(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let d of u){Hs(d,s,t,n.elements),Dt(d,s,t,n.elements);let m=Vt(d,s,t,n.elements);m!==void 0&&a.push(m)}}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=ye(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=Vt(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];H(u)||a.splice(c,1)}S(a)&&kt(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[It]??ai(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(cr(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];It in i&&delete i[It]}}getDefaultValue(){return this.rootValue}};function Hs(r,e,t,n){let i=Vt(r,e,t,n);t.min>0&&i===void 0&&cr(t.type[0].code)&&(t.isArray?kt(r,[Object.create(null)],e,t):kt(r,Object.create(null),e,t))}function kt(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]",P(o))}e===void 0?delete r[i]:r[i]=e}function Vt(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let d=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",P(d))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(b(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Dt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Dt(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 c=o[a];if(c.includes("[x]")){let d=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",P(d))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let d of u)t.fixed?d[c]??=t.fixed.value:t.pattern&&(d[c]=ci(d[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function ci(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:ie(e);if(b(e)&&(b(r)&&!Array.isArray(r)||r===void 0)){let t=ie(r)??Object.create(null);for(let n of Object.keys(e))t[n]=ci(t[n],e[n]);return t}return r}function Qs(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function ui(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Ks(e);if(pe(t))throw new f(t);let n=Js(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 Ks(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?R("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?zs(r.codeableConcept):r.code||r.coding||r.codeableConcept?R("Ambiguous input: multiple source codings provided"):R("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function zs(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function Js(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(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Ys(i,o)),s&&t.push(...s)}return t}function Ys(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 Zs=[...De,"->","<<",">>","=="];function li(r){return new Y(r,Ve,Zs).tokenize()}var Xs={"-":"disjoint","==":"equal"},Vr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}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(y.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(y.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(y.As);t instanceof Q?(e.transform=t.name,e.parameter=t.args?.map(di)):t instanceof N||t instanceof W?(e.transform="copy",e.parameter=[di(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(y.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.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=Xs[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,d=e?.group?.find(m=>m.source===i&&m.target===c);d||(d={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(d)),d.element||(d.element=[]),d.element.push({code:o,target:[{code:u,equivalence:s}]})}};function di(r){if(r instanceof W)return{valueId:r.name};if(r instanceof N)return ea(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function ea(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 ta=Me().registerInfix("->",{precedence:y.Arrow}).registerInfix(";",{precedence:y.Semicolon});function _p(r){let e=ta.construct(li(r));return e.removeComments(),new Vr(e).parse()}function Hp(r,e,t){return ra({root:r,loader:t},r,e)}function ra(r,e,t){return na(r,e),mi(r,e),hi(r,e.group[0],t)}function na(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)mi(r,i)}}function mi(r,e){if(e.group)for(let t of e.group)Dr(r,t.name,{type:"StructureMapGroup",value:t})}function hi(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);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 u of n)Be(o,u.name,t[a++]);for(let u of i){let d=t[a++]??x({});Be(o,u.name,d),s.push(d)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)yi(c,u);return s}function yi(r,e){e.source&&gi(r,e,0)}function gi(r,e,t){let n=e.source[t];for(let i of oa(r,n))n.variable&&Dr(r,n.variable,i),t<e.source.length-1?gi(r,e,t+1):ia(r,e)}function ia(r,e){if(e.target)for(let t of e.target)aa(r,t);if(e.rule)for(let t of e.rule)yi(r,t);if(e.dependent)for(let t of e.dependent)ha(r,t)}function oa(r,e){let t=Re(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=F(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!pi(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!pi(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=sa(e,i)),i}function pi(r,e,t){return L(F(t,[r],e))}function sa(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-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 aa(r,e){let t=Re(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=ca(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=ua(r,e);break;case"copy":i=la(r,e);break;case"create":i=da(r,e);break;case"evaluate":i=pa(r,e);break;case"translate":i=fa(r,e);break;case"truncate":i=ma(r,e);break;case"uuid":i=[{type:"string",value:ue()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=xi(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:x({})]:i=[a?{type:a,value:n}:x(n)]}if(i.length!==0){if(o){n||(n=[],Be(t.value,e.element,n));for(let s of i)n.push(s.value)}else Be(t.value,e.element,i[0].value);e.variable&&Dr(r,e.variable,ya(i))}}function ca(r,e){return xi(r,e)?.isArray}function xi(r,e){return Ae(r.type)?.elements?.[e]}function ua(r,e){let t=X(r,e.parameter?.[0])?.[0]?.value,n=X(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function la(r,e){return e.parameter.flatMap(t=>X(r,t))}function da(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=X(r,e.parameter?.[0])?.[0]?.value),[x(t)]}function pa(r,e){let n=X(r,e.parameter?.[0])[0].value;return F(n,[],vi(r))}function fa(r,e){let t=e.parameter.flatMap(a=>X(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=ui(o,{system:o.group?.[0]?.source,code:n});return[x(s.match?.[0]?.concept?.code)]}function ma(r,e){let t=X(r,e.parameter?.[0])?.[0],n=X(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function ha(r,e){let t=Re(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=Re(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};hi(o,t.value,i)}function X(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=fi(n),n.length===1&&n[0].type==="id"){let i=Re(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return fi(i)}return n}function Re(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Re(r.parent,e)}function vi(r,e={}){if(r.parent&&vi(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Dr(r,e,t){r.variables||(r.variables={}),Be(r.variables,e,t)}function Be(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function fi(r){return Array.isArray(r)?r:[r]}function ya(r){return r.length===1?r[0]:r}var ga=[...De,"eq","ne","co"];function Ti(r){return new Y(r,Ve,ga,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var Mt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},Nt=class{constructor(e){this.child=e}},Ft=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var xa={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"present",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function va(r){let e=xa[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var Mr=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new Nt(this.parse()),this.parser.consume(")")):e=new Mt(this.parser.consume("Symbol").value,va(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 Ft(t,e,this.parse())):e}},Ta=Me();function of(r){let e=Ta.construct(Ti(r));return e.removeComments(),new Mr(e).parse()}var ee=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},Si=class r{constructor(e,t=new ee){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new qe(["MSH",this.context.getMsh2(),o,s,n,i,Ea(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new qe(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new ee("\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=>qe.parse(n,t)),t)}},qe=class r{constructor(e,t=new ee){this.context=t,Sn(e)?this.fields=e.map(n=>Ce.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 Ce([[this.context.getMsh1()]],this.context);if(e===2)return new Ce([[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 ee){return new r(e.split(t.fieldSeparator).map(n=>Ce.parse(n,t)),t)}},Ce=class r{constructor(e,t=new ee){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 ee){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function cf(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),c=0;r.includes(".")&&(c=de(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),d=Sa(r,e?.tzOffset);return d!==0&&(u=new Date(u.getTime()-d)),u.toISOString()}function de(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Sa(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=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function Ea(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var Nr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(Nr||{}),Ei=class r{constructor(e,t={},n=3,i){this.write=e;this.metadata=t;this.level=n;this.options=i;i?.prefix&&(this.prefix=i.prefix)}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(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
|
|
43
|
+
`)}),this.write(JSON.stringify({level:Nr[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...n,...this.metadata})))}};function lf(r){let e=Nr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function mf(r){if(!r)throw new f(h("Resource type is null"));if(!nn(r))throw new f(h("Unknown resource type"))}function bi(r,e,t){r===null?t.push(v(e,"Invalid null value")):Array.isArray(r)?ba(r,e,t):typeof r=="object"&&Ra(r,e,t)}function ba(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(v(`${e}[${n}]`,"Invalid undefined value")):bi(r[n],`${e}[${n}]`,t)}function Ra(r,e,t){for(let[n,i]of Object.entries(r))bi(i,`${e}${e?".":""}${n}`,t)}function yf(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()})})}export{ls as AccessPolicyInteraction,ht as AndAtom,I as ArithemticOperatorAtom,se as AsAtom,C as BooleanInfixOperatorAtom,Oa as CPT,Le as ClientStorage,ct as ConcatAtom,ut as ContainsAtom,k as ContentType,ws as DEFAULT_ACCEPT,Cl as DEFAULT_SEARCH_COUNT,J as DotAtom,st as EmptySetAtom,dt as EqualsAtom,ft as EquivalentAtom,Fe as EventTarget,ep as ExternalSecretSystems,br as FHIRCAST_EVENT_NAMES,Ts as FHIRCAST_EVENT_RESOURCES,Rr as FHIRCAST_EVENT_VERSION_REQUIRED,vs as FHIRCAST_RESOURCE_TYPES,Mt as FhirFilterComparison,Ft as FhirFilterConnective,Nt as FhirFilterNegation,ot as FhirPathAtom,bt as FhircastConnection,Q as FunctionAtom,Lr as HTTP_HL7_ORG,ka as HTTP_TERMINOLOGY_HL7_ORG,ee as Hl7Context,Ce as Hl7Field,Si as Hl7Message,qe as Hl7Segment,Ia as ICD10,xt as ImpliesAtom,lt as InAtom,ce as IndexerAtom,K as InfixOperatorAtom,ae as IsAtom,Pa as LOINC,Et as LRUCache,N as LiteralAtom,Nr as LogLevel,Ei as Logger,Zd as MEDPLUM_CLI_CLIENT_ID,Yd as MEDPLUM_VERSION,At as MedplumClient,Pt as MedplumKeyValueClient,wr as MemoryStorage,ti as MockAsyncClientStorage,pt as NotEqualsAtom,mt as NotEquivalentAtom,Fs as OAuthClientAssertionType,Ds as OAuthGrantType,Ns as OAuthTokenAuthMethod,Ms as OAuthTokenType,f as OperationOutcomeError,Un as Operator,y as OperatorPrecedence,yt as OrAtom,Lt as Parser,$e as ParserBuilder,je as PrefixOperatorAtom,l as PropertyType,Aa as RXNORM,V as ReadablePromise,Ar as RobustWebSocket,wa as SNOMED,Mn as SearchParameterType,_e as SubscriptionEmitter,wt as SubscriptionManager,W as SymbolAtom,Y as Tokenizer,le as TypedEventTarget,Fr as UCUM,at as UnaryOperatorAtom,Se as UnionAtom,po as VALID_HOSTNAME_REGEX,gt as XorAtom,ja as accepted,pu as addProfileToResource,Da as allOk,ge as append,Cp as applyDefaultValuesToElement,Pp as applyDefaultValuesToElementWithVisitor,Rp as applyDefaultValuesToResource,Dt as applyFixedOrPatternValue,Rn as arrayBufferToBase64,bn as arrayBufferToHex,Ke as arrayify,zn as assertContextVersionOptional,za as assertOk,R as badRequest,p as booleanToTypedValue,kr as buildElementsContext,Eo as buildTypeName,rt as calculateAge,Jc as calculateAgeString,ql as canReadResourceType,jl as canWriteResource,ps as canWriteResourceType,P as capitalize,bi as checkForNull,Ya as compressElement,q as concatUrls,ui as conceptMapTranslate,$a as conflict,Yl as convertContainedResourcesToBundle,ms as convertToTransactionBundle,Xt as crawlResource,Qr as createConstraintIssue,Pr as createFhircastMessagePayload,te as createOperationOutcomeIssue,Kr as createProcessingIssue,z as createReference,v as createStructureIssue,Ma as created,$n as decodeBase64,ie as deepClone,Ie as deepEquals,ke as deepIncludes,Wn as encodeBase64,Gn as encryptSHA256,lo as ensureNoLeadingSlash,dr as ensureTrailingSlash,Ee as evalFhirPath,F as evalFhirPathTyped,ir as fhirPathArrayEquals,or as fhirPathArrayEquivalent,fn as fhirPathEquals,$i as fhirPathEquivalent,Ze as fhirPathIs,nr as fhirPathNot,an as fhirTypeToJsType,iu as findObservationInterval,ou as findObservationReferenceRange,lu as findResourceByCode,La as forbidden,yu as formatAddress,et as formatCodeableConcept,xo as formatCoding,vu as formatDate,pr as formatDateTime,xu as formatFamilyName,gu as formatGivenName,Ea as formatHl7DateTime,it as formatHumanName,bu as formatMoney,vo as formatObservationValue,Tu as formatPeriod,oe as formatQuantity,Eu as formatRange,Il as formatSearchQuery,fo as formatTime,Su as formatTiming,ue as generateId,tn as getAllDataTypes,Zc as getAllQuestionnaireAnswers,ar as getCodeBySystem,me as getDataType,zc as getDateProperty,wp as getDefaultValuesForNewSliceEntry,Hi as getDisplayString,Xe as getElementDefinition,Po as getElementDefinitionFromElements,Ht as getElementDefinitionTypeName,xl as getExpressionForResourceType,Fn as getExpressionsForResourceType,he as getExtension,tu as getExtensionValue,Xc as getIdentifier,Kc as getImageSrc,Oe as getNestedProperty,ye as getPathDifference,Mu as getPathDisplayName,bo as getPropertyDisplayName,On as getQueryString,Yc as getQuestionnaireAnswers,Er as getRandomString,ne as getReferenceString,ku as getResourceTypes,Du as getSearchParameter,xr as getSearchParameterDetails,Vu as getSearchParameters,Ka as getStatus,A as getTypedPropertyValue,qi as getTypedPropertyValueWithSchema,ai as getValueSliceName,An as getWebSocketUrl,D as globalSchema,_a as gone,mr as indexSearchParameter,Iu as indexSearchParameterBundle,zt as indexStructureDefinitionBundle,zr as inflateBaseSchema,wi as inflateElement,Me as initFhirPathParserBuilder,Ga as isAccepted,no as isCodeableConcept,ro as isCoding,Jn as isCompletedSubscriptionRequest,cr as isComplexTypeCode,Kn as isContextVersionRequired,Wa as isCreated,rn as isDataTypeLoaded,mn as isDateString,Je as isDateTimeString,S as isEmpty,Ps as isFhirCriteriaMet,Ss as isFhircastResourceType,Qa as isGone,Yn as isJwt,Qe as isLowerCase,Zn as isMedplumAccessToken,Ha as isNotFound,b as isObject,jt as isOk,pe as isOperationOutcome,hn as isPeriod,H as isPopulated,on as isProfileLoaded,Gi as isProfileResource,O as isQuantity,yn as isQuantityEquivalent,re as isReference,_ as isResource,nn as isResourceType,Yt as isResourceTypeSchema,si as isSliceDefinitionWithTypes,to as isString,Sn as isStringArray,io as isTextObject,ru as isUUID,fr as isValidDate,du as isValidHostname,wn as lazy,Jt as loadDataType,rr as matchDiscriminant,fs as matchesAccessPolicy,Pn as matchesRange,Tt as matchesSearchRequest,Ba as multipleMatches,oi as normalizeCreateBinaryOptions,Bs as normalizeCreatePdfOptions,Ri as normalizeErrorString,He as normalizeOperationOutcome,Wr as notFound,Na as notModified,Ci as operationOutcomeIssueToString,Hr as operationOutcomeToString,Al as parseCriteriaAsSearchRequest,yr as parseFhirPath,of as parseFilterParameter,cf as parseHl7DateTime,Ct as parseJWTPayload,lf as parseLogLevel,_p as parseMappingLanguage,$o as parseParameter,Qc as parseReference,wl as parseSearchDefinition,Z as parseSearchRequest,Pl as parseSearchUrl,Qt as parseStructureDefinition,Ol as parseXFhirQuery,au as preciseEquals,uu as preciseGreaterThan,uo as preciseGreaterThanOrEquals,cu as preciseLessThan,co as preciseLessThanOrEquals,su as preciseRound,Ua as preconditionFailed,us as projectAdminResourceTypes,cs as protectedResourceTypes,Ye as removeDuplicates,fu as removeProfileFromResource,ys as reorderBundle,tt as resolveId,Ed as resourceMatchesSubscriptionCriteria,$l as satisfiedAccessPolicy,Cr as serializeFhircastSubscriptionRequest,Gr as serverError,nu as setCodeBySystem,eu as setIdentifier,U as singleton,ur as sleep,nt as sortStringArray,lr as splitN,vt as splitSearchOnComma,yf as streamToBuffer,Tn as stringify,Vn as stringifyTypedValue,Hp as structureMapTransform,cc as subsetResource,L as toJsBoolean,qc as toPeriod,x as toTypedValue,qa as tooManyRequests,Ae as tryGetDataType,Xn as tryGetJwtExpiration,sn as tryGetProfile,Fa as unauthorized,Rt as validateFhircastSubscriptionRequest,Nc as validateResource,mf as validateResourceType,h as validationError,ze as validationRegexes};
|
|
44
44
|
//# sourceMappingURL=index.mjs.map
|