@medplum/core 2.2.5 → 2.2.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.
@@ -1,6 +1,6 @@
1
- var Ee=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},j=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 at(e,this.prefixParselets,this.infixParselets)}},at=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]}};function z(r){let e=de(r),t=On(r);return t===e?{reference:e}:{reference:e,display:t}}function de(r){return pe(r)?r.reference:`${r.resourceType}/${r.id}`}function tr(r){if(r)return pe(r)?r.reference.split("/")[1]:r.id}function ns(r){if(r?.reference===void 0)return;let[e,t]=r.reference.split("/");if(!(e===""||t===""||t===void 0))return[e,t]}function kn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function On(r){if(kn(r)){let e=Vn(r);if(e)return e}if(r.resourceType==="Device"){let e=Dn(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:de(r)}function Vn(r){let e=r.name;if(e&&e.length>0)return Ie(e[0])}function Dn(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function is(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=er(t);if(n)return n}else return er(e)}function er(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function os(r){return r?new Date(r):void 0}function Re(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let P=a*12+u-(i*12+o);l<s&&P--;let B=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:P,days:B}}function ss(r,e){let{years:t,months:n,days:i}=Re(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 as(r){let e={};return rr(r.item,e),e}function rr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),rr(t.item,e)}function cs(r){let e={};return nr(r.item,e),e}function nr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),nr(t.item,e)}function us(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 ls(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 ds(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function ir(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 or(r,e){return JSON.stringify(r,Nn,e?2:void 0)}function Nn(r,e){return!Fn(r)&&E(e)?void 0:e}function Fn(r){return!!/\d+$/.exec(r)}function E(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!_n(r):!1}function _n(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 Pe(r,e,t){return r===e||E(r)&&E(e)?!0:E(r)||E(e)?!1:Array.isArray(r)&&Array.isArray(e)?Mn(r,e):Array.isArray(r)||Array.isArray(e)?!1:Q(r)&&Q(e)?Ln(r,e,t):(Q(r)||Q(e),!1)}function Mn(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Pe(r[t],e[t]))return!1;return!0}function Ln(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(!Pe(o,s,i))return!1}return!0}function Ae(r,e){return E(r)?!0:E(e)?!1:Array.isArray(r)&&Array.isArray(e)?Un(r,e):Array.isArray(r)||Array.isArray(e)?!1:Q(r)&&Q(e)?Bn(r,e):Q(r)||Q(e)?!1:r===e}function Un(r,e){return e.every(t=>r.some(n=>Ae(n,t)))}function Bn(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ae(r[t],n))}function ut(r){return JSON.parse(JSON.stringify(r))}function ps(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function Q(r){return r!==null&&typeof r=="object"}function sr(r){return r.every(e=>typeof e=="string")}var ar=[];for(let r=0;r<256;r++)ar.push(r.toString(16).padStart(2,"0"));function cr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=ar[e[n]];return t.join("")}function ur(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 w(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ce(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function ct(r,e){return r.coding?.find(t=>t.system===e)?.code}function fs(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 ms(r,e,t,n){return r.qualifiedInterval?.find(i=>lr(i,e)&&jn(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function hs(r,e,t){return r.qualifiedInterval?.find(n=>lr(n,e)&&t.includes(n.condition))}function lr(r,e){return qn(r,e)&&$n(r,e)}function qn(r,e){return!r.gender||r.gender===e.gender}function $n(r,e){return!r.age||dr(Re(e.birthDate).years,r.age)}function jn(r,e,t){return!!r.range&&dr(e,r.range,t)}function dr(r,e,t){return(e.low?.value===void 0||Hn(r,e.low.value,t))&&(e.high?.value===void 0||Qn(r,e.high.value,t))}function ys(r,e){return parseFloat(r.toFixed(e))}function gs(r,e,t){return F(r,t)===F(e,t)}function xs(r,e,t){return F(r,t)<F(e,t)}function Ts(r,e,t){return F(r,t)>F(e,t)}function Qn(r,e,t){return F(r,t)<=F(e,t)}function Hn(r,e,t){return F(r,t)>=F(e,t)}function F(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function vs(r,e,t){return r.find(n=>typeof e=="string"?ct(n.code||{},t)===e:ct(n.code||{},t)===ct(e,t))}function we(r){if(r)return Array.isArray(r)?r:[r]}var lt=r=>new Promise(e=>{setTimeout(e,r)});function Ss(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);o<0&&(o=r.length),n.push(r.slice(0,o)),r=r.slice(o+e.length)}return r&&n.push(r),n}function Rs(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 Ie(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=re(r.text);if(n)return n}return t.join(" ").trim()}function Ps(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function As(r){return re(r.family)??""}function pt(r){return r instanceof Date&&!isNaN(r.getTime())}function Cs(r,e,t){if(!r)return"";let n=new Date(r);return pt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Gn(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return pt(n)?n.toLocaleTimeString(e,t):""}function dt(r,e,t){if(!r)return"";let n=new Date(r);return pt(n)?n.toLocaleString(e,t):""}function ws(r,e,t){return!r||!r.start&&!r.end?"":dt(r.start,e,t)+" - "+dt(r.end,e,t)}var Kn={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Wn={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},zn={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Is(r){if(!r)return"";let e=[];return Jn(e,r.repeat),r.event&&e.push(r.event.map(t=>dt(t)).join(", ")),w(e.join(" ").trim())}function Jn(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Kn[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Wn[i]):r.push("per "+n+" "+zn[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(w).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Gn(o)).join(", "))}function ks(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=ti(n.value,e),`> ${J(n,e)}`):`>= ${J(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ei(i.value,e),`< ${J(i,e)}`):`<= ${J(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${J(n,e)} - ${J(i,e)}`)}function J(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 Os(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Yn(r){if(!r)return"";let e=re(r.text);return e||(r.coding?r.coding.map(t=>Xn(t)).join(", "):"")}function Xn(r){return re(r?.display)??re(r?.code)??""}function Zn(r){if(!r)return"";if("component"in r)return r.component.map(t=>Zn(t)).join(" / ");if(r.valueQuantity)return J(r.valueQuantity);if(r.valueCodeableConcept)return Yn(r.valueCodeableConcept);let e=re(r.valueString);return e||""}function re(r){return typeof r=="string"?r:void 0}function ei(r,e,t=1){return(pr(r,e)+t)*Math.pow(10,-e)}function ti(r,e,t=1){return(pr(r,e)-t)*Math.pow(10,-e)}function pr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var ri={"http://hl7.org/fhirpath/System.String":"string"};function Ds(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:ri[t.code]??t.code})),e}function ni(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 fr(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,ni(i,o)])),constraints:[],innerTypes:[]};return e}var mr={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"}]},maxDosePerLifetime:{type:[{code:"Quantity"}]}}},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:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{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"}]},high:{type:[{code:"Quantity"}]}}},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"}]},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 d(r){return[{type:c.boolean,value:r}]}function g(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:b(r)?{type:c.Quantity,value:r}:M(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function V(r){return r.length===0?!1:!!r[0].value}function _(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){if(!r.value)return;let t=Ve(r.type,e);return t?oi(r.value,e,t):si(r,e)}function oi(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined",s;if(t.path.endsWith("[x]")){let a=t.path.split(".").pop().replace("[x]","");for(let u of n){let l=a+w(u.code);if(i=r[l],s=r["_"+l],i!==void 0||s!==void 0){o=u.code;break}}}else console.assert(n.length===1,"Expected single type",t.path),i=r[e],o=n[0].code,s=r["_"+e];if(s)if(Array.isArray(i))for(let a=0;a<Math.max(i.length,s.length);a++)i[a]=xr(i[a],s[a]);else i=xr(i,s);if(!E(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>hr(a,o)):hr(i,o)}function hr(r,e){return e==="Resource"&&M(r)&&(e=r.resourceType),{type:e,value:r}}function si(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 c){let o=e+w(i);if(o in t){n=t[o];break}}if(!E(n))return Array.isArray(n)?n.map(g):g(n)}function ke(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(V(Tr(t,i))){n=!0;break}n||e.push(t)}return e}function ft(r){return d(!V(r))}function mt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>V(Tr(t,e[n]))))}function Tr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):b(t)&&b(n)?d(vr(t,n)):d(typeof t=="object"&&typeof n=="object"?yt(r,e):t===n)}function ht(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(yr),e.sort(yr),d(r.every((t,n)=>V(ai(t,e[n])))))}function ai(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"?d(Math.abs(s-a)<.01):b(s)&&b(a)?d(vr(s,a)):d(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"?yt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function yr(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 Oe(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return ci(t);case"Quantity":return b(t);default:return typeof t=="object"&&t?.resourceType===e}}function ci(r){return!!(r&&typeof r=="object"&&"start"in r)}function b(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function vr(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 yt(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(gr(o)&&gr(s)){if(!yt(o,s))return!1}else if(o!==s)return!1}return!0}function gr(r){return r!==null&&typeof r=="object"}function xr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ui(r??{},e)}return r}function ui(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}var gt="ok",De="created",xt="gone",Tt="not-modified",vt="not-found",Sr="unauthorized",Er="forbidden",br="too-many-requests",Ne="accepted",Bs={resourceType:"OperationOutcome",id:gt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},qs={resourceType:"OperationOutcome",id:De,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},$s={resourceType:"OperationOutcome",id:Tt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Rr={resourceType:"OperationOutcome",id:vt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},js={resourceType:"OperationOutcome",id:Sr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Qs={resourceType:"OperationOutcome",id:Er,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Hs={resourceType:"OperationOutcome",id:xt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Gs={resourceType:"OperationOutcome",id:br,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Ks(r){return{resourceType:"OperationOutcome",id:Ne,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function I(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Ws(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Fe(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function St(r){return r.id===gt||r.id===De||r.id===Tt||r.id===Ne}function zs(r){return r.id===De}function Js(r){return r.id===Ne}function Ys(r){return r.id===vt}function Xs(r){return r.id===xt}function Zs(r){switch(r.id){case gt:return 200;case De:return 201;case Ne:return 202;case Tt:return 304;case Sr:return 401;case Er:return 403;case vt:return 404;case xt:return 410;case br:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function ea(r,e){if(!St(r)||e===void 0)throw new p(r)}var p=class extends Error{constructor(t,n){super(Pr(t));this.outcome=t,this.cause=n}};function _e(r){return r instanceof p?r.outcome:Fe(r)?r:I(li(r))}function li(r){return r?typeof r=="string"?r:r instanceof Error?r.message:Fe(r)?Pr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Pr(r){let e=r.issue?.map(di)??[];return e.length>0?e.join("; "):"Unknown error"}function di(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 Et(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function y(r,e){return Et("structure",e,r)}function Ar(r,e){return Et("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Cr(r,e,t,n){return Et("processing",e,r,{...n,error:t})}function At(r){return new Rt(r).parse()}var fe=fr(mr),Ct=Object.create(null),wr=Object.create(null);function wt(r){let e;return r?(e=wr[r],e||(e=wr[r]=Object.create(null))):e=fe,e}function It(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)pi(n,e)}function pi(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=At(r),n=wt(e);n[r.name]=t,e&&r.url===e&&(Ct[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Vr(){return fe}function Dr(r){return!!fe[r]}function Nr(r,e){return wt(e)[r]}function ie(r,e){let t=wt(e)[r];if(!t)throw new p(I("Unknown data type: "+r));return t}function Fr(r){let e=fe[r];return e&&kt(e)}function _r(r){return!!Ct[r]}function la(r){return Ct[r]}var Rt=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:yi(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=bt(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[bt(e,n.path)]=t;break}n=n.parent}if(!n){let i=bt(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&&!ne(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Pt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:ne(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){hi(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&&!ne(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!ne(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!ne(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(ne(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);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)}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Pt(e)),n||(n=ir(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=kr(e.max),n=e.base?.max?kr(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:Or(A(i,"fixed[x]")),pattern:Or(A(i,"pattern[x]")),binding:e.binding}}};function da(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=fe[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+w(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!fi.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(Ir):[Ir]},r}var Ir={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},fi=["resourceType","id","meta"];function kr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function bt(r,e=""){return mi(r.path,e)}function mi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function ne(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Or(r){return Array.isArray(r)&&r.length>0?r[0]:E(r)?void 0:r}function hi(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 yi(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}var c={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 xa(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Ot(t)}}function Ot(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 Pt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?gi((r.base?.path??r.path)?.split(".")):e}function gi(r){return r.length===1?r[0]:r.map(w).join("")}function kt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Ta(){return Object.values(Vr()).filter(kt).map(r=>r.name)}function va(r){return D.types[r]?.searchParams}function Sa(r,e){return D.types[r]?.searchParams?.[e]}function Ea(r){let e=r.replaceAll("[x]","").split(".").pop();return xi(e)}function xi(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(vi).join(" ").replace("_"," ").replace(/\s+/g," ")}var Ti=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function vi(r){let e=r.toUpperCase();return r===e?r:Ti.has(e)?e:e.charAt(0)+r.slice(1)}function Ve(r,e){let t=Nr(r);if(t)return Si(t.elements,e)}function Si(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 M(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function pe(r){return!!(r&&typeof r=="object"&&"reference"in r)}var D={types:{}};function Lr(r){switch(r.type){case c.uuid:case c.uri:case c.url:case c.string:case c.oid:case c.markdown:case c.id:case c.code:case c.canonical:case c.base64Binary:case c.SystemString:case c.date:case c.dateTime:case c.instant:return r.value;case c.Identifier:return`${r.value.system??""}|${r.value.value}`;case c.Coding:return Mr(r.value);case c.CodeableConcept:return r.value.coding?.map(Mr).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ie(r.value);case c.unsignedInt:case c.positiveInt:case c.integer:case c.decimal:return r.value.toString();case c.boolean:return r.value?"true":"false";case c.Extension:return r.value.url;case c.ContactPoint:return r.value.value;case c.Quantity:case c.Age:case c.Count:case c.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case c.Reference:return r.value.reference;default:return M(r.value)?z(r.value).reference:JSON.stringify(r)}}function Mr(r){return r?`${r.system??""}|${r.code}`:""}function oe(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 me=()=>[],S={empty:(r,e)=>d(e.length===0),exists:(r,e,t)=>t?d(e.filter(n=>V(t.eval(r,[n]))).length>0):d(e.length>0),all:(r,e,t)=>d(e.every(n=>V(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:me,supersetOf:me,count:(r,e)=>[{type:c.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===S.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>V(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:me,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 ke([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[g(!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 V(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(S.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(S.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:oe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(S.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:oe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(S.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(S.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return b(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(S.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return t==null?[]:b(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(S.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:oe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(S.toTime(r,e).length===1),indexOf:(r,e,t)=>k((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>k((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>k((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>k((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>k((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>k(t=>t.toUpperCase(),r,e),lower:(r,e)=>k(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>k((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>k(t=>t.length,r,e),toChars:(r,e)=>k(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>L(Math.abs,r,e),ceiling:(r,e)=>L(Math.ceil,r,e),exp:(r,e)=>L(Math.exp,r,e),floor:(r,e)=>L(Math.floor,r,e),ln:(r,e)=>L(Math.log,r,e),log:(r,e,t)=>L((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>L(Math.pow,r,e,t),round:(r,e)=>L(Math.round,r,e),sqrt:(r,e)=>L(Math.sqrt,r,e),truncate:(r,e)=>L(t=>t|0,r,e),children:me,descendants:me,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=S.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=S.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Re(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof q?n=t.name:t instanceof H&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:Oe(i,n)})):[]},not:(r,e)=>S.toBoolean(r,e).map(t=>({type:c.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 g(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:c.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:c.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:c.BackboneElement,value:{namespace:"System",name:"Integer"}}:M(t)?{type:c.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:c.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:c.boolean,value:o.value?.resourceType===i}))}};function k(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(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(g):[g(o)]}function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(t,1),o=b(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(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function U(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 Me=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},N=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},q=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return M(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},Le=class{eval(){return[]}toString(){return"{}"}},Ue=class extends Ee{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()}},Y=class extends j{constructor(e,t){super("as",e,t)}eval(e,t){return S.ofType(e,this.left.eval(e,t),this.right)}},v=class extends j{},R=class extends v{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,u=b(s)?s.value:s,l=b(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?d(f):b(s)?[{type:c.Quantity,value:{...s,value:f}}]:[g(f)]}},Be=class extends j{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:c.string,value:o.map(s=>s.value).join("")}]:o}},qe=class extends v{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},$e=class extends v{constructor(e,t){super("in",e,t)}eval(e,t){let n=_(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},H=class extends j{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 j{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ke([...n,...i])}},je=class extends v{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return mt(n,i)}},Qe=class extends v{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ft(mt(n,i))}},He=class extends v{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ht(n,i)}},Ge=class extends v{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ft(ht(n,i))}},X=class extends v{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(Oe(n[0],i))}},Ke=class extends v{constructor(e,t){super("and",e,t)}eval(e,t){let n=_(this.left.eval(e,t),"boolean"),i=_(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},We=class extends v{constructor(e,t){super("or",e,t)}eval(e,t){let n=_(this.left.eval(e,t),"boolean"),i=_(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},ze=class extends v{constructor(e,t){super("xor",e,t)}eval(e,t){let n=_(this.left.eval(e,t),"boolean"),i=_(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},Je=class extends v{constructor(e,t){super("implies",e,t)}eval(e,t){let n=_(this.left.eval(e,t),"boolean"),i=_(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},$=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=S[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(", ")})`}},Z=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 Ei=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],G=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;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&bi(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 bi(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ei.includes(r.value)))}var he=["true","false"],ye=["!=","!~","<=",">=","{}","->"];function Ur(r){return new G(r,he,ye).tokenize()}var m={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},Ri={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Pi={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:m.Indexer},Ai={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:m.FunctionCall};function Ci(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 ge(){return new be().registerPrefix("String",{parse:(r,e)=>new N({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new N({type:c.dateTime,value:oe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new N({type:c.Quantity,value:Ci(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new N({type:e.value.includes(".")?c.decimal:c.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new N({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new N({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new Le}).registerPrefix("(",Ri).registerInfix("[",Pi).registerInfix("(",Ai).prefix("+",m.UnaryAdd,(r,e)=>new Ue("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new R("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new H(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new R("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new R("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new R("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new R("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new se(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new je(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new Qe(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new He(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new Ge(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new R("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new R("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new R(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new R(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new Be(r,t)).infixLeft("and",m.And,(r,e,t)=>new Ke(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new qe(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new R("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new $e(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new R("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new We(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new ze(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Je(r,t))}var wi=ge();function Vt(r){return new Me(r,wi.construct(Ur(r)).consumeAndParse())}function ae(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]=g(t[n]))}return K(r,t).map(n=>n.value)}function K(r,e,t){let n=t??{};return Vt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Br=(f=>(f.BOOLEAN="BOOLEAN",f.NUMBER="NUMBER",f.QUANTITY="QUANTITY",f.TEXT="TEXT",f.REFERENCE="REFERENCE",f.CANONICAL="CANONICAL",f.DATE="DATE",f.DATETIME="DATETIME",f.PERIOD="PERIOD",f.UUID="UUID",f))(Br||{});function qr(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=ki(r,e)),t}function Ii(r,e,t){let n=D.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function ki(r,e){let t=e.code,n=Di(t),i=jr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=xe(a);u.length===1&&u[0]instanceof v?o.propertyTypes.add("boolean"):$r(o,xe(a),r,1)}let s={columnName:n,type:Ni(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Ii(r,t,s),s}function $r(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){Oi(r,i);return}let o=i.toString(),s=Ve(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof Z&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;Vi(f)&&(f=s.type[0].code),$r(r,e,f,u)}}function Oi(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 X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Vi(r){return r==="Element"||r==="BackboneElement"}function Di(r){return r.split("-").reduce((e,t,n)=>e+(n?w(t):t),"")}function Ni(r,e){switch(r.type){case"date":return e.size===1&&e.has(c.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(c.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(c.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function jr(r,e){let t=[],n=Vt(e);return Dt(r,n.child,t),t}function sc(r,e){let t=jr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Dt(r,e,t){e instanceof se?(Dt(r,e.left,t),Dt(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function xe(r){if(r instanceof Y||r instanceof Z)return[xe(r.left),r].flat();if(r instanceof v)return[r];if(r instanceof H)return[xe(r.left),xe(r.right)].flat();if(r instanceof $){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var pc=20,Fi=(x=>(x.EQUALS="eq",x.NOT_EQUALS="ne",x.GREATER_THAN="gt",x.LESS_THAN="lt",x.GREATER_THAN_OR_EQUALS="ge",x.LESS_THAN_OR_EQUALS="le",x.STARTS_AFTER="sa",x.ENDS_BEFORE="eb",x.APPROXIMATELY="ap",x.CONTAINS="contains",x.EXACT="exact",x.TEXT="text",x.NOT="not",x.ABOVE="above",x.BELOW="below",x.IN="in",x.NOT_IN="not-in",x.OF_TYPE="of-type",x.MISSING="missing",x.IDENTIFIER="identifier",x.ITERATE="iterate",x))(Fi||{}),Gr={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"},Ft={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function fc(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return Wr(r,t)}function Kr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Wr(e,r.searchParams.entries())}function mc(r){return Kr(new URL(r,"https://example.com/"))}function _t(r){return Kr(new URL(r,"https://api.medplum.com/"))}function Wr(r,e){let t={resourceType:r};for(let[n,i]of e)_i(t,n,i);return t}function _i(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==="_has"||e.includes(".")){Nt(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Mi(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=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=D.types[r.resourceType]?.searchParams?.[n];s?Nt(r,Li(s,i,t)):Nt(r,qi(n,i,t))}}}function Mi(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 Li(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Ui(r,t);case"reference":case"string":case"token":case"uri":return Bi(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Ui(r,e){let{operator:t,value:n}=$i(e);return{code:r.code,operator:t,value:n}}function Bi(r,e,t){return{code:r.code,operator:ji(e),value:t}}function qi(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Ft&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function $i(r){let e=r.substring(0,2),t=Ft[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function ji(r){return Gr[r]??"eq"}function Qr(r){let e=r.split(":");if(e.includes("*"))throw new p(I("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(I(`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 p(I(`Invalid include value '${r}'`))}function Nt(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Qi=/{{([^{}]+)}}/g;function hc(r,e){return r=r.replaceAll(Qi,(t,n)=>{let i=K(n,[],e);return i.length!==1?"":Lr(i[0])}),_t(r)}function yc(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Hi(t))),r.sortRules&&r.sortRules.length>0&&e.push(Gi(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(Hr("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Hr("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Hi(r){let e=r.operator in Gr?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in Ft?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Gi(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Hr(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function zr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Ki(r,e,t))return!1}return!0}function Ki(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ae(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Wi(r,t,n);case"string":case"uri":return Jr(r,t,n);case"token":return zi(r,t,n);case"date":return Yi(r,t,n);default:return!1}}function Wi(r,e,t){let n=ae(t.expression,r),i=Ye(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(u=>u?.endsWith("/"+s))),a)return!i}return i}function zi(r,e,t){return qr(r.resourceType,t).type==="BOOLEAN"?Ji(r,e,t):Jr(r,e,t,!0)}function Ji(r,e,t){let n=ae(t.expression,r),i=e.value==="true",o=n.includes(i);return Ye(e.operator)?!o:o}function Jr(r,e,t,n){let i=ae(t.expression,r),o=e.value.split(","),s=Ye(e.operator);for(let a of i)for(let u of o)if(Mt(a,e.operator,u,n))return!s;return s}function Mt(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Mt(r,e,o,!1)&&(!s||Mt(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 Yi(r,e,t){let n=ae(t.expression,r),i=e.value.split(","),o=Ye(e.operator);for(let s of n)for(let a of i)if(Xi(s,e.operator,a))return!o;return o}function Xi(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 Ye(r){return r==="ne"||r==="not"}var Zi={resourceType:"*"},eo=["DomainConfiguration","JsonWebKey","Login"],to=["PasswordChangeRequest","Project","ProjectMembership","User"],ro=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(ro||{}),no=["read","vread","history","history-instance"];function Rc(r,e){if(r.resource){for(let t of r.resource)if(Lt(t.resourceType,e))return!0}return!1}function io(r,e){if(eo.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Lt(t.resourceType,e)&&!t.readonly)return!0}return!1}function Pc(r,e){let t=e.resourceType;return io(r,t)?oo(r,e,!1):!1}function oo(r,e,t){if(r.resource){for(let n of r.resource)if(Yr(e,t?"read":"update",n))return!0}return!1}function Ac(r,e,t){if(!t)return Zi;if(t.resource){for(let n of t.resource)if(Yr(r,e,n))return n}}function Yr(r,e,t){let n=r.resourceType;return!(!Lt(t.resourceType,n)||t.readonly&&!no.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!zr(r,_t(t.criteria)))}function Lt(r,e){return r===e||r==="*"&&!to.includes(e)}function Xr(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 Zr(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 Ut(){let r=new Uint32Array(28);return crypto.getRandomValues(r),cr(r.buffer)}async function en(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ee(){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 so(r){let e={};r=ut(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=ee(),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)=>ao(i,o,e),2);return co(JSON.parse(n))}function ao(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 co(r){let e=lo(r),{sorted:t,cycles:n}=uo(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 u=i[a],l={...u,request:{...u.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function uo(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 u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=1,s.push(o);let a=!1;for(let u of r[o])i(u,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 tn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(pe(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else tn(n,e)}}function lo(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&&tn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Nc(r){r=ut(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=ee());return so(e)}var Xe=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 O={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var Te=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}},Ze=class{constructor(){this.emitter=new Te}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var Bt={"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"},po=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],qt=["DiagnosticReport-update"];function nn(r){return qt.includes(r)}function on(r){if(qt.includes(r))throw new p(h(`'context.version' is required for '${r}'.`))}var fo={"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 mo(r){return po.includes(r)}function sn(r){return!!r.endpoint}function $t(r){if(!tt(r))throw new p(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 sn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function tt(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(!Bt[o])return!1;return!(sn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function rn(r,e,t,n){if(typeof e!="object")throw new p(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 p(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!mo(e.resourceType))throw new p(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 p(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function ho(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)rn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(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)rn(r,s,t,n)}}function yo(r,e){let t=new Map,n=fo[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));ho(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function jt(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(h("Must provide a topic."));if(!Bt[e])throw new p(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Bt).join(", ")}`));if(typeof t!="object")throw new p(h("context must be a context object or array of context objects."));if(qt.includes(e)&&!n)throw new p(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return yo(e,i),{timestamp:new Date().toISOString(),id:ee(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var et=class extends Ze{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new p(h("Subscription request should contain an endpoint."));if(!tt(t))throw new p(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function go(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Xr(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 an(r){return r.split(".").length===3}function Qt(r){let[e,t,n]=r.split(".");return go(t)}function cn(r){try{return typeof Qt(r).login_id=="string"}catch{return!1}}var xo,C=class{constructor(e){this[xo]="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)}};xo=Symbol.toStringTag;var ve=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Ht)}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?or(t):void 0)}},Ht=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]}},un=class extends ve{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 gu="2.2.5-2c1f681f",To=O.FHIR_JSON+", */*; q=0.1",vo="https://api.medplum.com/",So=1e3,Eo=6e4,ln="Binary/",dn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},bo=(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))(bo||{}),Ro=(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))(Ro||{}),Po=(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))(Po||{}),Ao=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Ao||{}),pn=class extends Te{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??Co(),this.storage=t?.storage??new ve,this.createPdfImpl=t?.createPdf,this.baseUrl=mn(t?.baseUrl??vo),this.fhirBaseUrl=mn(rt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=rt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=rt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=rt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??Eo,this.cacheTime>0?this.requestCache=new Xe(t?.resourceCacheSize??So):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.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().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(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new C(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,O.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,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:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new C((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new C(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new C(this.search(t,n,i).then(yn));return this.setCacheEntry(s,u),u}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),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield yn(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return dn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new C(Promise.reject(new Error("Missing reference")));if(i==="system")return new C(Promise.resolve(dn));let[o,s]=i.split("/");return!o||!s?new C(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Dr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=`{
1
+ var Re=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()}`}},Pe=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 ut(e,this.prefixParselets,this.infixParselets)}},ut=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 lt="ok",Ce="created",dt="gone",pt="not-modified",ft="not-found",tr="unauthorized",rr="forbidden",nr="too-many-requests",Ae="accepted",hs={resourceType:"OperationOutcome",id:lt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},gs={resourceType:"OperationOutcome",id:Ce,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},ys={resourceType:"OperationOutcome",id:pt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},ir={resourceType:"OperationOutcome",id:ft,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},xs={resourceType:"OperationOutcome",id:tr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Ts={resourceType:"OperationOutcome",id:rr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},vs={resourceType:"OperationOutcome",id:dt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ss={resourceType:"OperationOutcome",id:nr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Es(r){return{resourceType:"OperationOutcome",id:Ae,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function v(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function bs(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ne(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function mt(r){return r.id===lt||r.id===Ce||r.id===pt||r.id===Ae}function Rs(r){return r.id===Ce}function Ps(r){return r.id===Ae}function Cs(r){return r.id===ft}function As(r){return r.id===dt}function ws(r){switch(r.id){case lt:return 200;case Ce:return 201;case Ae:return 202;case pt:return 304;case tr:return 401;case rr:return 403;case ft:return 404;case dt:return 410;case nr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Is(r,e){if(!mt(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(t,n){super(or(t));this.outcome=t,this.cause=n}};function we(r){return r instanceof d?r.outcome:ne(r)?r:v(Nn(r))}function Nn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ne(r)?or(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function or(r){let e=r.issue?.map(Fn)??[];return e.length>0?e.join("; "):"Unknown error"}function Fn(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 ht(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function g(r,e){return ht("structure",e,r)}function sr(r,e){return ht("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function ar(r,e,t,n){return ht("processing",e,r,{...n,error:t})}function J(r){let e=pe(r),t=_n(r);return t===e?{reference:e}:{reference:e,display:t}}function pe(r){return fe(r)?r.reference:`${r.resourceType}/${r.id}`}function ur(r){if(r)return fe(r)?r.reference.split("/")[1]:r.id}function Ns(r){if(r?.reference===void 0)throw new d(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(h("Unable to parse reference string."));return[e,t]}function Mn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function _n(r){if(Mn(r)){let e=Ln(r);if(e)return e}if(r.resourceType==="Device"){let e=Un(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:pe(r)}function Ln(r){let e=r.name;if(e&&e.length>0)return Ne(e[0])}function Un(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Fs(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=cr(t);if(n)return n}else return cr(e)}function cr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Ms(r){return r?new Date(r):void 0}function Ie(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let E=a*12+u-(i*12+o);l<s&&E--;let q=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:E,days:q}}function _s(r,e){let{years:t,months:n,days:i}=Ie(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 Ls(r){let e={};return lr(r.item,e),e}function lr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),lr(t.item,e)}function Us(r){let e={};return dr(r.item,e),e}function dr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),dr(t.item,e)}function Bs(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 qs(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 js(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function pr(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 fr(r,e){return JSON.stringify(r,Bn,e?2:void 0)}function Bn(r,e){return!qn(r)&&R(e)?void 0:e}function qn(r){return!!/\d+$/.exec(r)}function R(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!jn(r):!1}function jn(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 ke(r,e,t){return r===e||R(r)&&R(e)?!0:R(r)||R(e)?!1:Array.isArray(r)&&Array.isArray(e)?$n(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?Qn(r,e,t):(H(r)||H(e),!1)}function $n(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ke(r[t],e[t]))return!1;return!0}function Qn(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(!ke(o,s,i))return!1}return!0}function Oe(r,e){return R(r)?!0:R(e)?!1:Array.isArray(r)&&Array.isArray(e)?Hn(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?Gn(r,e):H(r)||H(e)?!1:r===e}function Hn(r,e){return e.every(t=>r.some(n=>Oe(n,t)))}function Gn(r,e){return Object.entries(e).every(([t,n])=>t in r&&Oe(r[t],n))}function yt(r){return JSON.parse(JSON.stringify(r))}function $s(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function H(r){return r!==null&&typeof r=="object"}function mr(r){return r.every(e=>typeof e=="string")}var hr=[];for(let r=0;r<256;r++)hr.push(r.toString(16).padStart(2,"0"));function gr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=hr[e[n]];return t.join("")}function yr(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 I(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ve(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function gt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Qs(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 Hs(r,e,t,n){return r.qualifiedInterval?.find(i=>xr(i,e)&&zn(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Gs(r,e,t){return r.qualifiedInterval?.find(n=>xr(n,e)&&t.includes(n.condition))}function xr(r,e){return Kn(r,e)&&Wn(r,e)}function Kn(r,e){return!r.gender||r.gender===e.gender}function Wn(r,e){return!r.age||Tr(Ie(e.birthDate).years,r.age)}function zn(r,e,t){return!!r.range&&Tr(e,r.range,t)}function Tr(r,e,t){return(e.low?.value===void 0||Yn(r,e.low.value,t))&&(e.high?.value===void 0||Jn(r,e.high.value,t))}function Ks(r,e){return parseFloat(r.toFixed(e))}function Ws(r,e,t){return F(r,t)===F(e,t)}function zs(r,e,t){return F(r,t)<F(e,t)}function Js(r,e,t){return F(r,t)>F(e,t)}function Jn(r,e,t){return F(r,t)<=F(e,t)}function Yn(r,e,t){return F(r,t)>=F(e,t)}function F(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Ys(r,e,t){return r.find(n=>typeof e=="string"?gt(n.code||{},t)===e:gt(n.code||{},t)===gt(e,t))}function De(r){if(r)return Array.isArray(r)?r:[r]}var xt=r=>new Promise(e=>{setTimeout(e,r)});function Xs(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);o<0&&(o=r.length),n.push(r.slice(0,o)),r=r.slice(o+e.length)}return r&&n.push(r),n}function Zs(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ra(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 Ne(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=ie(r.text);if(n)return n}return t.join(" ").trim()}function na(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function ia(r){return ie(r.family)??""}function vt(r){return r instanceof Date&&!isNaN(r.getTime())}function oa(r,e,t){if(!r)return"";let n=new Date(r);return vt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Xn(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return vt(n)?n.toLocaleTimeString(e,t):""}function Tt(r,e,t){if(!r)return"";let n=new Date(r);return vt(n)?n.toLocaleString(e,t):""}function sa(r,e,t){return!r||!r.start&&!r.end?"":Tt(r.start,e,t)+" - "+Tt(r.end,e,t)}var Zn={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ei={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},ti={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function aa(r){if(!r)return"";let e=[];return ri(e,r.repeat),r.event&&e.push(r.event.map(t=>Tt(t)).join(", ")),I(e.join(" ").trim())}function ri(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Zn[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ei[i]):r.push("per "+n+" "+ti[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(I).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Xn(o)).join(", "))}function ca(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=ai(n.value,e),`> ${Y(n,e)}`):`>= ${Y(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=si(i.value,e),`< ${Y(i,e)}`):`<= ${Y(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${Y(n,e)} - ${Y(i,e)}`)}function Y(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 ua(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function ni(r){if(!r)return"";let e=ie(r.text);return e||(r.coding?r.coding.map(t=>ii(t)).join(", "):"")}function ii(r){return ie(r?.display)??ie(r?.code)??""}function oi(r){if(!r)return"";if("component"in r)return r.component.map(t=>oi(t)).join(" / ");if(r.valueQuantity)return Y(r.valueQuantity);if(r.valueCodeableConcept)return ni(r.valueCodeableConcept);let e=ie(r.valueString);return e||""}function ie(r){return typeof r=="string"?r:void 0}function si(r,e,t=1){return(vr(r,e)+t)*Math.pow(10,-e)}function ai(r,e,t=1){return(vr(r,e)-t)*Math.pow(10,-e)}function vr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var ci={"http://hl7.org/fhirpath/System.String":"string"};function da(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:ci[t.code]??t.code})),e}function ui(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 Sr(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,ui(i,o)])),constraints:[],innerTypes:[]};return e}var Er={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"}]},maxDosePerLifetime:{type:[{code:"Quantity"}]}}},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:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{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"}]},high:{type:[{code:"Quantity"}]}}},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"}]},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 p(r){return[{type:c.boolean,value:r}]}function y(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:P(r)?{type:c.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function D(r){return r.length===0?!1:!!r[0].value}function M(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){if(!r.value)return;let t=_e(r.type,e);return t?di(r.value,e,t):pi(r,e)}function di(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined",s;if(t.path.endsWith("[x]")){let a=t.path.split(".").pop().replace("[x]","");for(let u of n){let l=a+I(u.code);if(i=r[l],s=r["_"+l],i!==void 0||s!==void 0){o=u.code;break}}}else console.assert(n.length===1,"Expected single type",t.path),i=r[e],o=n[0].code,s=r["_"+e];if(s)if(Array.isArray(i))for(let a=0;a<Math.max(i.length,s.length);a++)i[a]=Cr(i[a],s[a]);else i=Cr(i,s);if(!R(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>br(a,o)):br(i,o)}function br(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function pi(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 c){let o=e+I(i);if(o in t){n=t[o];break}}if(!R(n))return Array.isArray(n)?n.map(y):y(n)}function Fe(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(D(Ar(t,i))){n=!0;break}n||e.push(t)}return e}function St(r){return p(!D(r))}function Et(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?p(!1):p(r.every((t,n)=>D(Ar(t,e[n]))))}function Ar(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):P(t)&&P(n)?p(wr(t,n)):p(typeof t=="object"&&typeof n=="object"?Rt(r,e):t===n)}function bt(r,e){return r.length===0&&e.length===0?p(!0):r.length!==e.length?p(!1):(r.sort(Rr),e.sort(Rr),p(r.every((t,n)=>D(fi(t,e[n])))))}function fi(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):P(s)&&P(a)?p(wr(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"?Rt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Rr(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 Me(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return mi(t);case"Quantity":return P(t);default:return typeof t=="object"&&t?.resourceType===e}}function mi(r){return!!(r&&typeof r=="object"&&"start"in r)}function P(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function wr(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 Rt(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(Pr(o)&&Pr(s)){if(!Rt(o,s))return!1}else if(o!==s)return!1}return!0}function Pr(r){return r!==null&&typeof r=="object"}function Cr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return hi(r??{},e)}return r}function hi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function wt(r){return new Ct(r).parse()}var me=Sr(Er),It=Object.create(null),Ir=Object.create(null);function kt(r){let e;return r?(e=Ir[r],e||(e=Ir[r]=Object.create(null))):e=me,e}function Ot(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)gi(n,e)}function gi(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=wt(r),n=kt(e);n[r.name]=t,e&&r.url===e&&(It[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Dr(){return me}function Nr(r){return!!me[r]}function Le(r,e){return kt(e)[r]}function se(r,e){let t=kt(e)[r];if(!t)throw new d(v("Unknown data type: "+r));return t}function Fr(r){let e=me[r];return e&&Vt(e)}function Mr(r){return!!It[r]}function Ca(r){return It[r]}var Ct=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=Pt(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[Pt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Pt(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&&!oe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:At(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:oe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Ti(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&&!oe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!oe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!oe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(oe(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);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)}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=At(e)),n||(n=pr(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=Or(e.max),n=e.base?.max?Or(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:Vr(A(i,"fixed[x]")),pattern:Vr(A(i,"pattern[x]")),binding:e.binding}}};function Aa(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=me[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+I(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!yi.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(kr):[kr]},r}var kr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},yi=["resourceType","id","meta"];function Or(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Pt(r,e=""){return xi(r.path,e)}function xi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function oe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Vr(r){return Array.isArray(r)&&r.length>0?r[0]:R(r)?void 0:r}function Ti(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}var c={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 Na(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Dt(t)}}function Dt(r){for(let e of r.base??[]){let t=N.types[e];t||(t={searchParamsDetails:{}},N.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 At(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Si((r.base?.path??r.path)?.split(".")):e}function Si(r){return r.length===1?r[0]:r.map(I).join("")}function Vt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Fa(){return Object.values(Dr()).filter(Vt).map(r=>r.name)}function Ma(r){return N.types[r]?.searchParams}function _a(r,e){return N.types[r]?.searchParams?.[e]}function La(r){let e=r.replaceAll("[x]","").split(".").pop();return Ei(e)}function Ei(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(Ri).join(" ").replace("_"," ").replace(/\s+/g," ")}var bi=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Ri(r){let e=r.toUpperCase();return r===e?r:bi.has(e)?e:e.charAt(0)+r.slice(1)}function _e(r,e){let t=Le(r);if(t)return Pi(t.elements,e)}function Pi(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 fe(r){return!!(r&&typeof r=="object"&&"reference"in r)}var N={types:{}};function Lr(r){switch(r.type){case c.uuid:case c.uri:case c.url:case c.string:case c.oid:case c.markdown:case c.id:case c.code:case c.canonical:case c.base64Binary:case c.SystemString:case c.date:case c.dateTime:case c.instant:return r.value;case c.Identifier:return`${r.value.system??""}|${r.value.value}`;case c.Coding:return _r(r.value);case c.CodeableConcept:return r.value.coding?.map(_r).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ne(r.value);case c.unsignedInt:case c.positiveInt:case c.integer:case c.decimal:return r.value.toString();case c.boolean:return r.value?"true":"false";case c.Extension:return r.value.url;case c.ContactPoint:return r.value.value;case c.Quantity:case c.Age:case c.Count:case c.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case c.Reference:return r.value.reference;default:return _(r.value)?J(r.value).reference:JSON.stringify(r)}}function _r(r){return r?`${r.system??""}|${r.code}`:""}function ae(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 he=()=>[],b={empty:(r,e)=>p(e.length===0),exists:(r,e,t)=>t?p(e.filter(n=>D(t.eval(r,[n]))).length>0):p(e.length>0),all:(r,e,t)=>p(e.every(n=>D(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:he,supersetOf:he,count:(r,e)=>[{type:c.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===b.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>D(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:he,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 Fe([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[y(!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 D(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="boolean")return[{type:c.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(b.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:p(b.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:ae(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:p(b.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:ae(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:p(b.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:p(b.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return P(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:p(b.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return t==null?[]:P(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:p(b.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:ae("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:p(b.toTime(r,e).length===1),indexOf:(r,e,t)=>k((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>k((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>k((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>k((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>k((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>k(t=>t.toUpperCase(),r,e),lower:(r,e)=>k(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>k((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>k(t=>t.length,r,e),toChars:(r,e)=>k(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>L(Math.abs,r,e),ceiling:(r,e)=>L(Math.ceil,r,e),exp:(r,e)=>L(Math.exp,r,e),floor:(r,e)=>L(Math.floor,r,e),ln:(r,e)=>L(Math.log,r,e),log:(r,e,t)=>L((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>L(Math.pow,r,e,t),round:(r,e)=>L(Math.round,r,e),sqrt:(r,e)=>L(Math.sqrt,r,e),truncate:(r,e)=>L(t=>t|0,r,e),children:he,descendants:he,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=b.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=b.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Ie(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof B?n=t.name:t instanceof G&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:Me(i,n)})):[]},not:(r,e)=>b.toBoolean(r,e).map(t=>({type:c.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 y(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:c.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:c.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:c.BackboneElement,value:{namespace:"System",name:"Integer"}}:_(t)?{type:c.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:c.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:c.boolean,value:o.value?.resourceType===i}))}};function k(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(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(y):[y(o)]}function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(t,1),o=P(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(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function U(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 Ue=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},O=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},B=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=e.variables[this.name];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)}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}},Be=class{eval(){return[]}toString(){return"{}"}},qe=class extends Re{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()}},X=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return b.ofType(e,this.left.eval(e,t),this.right)}},S=class extends Q{},C=class extends S{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,u=P(s)?s.value:s,l=P(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?p(f):P(s)?[{type:c.Quantity,value:{...s,value:f}}]:[y(f)]}},je=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:c.string,value:o.map(s=>s.value).join("")}]:o}},$e=class extends S{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))}},Qe=class extends S{constructor(e,t){super("in",e,t)}eval(e,t){let n=M(this.left.eval(e,t)),i=this.right.eval(e,t);return n?p(i.some(o=>o.value===n.value)):[]}},G=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()}`}},ce=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 Fe([...n,...i])}},He=class extends S{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Et(n,i)}},Ge=class extends S{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return St(Et(n,i))}},Ke=class extends S{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return bt(n,i)}},We=class extends S{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return St(bt(n,i))}},Z=class extends S{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(Me(n[0],i))}},ze=class extends S{constructor(e,t){super("and",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?p(!0):n?.value===!1||i?.value===!1?p(!1):[]}},Je=class extends S{constructor(e,t){super("or",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?p(!1):n?.value||i?.value?p(!0):[]}},Ye=class extends S{constructor(e,t){super("xor",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return!n||!i?[]:p(n.value!==i.value)}},Xe=class extends S{constructor(e,t){super("implies",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?p(!0):!n||!i?[]:p(!1)}},j=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=b[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},ee=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 Ci=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=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;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&Ai(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 Ai(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ci.includes(r.value)))}var ge=["true","false"],ye=["!=","!~","<=",">=","{}","->"];function Ur(r){return new K(r,ge,ye).tokenize()}var m={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},wi={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ii={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ee(e,t)},precedence:m.Indexer},ki={parse(r,e){if(!(e instanceof B))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new j(e.name,t)},precedence:m.FunctionCall};function Oi(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 xe(){return new Pe().registerPrefix("String",{parse:(r,e)=>new O({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new O({type:c.dateTime,value:ae(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new O({type:c.Quantity,value:Oi(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new O({type:e.value.includes(".")?c.decimal:c.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new O({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new O({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new B(e.value)}).registerPrefix("{}",{parse:()=>new Be}).registerPrefix("(",wi).registerInfix("[",Ii).registerInfix("(",ki).prefix("+",m.UnaryAdd,(r,e)=>new qe("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new C("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new G(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new C("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new C("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new C("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new C("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new ce(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new He(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new Ge(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Ke(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new We(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new C("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new C("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new C(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new C(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new je(r,t)).infixLeft("and",m.And,(r,e,t)=>new ze(r,t)).infixLeft("as",m.As,(r,e,t)=>new X(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new $e(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new C("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Qe(r,t)).infixLeft("is",m.Is,(r,e,t)=>new Z(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new C("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Je(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Ye(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Xe(r,t))}var Vi=xe();function Nt(r){return new Ue(r,Vi.construct(Ur(r)).consumeAndParse())}function ue(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]=y(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return Nt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Br=(f=>(f.BOOLEAN="BOOLEAN",f.NUMBER="NUMBER",f.QUANTITY="QUANTITY",f.TEXT="TEXT",f.REFERENCE="REFERENCE",f.CANONICAL="CANONICAL",f.DATE="DATE",f.DATETIME="DATETIME",f.PERIOD="PERIOD",f.UUID="UUID",f))(Br||{});function qr(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=Ni(r,e)),t}function Di(r,e,t){let n=N.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ni(r,e){let t=e.code,n=_i(t),i=$r(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=Te(a);u.length===1&&u[0]instanceof S?o.propertyTypes.add("boolean"):jr(o,Te(a),r,1)}let s={columnName:n,type:Li(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Di(r,t,s),s}function jr(r,e,t,n){let i=e[n];if(i instanceof X){r.propertyTypes.add(i.right.toString());return}if(i instanceof j){Fi(r,i);return}let o=i.toString(),s=_e(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof ee&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;Mi(f)&&(f=s.type[0].code),jr(r,e,f,u)}}function Fi(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof Z){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Mi(r){return r==="Element"||r==="BackboneElement"}function _i(r){return r.split("-").reduce((e,t,n)=>e+(n?I(t):t),"")}function Li(r,e){switch(r.type){case"date":return e.size===1&&e.has(c.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(c.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(c.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function $r(r,e){let t=[],n=Nt(e);return Ft(r,n.child,t),t}function Ec(r,e){let t=$r(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Ft(r,e,t){e instanceof ce?(Ft(r,e.left,t),Ft(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Te(r){if(r instanceof X||r instanceof ee)return[Te(r.left),r].flat();if(r instanceof S)return[r];if(r instanceof G)return[Te(r.left),Te(r.right)].flat();if(r instanceof j){if(r.name==="where"&&!(r.args[0]instanceof Z))return[];if(r.name==="last")return[]}return[r]}var wc=20,Ui=(x=>(x.EQUALS="eq",x.NOT_EQUALS="ne",x.GREATER_THAN="gt",x.LESS_THAN="lt",x.GREATER_THAN_OR_EQUALS="ge",x.LESS_THAN_OR_EQUALS="le",x.STARTS_AFTER="sa",x.ENDS_BEFORE="eb",x.APPROXIMATELY="ap",x.CONTAINS="contains",x.EXACT="exact",x.TEXT="text",x.NOT="not",x.ABOVE="above",x.BELOW="below",x.IN="in",x.NOT_IN="not-in",x.OF_TYPE="of-type",x.MISSING="missing",x.IDENTIFIER="identifier",x.ITERATE="iterate",x))(Ui||{}),Gr={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"},_t={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Ic(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return Wr(r,t)}function Kr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Wr(e,r.searchParams.entries())}function kc(r){return Kr(new URL(r,"https://example.com/"))}function Lt(r){return Kr(new URL(r,"https://api.medplum.com/"))}function Wr(r,e){let t={resourceType:r};for(let[n,i]of e)Bi(t,n,i);return t}function Bi(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==="_has"||e.includes(".")){Mt(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":qi(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=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=N.types[r.resourceType]?.searchParams?.[n];s?Mt(r,ji(s,i,t)):Mt(r,Hi(n,i,t))}}}function qi(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 ji(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return $i(r,t);case"reference":case"string":case"token":case"uri":return Qi(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function $i(r,e){let{operator:t,value:n}=Gi(e);return{code:r.code,operator:t,value:n}}function Qi(r,e,t){return{code:r.code,operator:Ki(e),value:t}}function Hi(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in _t&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Gi(r){let e=r.substring(0,2),t=_t[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ki(r){return Gr[r]??"eq"}function Qr(r){let e=r.split(":");if(e.includes("*"))throw new d(v("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(v(`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(v(`Invalid include value '${r}'`))}function Mt(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Wi=/{{([^{}]+)}}/g;function Oc(r,e){return r=r.replaceAll(Wi,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":Lr(i[0])}),Lt(r)}function Vc(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(zi(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ji(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(Hr("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Hr("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function zi(r){let e=r.operator in Gr?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in _t?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ji(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Hr(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function zr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Yi(r,e,t))return!1}return!0}function Yi(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ue(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Xi(r,t,n);case"string":case"uri":return Jr(r,t,n);case"token":return Zi(r,t,n);case"date":return to(r,t,n);default:return!1}}function Xi(r,e,t){let n=ue(t.expression,r),i=Ze(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(u=>u?.endsWith("/"+s))),a)return!i}return i}function Zi(r,e,t){return qr(r.resourceType,t).type==="BOOLEAN"?eo(r,e,t):Jr(r,e,t,!0)}function eo(r,e,t){let n=ue(t.expression,r),i=e.value==="true",o=n.includes(i);return Ze(e.operator)?!o:o}function Jr(r,e,t,n){let i=ue(t.expression,r),o=e.value.split(","),s=Ze(e.operator);for(let a of i)for(let u of o)if(Ut(a,e.operator,u,n))return!s;return s}function Ut(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Ut(r,e,o,!1)&&(!s||Ut(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 to(r,e,t){let n=ue(t.expression,r),i=e.value.split(","),o=Ze(e.operator);for(let s of n)for(let a of i)if(ro(s,e.operator,a))return!o;return o}function ro(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 Ze(r){return r==="ne"||r==="not"}var no={resourceType:"*"},io=["DomainConfiguration","JsonWebKey","Login"],oo=["PasswordChangeRequest","Project","ProjectMembership","User"],so=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(so||{}),ao=["read","vread","history","history-instance"];function Bc(r,e){if(r.resource){for(let t of r.resource)if(Bt(t.resourceType,e))return!0}return!1}function co(r,e){if(io.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Bt(t.resourceType,e)&&!t.readonly)return!0}return!1}function qc(r,e){let t=e.resourceType;return co(r,t)?uo(r,e,!1):!1}function uo(r,e,t){if(r.resource){for(let n of r.resource)if(Yr(e,t?"read":"update",n))return!0}return!1}function jc(r,e,t){if(!t)return no;if(t.resource){for(let n of t.resource)if(Yr(r,e,n))return n}}function Yr(r,e,t){let n=r.resourceType;return!(!Bt(t.resourceType,n)||t.readonly&&!ao.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!zr(r,Lt(t.criteria)))}function Bt(r,e){return r===e||r==="*"&&!oo.includes(e)}function Xr(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 Zr(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 qt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),gr(r.buffer)}async function en(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function te(){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 lo(r){let e={};r=yt(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=te(),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)=>po(i,o,e),2);return fo(JSON.parse(n))}function po(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 fo(r){let e=ho(r),{sorted:t,cycles:n}=mo(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 u=i[a],l={...u,request:{...u.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function mo(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 u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=1,s.push(o);let a=!1;for(let u of r[o])i(u,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 tn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(fe(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else tn(n,e)}}function ho(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&&tn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Jc(r){r=yt(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=te());return lo(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 V={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",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var ve=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}},tt=class{constructor(){this.emitter=new ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var jt={"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"},go=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],$t=["DiagnosticReport-update"];function nn(r){return $t.includes(r)}function on(r){if($t.includes(r))throw new d(h(`'context.version' is required for '${r}'.`))}var yo={"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 xo(r){return go.includes(r)}function sn(r){return!!r.endpoint}function Qt(r){if(!nt(r))throw new d(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 sn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function nt(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(!jt[o])return!1;return!(sn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function rn(r,e,t,n){if(typeof e!="object")throw new d(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 d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!xo(e.resourceType))throw new d(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 d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function To(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)rn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(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)rn(r,s,t,n)}}function vo(r,e){let t=new Map,n=yo[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));To(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Ht(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!jt[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(jt).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if($t.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return vo(e,i),{timestamp:new Date().toISOString(),id:te(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var rt=class extends tt{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!nt(t))throw new d(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function So(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Xr(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 an(r){return r.split(".").length===3}function it(r){let[e,t,n]=r.split(".");return So(t)}function cn(r){try{return typeof it(r).login_id=="string"}catch{return!1}}function un(r){try{let t=it(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Eo,w=class{constructor(e){this[Eo]="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)}};Eo=Symbol.toStringTag;var Se=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Gt)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?fr(t):void 0)}},Gt=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},ln=class extends Se{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 Du="2.2.7-c9ce5402",bo=V.FHIR_JSON+", */*; q=0.1",Ro="https://api.medplum.com/",Po=1e3,Co=6e4,dn="Binary/",pn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Ao=(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))(Ao||{}),wo=(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))(wo||{}),Io=(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))(Io||{}),ko=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(ko||{}),fn=class extends ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??Oo(),this.storage=t?.storage??new Se,this.createPdfImpl=t?.createPdf,this.baseUrl=hn(t?.baseUrl??Ro),this.fhirBaseUrl=hn(ot(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=ot(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=ot(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=ot(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??Co,this.cacheTime>0?this.requestCache=new et(t?.resourceCacheSize??Po):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.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().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(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=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=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,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new w(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,V.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:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,n,i).then(yn));return this.setCacheEntry(s,u),u}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),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield yn(a),o=u?.url?new URL(u.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 pn;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 w(Promise.reject(new Error("Missing reference")));if(i==="system")return new w(Promise.resolve(pn));let[o,s]=i.split("/");return!o||!s?new w(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Nr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=`{
4
4
  StructureDefinitionList(name: "${t}") {
5
5
  resourceType,
6
6
  name,
@@ -39,5 +39,5 @@ var Ee=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);It(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Ot(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t){if(_r(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});s?It([s],t):console.warn(`No StructureDefinition found for ${t}!`)})());return this.setCacheEntry(n,o),o}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,f=()=>l.abort();s?.signal?.addEventListener("abort",f);let P=B=>{s?.signal?.removeEventListener("abort",f),B instanceof Error?u(B):a(B)};l.responseType="json",l.onabort=()=>P(new Error("Request aborted")),l.onerror=()=>P(new Error("Request error")),o&&(l.upload.onprogress=B=>o(B),l.upload.onload=B=>o(B)),l.onload=()=>{l.status>=200&&l.status<300?P(l.response):P(new p(_e(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),l.setRequestHeader("X-Medplum","extended"),l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=z(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=z(t)),this.createResource({resourceType:"Communication",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")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,O.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},O.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",tr(t),"$push"),{destination:de(n),body:i,contentType:o,waitForResponse:s},O.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||de(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.medplumServer=cn(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.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();return i.startsWith(ln)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:ln+a.id,title:i},...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;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await hn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new C(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){this.refreshPromise&&await this.refreshPromise,i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new p(Rr);let u=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&u&&l==="follow")return this.request("GET",u,{...o,body:void 0});let f;if(a)try{f=await t.json()}catch(P){throw console.error("Error parsing response",t.status,P),P}else f=await t.text();if(t.status>=400)throw new p(_e(f));return f}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(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(u){this.retryCatch(a,i,u)}await lt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let u=await hn(a);u&&(i=await this.fetchWithRetry(u,s))}await lt(o)}return this.parseResponse(i,"POST",t)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new p(_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.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!St(a.response.outcome)?s.reject(new p(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=To),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=O.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=Ut();sessionStorage.setItem("pkceState",t);let n=Ut();sessionStorage.setItem("codeVerifier",n);let i=await en(n),o=ur(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??fn()),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??fn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}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=Zr(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new p(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new p(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",$t(i),O.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!tt(t))throw new p(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new p(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",$t(t),O.FORM_URL_ENCODED)}fhircastConnect(t){return new et(t)}async fhircastPublish(t,n,i,o){return nn(n)?this.post(`/fhircast/STU3/${t}`,jt(t,n,i,o),O.JSON):(on(n),this.post(`/fhircast/STU3/${t}`,jt(t,n,i),O.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":O.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o=await this.fetchWithRetry(this.tokenUrl,n);if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new p(I(a.error_description))}catch(a){throw new p(I("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(an(n)){let i=Qt(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}};function Co(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function fn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function mn(r){return r.endsWith("/")?r:r+"/"}function rt(r,e){return new URL(e,r).toString()}async function hn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(Fe(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function yn(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var Tu={aws_ssm_parameter_store:"aws_ssm_parameter_store"};var gn="http://unitsofmeasure.org",Su="http://loinc.org",Eu="http://snomed.info/sct",bu="http://www.nlm.nih.gov/research/umls/rxnorm",Ru="http://www.ama-assn.org/go/cpt",Pu="http://hl7.org/fhir/sid/icd-10";var wo=[...ye,"->","<<",">>"];function xn(r){return new G(r,he,wo).tokenize()}var Gt=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}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(){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(m.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(m.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(m.As);t instanceof $?(e.transform=t.name,e.parameter=t.args?.map(Tn)):(e.transform="copy",e.parameter=[Tn(t)])}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(m.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){for(;this.parser.peek()?.value!=="}";)this.parser.consume();this.parser.consume("}")}};function Tn(r){return r instanceof q?{valueId:r.name}:r instanceof N?Io(r):{valueId:r.toString()}}function Io(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 ko=ge().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function Nu(r){let e=ko.construct(xn(r));return e.removeComments(),new Gt(e).parse()}function Uu(r,e,t){return Oo({loader:t},r,e)}function Oo(r,e,t){return Vo(r,e),En(r,e),bn(r,e.group[0],t)}function Vo(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)En(r,i)}}function En(r,e){if(e.group)for(let t of e.group)Kt(r,t.name,{type:"StructureMapGroup",value:t})}function bn(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)nt(o,l.name,t[a++]);for(let l of i){let f=t[a++]??g({});nt(o,l.name,f),s.push(f)}let u={parent:r,variables:o};if(e.rule)for(let l of e.rule)Rn(u,l);return s}function Rn(r,e){let t=!1;if(e.source)for(let n of e.source)Do(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)No(r,n);if(e.rule)for(let n of e.rule)Rn(r,n);if(e.dependent)for(let n of e.dependent)Lo(r,n)}}function Do(r,e){let t=ue(r,e.context);if(!t)return!1;let n=e.element;if(!n)return!0;let i=K(n,[t]);if(!i||i.length===0||e.condition&&!vn(t,{[e.variable]:i[0]},e.condition))return!1;if(e.check&&!vn(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.variable&&Kt(r,e.variable,i[0]),!0}function vn(r,e,t){return V(K(t,[r],e))}function No(r,e){let t=ue(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i;if(!e.transform)Array.isArray(n)||n===void 0?i=g({}):i=g(n);else switch(e.transform){case"append":i=Fo(r,e);break;case"copy":i=Sn(r,e);break;case"create":i=_o(r,e);break;case"translate":i=Sn(r,e);break;case"truncate":i=Mo(r,e);break;case"uuid":i={type:"string",value:ee()};break;default:throw new Error(`Unsupported transform: ${e.transform}`)}Array.isArray(n)?n.push(i.value):nt(t.value,e.element,i.value),e.variable&&Kt(r,e.variable,i)}function Fo(r,e){let t=ce(r,e.parameter?.[0])?.value,n=ce(r,e.parameter?.[1])?.value;return{type:"string",value:(t??"").toString()+(n??"").toString()}}function Sn(r,e){return ce(r,e.parameter?.[0])}function _o(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=ce(r,e.parameter?.[0])?.value),g(t)}function Mo(r,e){let t=ce(r,e.parameter?.[0]),n=ce(r,e.parameter?.[1])?.value;return t.type==="string"?{type:"string",value:t.value.substring(0,n)}:t}function Lo(r,e){let t=ue(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=ue(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}bn({parent:r,variables:{}},t.value,i)}function ce(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(Array.isArray(n)&&(n=n[0]),!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n.type==="id"){let i=ue(r,n.value);if(!i)throw new Error("Variable not found: "+n.value);return i}return n}function ue(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ue(r.parent,e)}function Kt(r,e,t){r.variables||(r.variables={}),nt(r.variables,e,t)}function nt(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}var Uo=[...ye,"eq","ne","co"];function Pn(r){return new G(r,he,Uo,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var it=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},ot=class{constructor(e){this.child=e}},st=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var Bo={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 qo(r){let e=Bo[r];if(!e)throw new p(I("Invalid operator: "+r));return e}var Wt=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 ot(this.parse()),this.parser.consume(")")):e=new it(this.parser.consume("Symbol").value,qo(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 st(t,e,this.parse())):e}},$o=ge();function Yu(r){let e=$o.construct(Pn(r));return e.removeComments(),new Wt(e).parse()}var W=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}},An=class r{constructor(e,t=new W){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()??"",u=t?.getField(12)?.toString()??"2.5.1";return new r([new Se(["MSH",this.context.getMsh2(),o,s,n,i,Qo(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",u],this.context),new Se(["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 W("\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=>Se.parse(n,t)),t)}},Se=class r{constructor(e,t=new W){this.context=t,sr(e)?this.fields=e.map(n=>le.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new le([[this.context.getMsh1()]],this.context);if(e===2)return new le([[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 W){return new r(e.split(t.fieldSeparator).map(n=>le.parse(n,t)),t)}},le=class r{constructor(e,t=new W){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 W){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function el(r,e){if(!r)return;let t=te(r.slice(0,4),0),n=te(r.slice(4,6),1)-1,i=te(r.slice(6,8),1),o=te(r.slice(8,10),0),s=te(r.slice(10,12),0),a=te(r.slice(12,14),0),u=0;r.includes(".")&&(u=te(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),f=jo(r,e?.tzOffset);return f!==0&&(l=new Date(l.getTime()-f)),l.toISOString()}function te(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function jo(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 Qo(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}function il(r){if(!r)throw new p(h("Resource type is null"));if(!Fr(r))throw new p(h("Unknown resource type"))}function Cn(r,e,t){r===null?t.push(y(e,"Invalid null value")):Array.isArray(r)?Ho(r,e,t):typeof r=="object"&&Go(r,e,t)}function Ho(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(y(`${e}[${n}]`,"Invalid undefined value")):Cn(r[n],`${e}[${n}]`,t)}function Go(r,e,t){for(let[n,i]of Object.entries(r))Cn(i,`${e}${e?".":""}${n}`,t)}function sl(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function 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=ie(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(g(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=M(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=Yt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of we(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ce(e.type.charAt(0))){let n=ie(e.type);this.crawlObject(e,n,t)}}};function Yt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let u of a)s.push(A(u,o));else a!==void 0&&s.push(A(a,o));i=s}return i}var wn={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"},Ko={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:/.*/},Wo={"ele-1":!0};function Ol(r,e){new Xt(r.resourceType,r,e).validate()}var Xt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=At(n):this.schema=ie(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new p(h("Missing resource type"));Zt(this.rootResource,e,this.issues),Jt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new p({resourceType:"OperationOutcome",issue: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 u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(y(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(y(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(y(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),In(a,s)||this.issues.push(y(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(f=>[f.name,0])):void 0;for(let f of u){this.constraintsCheck(f,s,n),this.checkPropertyValue(f,n);let P=Xo(f,s.slicing);P&&l&&(l[P]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(y(n,"Missing required property")),!1):E(e)?(this.issues.push(y(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ce(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(y(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(i)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!Jo(e,o,t)&&this.issues.push(y(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in Wo)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Ar(n,o));return}}}isExpressionTrue(e,t,n){try{let i=K(e.expression,[t],{context:t,resource:g(this.currentResource[this.currentResource.length-1]),rootResource:g(this.rootResource),ucum:g(gn)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Cr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Zo(e);if(n){let{type:o,value:s}=n;if(!(o in wn)){this.issues.push(y(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=wn[o];if(typeof s!==a){s!==null&&this.issues.push(y(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,ie("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(y(n,"String must contain non-whitespace content"));return}let i=Ko[t];i&&!i.exec(e)&&this.issues.push(y(n,"Invalid "+t+" format"))}validateNumber(e,t,n){isNaN(e)||!isFinite(e)?this.issues.push(y(n,"Invalid numeric value")):zo(t)&&!Number.isInteger(e)?this.issues.push(y(n,"Expected number to be an integer")):t===c.positiveInt&&e<=0?this.issues.push(y(n,"Expected number to be positive")):t===c.unsignedInt&&e<0&&this.issues.push(y(n,"Expected number to be non-negative"))}};function zo(r){return r===c.integer||r===c.positiveInt||r===c.unsignedInt}function Jo(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!A(r,i);return!1}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(y(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(y(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(y(`${o}[${a}]`,"Invalid null value")):i[a]&&Zt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Zt(i,o,t)}}function In(r,e){return e.pattern&&!Ae(r,e.pattern)?!1:!(e.fixed&&!Pe(r,e.fixed))}function Yo(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(In(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Xo(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>we(Yt(r,n.path))?.some(i=>Yo(i,n,t))))return t.name}}function Zo(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}export{ro as AccessPolicyInteraction,Ke as AndAtom,R as ArithemticOperatorAtom,Y as AsAtom,v as BooleanInfixOperatorAtom,Ru as CPT,ve as ClientStorage,Be as ConcatAtom,qe as ContainsAtom,O as ContentType,To as DEFAULT_ACCEPT,pc as DEFAULT_SEARCH_COUNT,H as DotAtom,Le as EmptySetAtom,je as EqualsAtom,He as EquivalentAtom,Te as EventTarget,Tu as ExternalSecretSystems,Bt as FHIRCAST_EVENT_NAMES,fo as FHIRCAST_EVENT_RESOURCES,qt as FHIRCAST_EVENT_VERSION_REQUIRED,po as FHIRCAST_RESOURCE_TYPES,it as FhirFilterComparison,st as FhirFilterConnective,ot as FhirFilterNegation,Me as FhirPathAtom,et as FhircastConnection,$ as FunctionAtom,W as Hl7Context,le as Hl7Field,An as Hl7Message,Se as Hl7Segment,Pu as ICD10,Je as ImpliesAtom,$e as InAtom,Z as IndexerAtom,j as InfixOperatorAtom,X as IsAtom,Su as LOINC,Xe as LRUCache,N as LiteralAtom,gu as MEDPLUM_VERSION,pn as MedplumClient,Ht as MemoryStorage,un as MockAsyncClientStorage,Qe as NotEqualsAtom,Ge as NotEquivalentAtom,Ao as OAuthClientAssertionType,bo as OAuthGrantType,Po as OAuthTokenAuthMethod,Ro as OAuthTokenType,p as OperationOutcomeError,Fi as Operator,m as OperatorPrecedence,We as OrAtom,at as Parser,be as ParserBuilder,Ee as PrefixOperatorAtom,c as PropertyType,bu as RXNORM,C as ReadablePromise,Eu as SNOMED,Br as SearchParameterType,q as SymbolAtom,G as Tokenizer,Ze as TypedEventTarget,gn as UCUM,Ue as UnaryOperatorAtom,se as UnionAtom,ze as XorAtom,Ks as accepted,Bs as allOk,ur as arrayBufferToBase64,cr as arrayBufferToHex,we as arrayify,on as assertContextVersionOptional,ea as assertOk,I as badRequest,d as booleanToTypedValue,gi as buildTypeName,Re as calculateAge,ss as calculateAgeString,Rc as canReadResourceType,Pc as canWriteResource,io as canWriteResourceType,w as capitalize,Cn as checkForNull,Ds as compressElement,Nc as convertContainedResourcesToBundle,so as convertToTransactionBundle,Jt as crawlResource,Ar as createConstraintIssue,jt as createFhircastMessagePayload,Cr as createProcessingIssue,z as createReference,y as createStructureIssue,qs as created,Xr as decodeBase64,ut as deepClone,Pe as deepEquals,Ae as deepIncludes,Zr as encodeBase64,en as encryptSHA256,ae as evalFhirPath,K as evalFhirPathTyped,mt as fhirPathArrayEquals,ht as fhirPathArrayEquivalent,Tr as fhirPathEquals,ai as fhirPathEquivalent,Oe as fhirPathIs,ft as fhirPathNot,wn as fhirTypeToJsType,ms as findObservationInterval,hs as findObservationReferenceRange,vs as findResourceByCode,Qs as forbidden,Rs as formatAddress,Yn as formatCodeableConcept,Xn as formatCoding,Cs as formatDate,dt as formatDateTime,As as formatFamilyName,Ps as formatGivenName,Qo as formatHl7DateTime,Ie as formatHumanName,Os as formatMoney,Zn as formatObservationValue,ws as formatPeriod,J as formatQuantity,ks as formatRange,yc as formatSearchQuery,Gn as formatTime,Is as formatTiming,ee as generateId,Vr as getAllDataTypes,cs as getAllQuestionnaireAnswers,ct as getCodeBySystem,ie as getDataType,os as getDateProperty,On as getDisplayString,Ve as getElementDefinition,Si as getElementDefinitionFromElements,Pt as getElementDefinitionTypeName,sc as getExpressionForResourceType,jr as getExpressionsForResourceType,ir as getExtension,ds as getExtensionValue,us as getIdentifier,is as getImageSrc,Yt as getNestedProperty,Ea as getPathDisplayName,xi as getPropertyDisplayName,as as getQuestionnaireAnswers,Ut as getRandomString,de as getReferenceString,Ta as getResourceTypes,Sa as getSearchParameter,qr as getSearchParameterDetails,va as getSearchParameters,Zs as getStatus,A as getTypedPropertyValue,oi as getTypedPropertyValueWithSchema,D as globalSchema,Hs as gone,Ot as indexSearchParameter,xa as indexSearchParameterBundle,It as indexStructureDefinitionBundle,fr as inflateBaseSchema,ni as inflateElement,ge as initFhirPathParserBuilder,Js as isAccepted,sn as isCompletedSubscriptionRequest,nn as isContextVersionRequired,zs as isCreated,Dr as isDataTypeLoaded,E as isEmpty,mo as isFhircastResourceType,Xs as isGone,an as isJwt,Ce as isLowerCase,cn as isMedplumAccessToken,Ys as isNotFound,Q as isObject,St as isOk,Fe as isOperationOutcome,ci as isPeriod,_n as isPopulated,_r as isProfileLoaded,kn as isProfileResource,b as isQuantity,vr as isQuantityEquivalent,pe as isReference,M as isResource,Fr as isResourceType,kt as isResourceTypeSchema,sr as isStringArray,ps as isUUID,pt as isValidDate,pi as loadDataType,Yo as matchDiscriminant,oo as matchesAccessPolicy,dr as matchesRange,zr as matchesSearchRequest,li as normalizeErrorString,_e as normalizeOperationOutcome,Rr as notFound,$s as notModified,di as operationOutcomeIssueToString,Pr as operationOutcomeToString,_t as parseCriteriaAsSearchRequest,Vt as parseFhirPath,Yu as parseFilterParameter,el as parseHl7DateTime,Qt as parseJWTPayload,Nu as parseMappingLanguage,Li as parseParameter,ns as parseReference,mc as parseSearchDefinition,fc as parseSearchRequest,Kr as parseSearchUrl,At as parseStructureDefinition,hc as parseXFhirQuery,gs as preciseEquals,Ts as preciseGreaterThan,Hn as preciseGreaterThanOrEquals,xs as preciseLessThan,Qn as preciseLessThanOrEquals,ys as preciseRound,to as projectAdminResourceTypes,eo as protectedResourceTypes,ke as removeDuplicates,co as reorderBundle,tr as resolveId,Ac as satisfiedAccessPolicy,$t as serializeFhircastSubscriptionRequest,Ws as serverError,fs as setCodeBySystem,ls as setIdentifier,_ as singleton,lt as sleep,Ss as splitN,sl as streamToBuffer,or as stringify,Lr as stringifyTypedValue,Uu as structureMapTransform,da as subsetResource,V as toJsBoolean,g as toTypedValue,Gs as tooManyRequests,Nr as tryGetDataType,la as tryGetProfile,js as unauthorized,tt as validateFhircastSubscriptionRequest,Ol as validateResource,il as validateResourceType,h as validationError};
42
+ }`.replace(/\s+/g," "),a=await this.graphql(s);Ot(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Dt(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t){if(Mr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});s?Ot([s],t):console.warn(`No StructureDefinition found for ${t}!`)})());return this.setCacheEntry(n,o),o}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,f=()=>l.abort();s?.signal?.addEventListener("abort",f);let E=q=>{s?.signal?.removeEventListener("abort",f),q instanceof Error?u(q):a(q)};l.responseType="json",l.onabort=()=>E(new Error("Request aborted")),l.onerror=()=>E(new Error("Request error")),o&&(l.upload.onprogress=q=>o(q),l.upload.onload=q=>o(q)),l.onload=()=>{l.status>=200&&l.status<300?E(l.response):E(new d(we(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),l.setRequestHeader("X-Medplum","extended"),l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=J(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=J(t)),this.createResource({resourceType:"Communication",basedOn:[J(t)],encounter:s,subject:a,sender:o?J(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")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,V.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},V.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",ur(t),"$push"),{destination:pe(n),body:i,contentType:o,waitForResponse:s},V.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||pe(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=un(t),this.medplumServer=cn(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.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();return i.startsWith(dn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:dn+a.id,title:i},...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;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await gn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new w(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new d(ir);let u=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&u&&l==="follow")return this.request("GET",u,{...o,body:void 0});let f;if(a)try{f=await t.json()}catch(E){throw console.error("Error parsing response",t.status,E),E}else f=await t.text();if(t.status>=400)throw new d(we(f));return f}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(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(u){this.retryCatch(a,i,u)}await xt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let u=await gn(a);u&&(i=await this.fetchWithRetry(u,s))}await xt(o)}return this.parseResponse(i,"POST",t)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(we(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!mt(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=bo),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=V.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=qt();sessionStorage.setItem("pkceState",t);let n=qt();sessionStorage.setItem("codeVerifier",n);let i=await en(n),o=yr(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??mn()),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??mn()),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=Zr(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(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",Qt(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!nt(t))throw new d(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",Qt(t),V.FORM_URL_ENCODED)}fhircastConnect(t){return new rt(t)}async fhircastPublish(t,n,i,o){return nn(n)?this.post(`/fhircast/STU3/${t}`,Ht(t,n,i,o),V.JSON):(on(n),this.post(`/fhircast/STU3/${t}`,Ht(t,n,i),V.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":V.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o=await this.fetchWithRetry(this.tokenUrl,n);if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(v(a.error_description))}catch(a){throw new d(v("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(an(n)){let i=it(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}};function Oo(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function mn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function hn(r){return r.endsWith("/")?r:r+"/"}function ot(r,e){return new URL(e,r).toString()}async function gn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(ne(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function yn(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var Fu={aws_ssm_parameter_store:"aws_ssm_parameter_store"};var xn="http://unitsofmeasure.org",_u="http://loinc.org",Lu="http://snomed.info/sct",Uu="http://www.nlm.nih.gov/research/umls/rxnorm",Bu="http://www.ama-assn.org/go/cpt",qu="http://hl7.org/fhir/sid/icd-10",ju="http://hl7.org";function Tn(r,e){if(!r.group)throw new d(v("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Vo(e);if(ne(t))throw new d(t);let n=No(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 Vo(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?v("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?Do(r.codeableConcept):r.code||r.coding||r.codeableConcept?v("Ambiguous input: multiple source codings provided"):v("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function Do(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 No(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=Fo(i,o)),s&&t.push(...s)}return t}function Fo(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 Mo=[...ye,"->","<<",">>","=="];function vn(r){return new K(r,ge,Mo).tokenize()}var _o={"-":"disjoint","==":"equal"},Kt=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}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(){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(m.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(m.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(m.As);t instanceof j?(e.transform=t.name,e.parameter=t.args?.map(Sn)):t instanceof O||t instanceof B?(e.transform="copy",e.parameter=[Sn(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(m.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=_o[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,f=e?.group?.find(E=>E.source===i&&E.target===u);f||(f={source:i,target:u},e.group||(e.group=[]),e.group.push(f)),f.element||(f.element=[]),f.element.push({code:o,target:[{code:l,equivalence:s}]})}};function Sn(r){if(r instanceof B)return{valueId:r.name};if(r instanceof O)return Lo(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Lo(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 Uo=xe().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function Zu(r){let e=Uo.construct(vn(r));return e.removeComments(),new Kt(e).parse()}function sl(r,e,t){return Bo({root:r,loader:t},r,e)}function Bo(r,e,t){return qo(r,e),Rn(r,e),Pn(r,e.group[0],t)}function qo(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)Rn(r,i)}}function Rn(r,e){if(e.group)for(let t of e.group)Wt(r,t.name,{type:"StructureMapGroup",value:t})}function Pn(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)Ee(o,l.name,t[a++]);for(let l of i){let f=t[a++]??y({});Ee(o,l.name,f),s.push(f)}let u={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)Cn(u,l);return s}function Cn(r,e){let t=!1;if(e.source)for(let n of e.source)jo(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)Qo(r,n);if(e.rule)for(let n of e.rule)Cn(r,n);if(e.dependent)for(let n of e.dependent)Xo(r,n)}}function jo(r,e){let t=le(r,e.context);if(!t)return!1;let n=e.element;if(!n)return!0;let i=$(n,[t]);if(!i||i.length===0||e.condition&&!En(t,{[e.variable]:i[0]},e.condition))return!1;if(e.check&&!En(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=$o(e,i)),e.variable&&Wt(r,e.variable,wn(i)),!0}function En(r,e,t){return D($(t,[r],e))}function $o(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 Qo(r,e){let t=le(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Ho(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[y({})]:i=[y(n)];else switch(e.transform){case"append":i=Go(r,e);break;case"copy":i=Ko(r,e);break;case"create":i=Wo(r,e);break;case"evaluate":i=zo(r,e);break;case"translate":i=Jo(r,e);break;case"truncate":i=Yo(r,e);break;case"uuid":i=[{type:"string",value:te()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],Ee(t.value,e.element,n));for(let s of i)n.push(s.value)}else Ee(t.value,e.element,i[0].value);e.variable&&Wt(r,e.variable,wn(i))}}function Ho(r,e){return Le(r.type)?.elements?.[e]?.isArray}function Go(r,e){let t=W(r,e.parameter?.[0])?.[0]?.value,n=W(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Ko(r,e){return e.parameter.flatMap(t=>W(r,t))}function Wo(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[y(t)]}function zo(r,e){let n=W(r,e.parameter?.[0])[0].value;return $(n,[],An(r))}function Jo(r,e){let t=e.parameter.flatMap(a=>W(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Tn(o,{system:o.group?.[0]?.source,code:n});return[y(s.match?.[0]?.concept?.code)]}function Yo(r,e){let t=W(r,e.parameter?.[0])?.[0],n=W(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Xo(r,e){let t=le(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=le(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};Pn(o,t.value,i)}function W(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=bn(n),n.length===1&&n[0].type==="id"){let i=le(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return bn(i)}return n}function le(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return le(r.parent,e)}function An(r,e={}){if(r.parent&&An(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Wt(r,e,t){r.variables||(r.variables={}),Ee(r.variables,e,t)}function Ee(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function bn(r){return Array.isArray(r)?r:[r]}function wn(r){return r.length===1?r[0]:r}var Zo=[...ye,"eq","ne","co"];function In(r){return new K(r,ge,Zo,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var st=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},at=class{constructor(e){this.child=e}},ct=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var es={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 ts(r){let e=es[r];if(!e)throw new d(v("Invalid operator: "+r));return e}var zt=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 at(this.parse()),this.parser.consume(")")):e=new st(this.parser.consume("Symbol").value,ts(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 ct(t,e,this.parse())):e}},rs=xe();function xl(r){let e=rs.construct(In(r));return e.removeComments(),new zt(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}},kn=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()??"",u=t?.getField(12)?.toString()??"2.5.1";return new r([new be(["MSH",this.context.getMsh2(),o,s,n,i,is(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",u],this.context),new be(["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=>be.parse(n,t)),t)}},be=class r{constructor(e,t=new z){this.context=t,mr(e)?this.fields=e.map(n=>de.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 de([[this.context.getMsh1()]],this.context);if(e===2)return new de([[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=>de.parse(n,t)),t)}},de=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 Sl(r,e){if(!r)return;let t=re(r.slice(0,4),0),n=re(r.slice(4,6),1)-1,i=re(r.slice(6,8),1),o=re(r.slice(8,10),0),s=re(r.slice(10,12),0),a=re(r.slice(12,14),0),u=0;r.includes(".")&&(u=re(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),f=ns(r,e?.tzOffset);return f!==0&&(l=new Date(l.getTime()-f)),l.toISOString()}function re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function ns(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 is(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}function Pl(r){if(!r)throw new d(h("Resource type is null"));if(!Fr(r))throw new d(h("Unknown resource type"))}function On(r,e,t){r===null?t.push(g(e,"Invalid null value")):Array.isArray(r)?os(r,e,t):typeof r=="object"&&ss(r,e,t)}function os(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(g(`${e}[${n}]`,"Invalid undefined value")):On(r[n],`${e}[${n}]`,t)}function ss(r,e,t){for(let[n,i]of Object.entries(r))On(i,`${e}${e?".":""}${n}`,t)}function Al(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function Yt(r,e,t,n){new Jt(r,e,t,n).crawl()}var Jt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=se(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(y(this.rootResource),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=Xt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of De(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ve(e.type.charAt(0))){let n=se(e.type);this.crawlObject(e,n,t)}}};function Xt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let u of a)s.push(A(u,o));else a!==void 0&&s.push(A(a,o));i=s}return i}var Vn={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"},as={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:/.*/},cs={"ele-1":!0};function Xl(r,e){new Zt(r.resourceType,r,e).validate()}var Zt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=wt(n):this.schema=se(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(h("Missing resource type"));er(this.rootResource,e,this.issues),Yt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new d({resourceType:"OperationOutcome",issue: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 u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(g(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(g(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(g(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Dn(a,s)||this.issues.push(g(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(f=>[f.name,0])):void 0;for(let f of u){this.constraintsCheck(f,s,n),this.checkPropertyValue(f,n);let E=ps(f,s.slicing);E&&l&&(l[E]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(g(n,"Missing required property")),!1):R(e)?(this.issues.push(g(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ve(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(g(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(i)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!ls(e,o,t)&&this.issues.push(g(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in cs)&&!this.isExpressionTrue(o,e,n)){this.issues.push(sr(n,o));return}}}isExpressionTrue(e,t,n){try{let i=$(e.expression,[t],{"%context":t,"%resource":y(this.currentResource[this.currentResource.length-1]),"%rootResource":y(this.rootResource),"%ucum":y(xn)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(ar(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=fs(e);if(n){let{type:o,value:s}=n;if(!(o in Vn)){this.issues.push(g(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Vn[o];if(typeof s!==a){s!==null&&this.issues.push(g(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&&Yt(i.value,this,se("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(g(n,"String must contain non-whitespace content"));return}let i=as[t];i&&!i.exec(e)&&this.issues.push(g(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(g(n,"Invalid numeric value")):us(t)&&!Number.isInteger(e)?this.issues.push(g(n,"Expected number to be an integer")):t===c.positiveInt&&e<=0?this.issues.push(g(n,"Expected number to be positive")):t===c.unsignedInt&&e<0&&this.issues.push(g(n,"Expected number to be non-negative"))}};function us(r){return r===c.integer||r===c.positiveInt||r===c.unsignedInt}function ls(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!A(r,i);return!1}function er(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(g(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(g(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(g(`${o}[${a}]`,"Invalid null value")):i[a]&&er(i[a],`${o}[${a}]`,t);else typeof i=="object"&&er(i,o,t)}}function Dn(r,e){return!(e.pattern&&!Oe(r,e.pattern)||e.fixed&&!ke(r,e.fixed))}function ds(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(Dn(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ps(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>De(Xt(r,n.path))?.some(i=>ds(i,n,t))))return t.name}}function fs(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}]}export{so as AccessPolicyInteraction,ze as AndAtom,C as ArithemticOperatorAtom,X as AsAtom,S as BooleanInfixOperatorAtom,Bu as CPT,Se as ClientStorage,je as ConcatAtom,$e as ContainsAtom,V as ContentType,bo as DEFAULT_ACCEPT,wc as DEFAULT_SEARCH_COUNT,G as DotAtom,Be as EmptySetAtom,He as EqualsAtom,Ke as EquivalentAtom,ve as EventTarget,Fu as ExternalSecretSystems,jt as FHIRCAST_EVENT_NAMES,yo as FHIRCAST_EVENT_RESOURCES,$t as FHIRCAST_EVENT_VERSION_REQUIRED,go as FHIRCAST_RESOURCE_TYPES,st as FhirFilterComparison,ct as FhirFilterConnective,at as FhirFilterNegation,Ue as FhirPathAtom,rt as FhircastConnection,j as FunctionAtom,ju as HTTP_HL7_ORG,z as Hl7Context,de as Hl7Field,kn as Hl7Message,be as Hl7Segment,qu as ICD10,Xe as ImpliesAtom,Qe as InAtom,ee as IndexerAtom,Q as InfixOperatorAtom,Z as IsAtom,_u as LOINC,et as LRUCache,O as LiteralAtom,Du as MEDPLUM_VERSION,fn as MedplumClient,Gt as MemoryStorage,ln as MockAsyncClientStorage,Ge as NotEqualsAtom,We as NotEquivalentAtom,ko as OAuthClientAssertionType,Ao as OAuthGrantType,Io as OAuthTokenAuthMethod,wo as OAuthTokenType,d as OperationOutcomeError,Ui as Operator,m as OperatorPrecedence,Je as OrAtom,ut as Parser,Pe as ParserBuilder,Re as PrefixOperatorAtom,c as PropertyType,Uu as RXNORM,w as ReadablePromise,Lu as SNOMED,Br as SearchParameterType,B as SymbolAtom,K as Tokenizer,tt as TypedEventTarget,xn as UCUM,qe as UnaryOperatorAtom,ce as UnionAtom,Ye as XorAtom,Es as accepted,hs as allOk,yr as arrayBufferToBase64,gr as arrayBufferToHex,De as arrayify,on as assertContextVersionOptional,Is as assertOk,v as badRequest,p as booleanToTypedValue,Si as buildTypeName,Ie as calculateAge,_s as calculateAgeString,Bc as canReadResourceType,qc as canWriteResource,co as canWriteResourceType,I as capitalize,On as checkForNull,da as compressElement,Tn as conceptMapTranslate,Jc as convertContainedResourcesToBundle,lo as convertToTransactionBundle,Yt as crawlResource,sr as createConstraintIssue,Ht as createFhircastMessagePayload,ar as createProcessingIssue,J as createReference,g as createStructureIssue,gs as created,Xr as decodeBase64,yt as deepClone,ke as deepEquals,Oe as deepIncludes,Zr as encodeBase64,en as encryptSHA256,ue as evalFhirPath,$ as evalFhirPathTyped,Et as fhirPathArrayEquals,bt as fhirPathArrayEquivalent,Ar as fhirPathEquals,fi as fhirPathEquivalent,Me as fhirPathIs,St as fhirPathNot,Vn as fhirTypeToJsType,Hs as findObservationInterval,Gs as findObservationReferenceRange,Ys as findResourceByCode,Ts as forbidden,ra as formatAddress,ni as formatCodeableConcept,ii as formatCoding,oa as formatDate,Tt as formatDateTime,ia as formatFamilyName,na as formatGivenName,is as formatHl7DateTime,Ne as formatHumanName,ua as formatMoney,oi as formatObservationValue,sa as formatPeriod,Y as formatQuantity,ca as formatRange,Vc as formatSearchQuery,Xn as formatTime,aa as formatTiming,te as generateId,Dr as getAllDataTypes,Us as getAllQuestionnaireAnswers,gt as getCodeBySystem,se as getDataType,Ms as getDateProperty,_n as getDisplayString,_e as getElementDefinition,Pi as getElementDefinitionFromElements,At as getElementDefinitionTypeName,Ec as getExpressionForResourceType,$r as getExpressionsForResourceType,pr as getExtension,js as getExtensionValue,Bs as getIdentifier,Fs as getImageSrc,Xt as getNestedProperty,La as getPathDisplayName,Ei as getPropertyDisplayName,Ls as getQuestionnaireAnswers,qt as getRandomString,pe as getReferenceString,Fa as getResourceTypes,_a as getSearchParameter,qr as getSearchParameterDetails,Ma as getSearchParameters,ws as getStatus,A as getTypedPropertyValue,di as getTypedPropertyValueWithSchema,N as globalSchema,vs as gone,Dt as indexSearchParameter,Na as indexSearchParameterBundle,Ot as indexStructureDefinitionBundle,Sr as inflateBaseSchema,ui as inflateElement,xe as initFhirPathParserBuilder,Ps as isAccepted,sn as isCompletedSubscriptionRequest,nn as isContextVersionRequired,Rs as isCreated,Nr as isDataTypeLoaded,R as isEmpty,xo as isFhircastResourceType,As as isGone,an as isJwt,Ve as isLowerCase,cn as isMedplumAccessToken,Cs as isNotFound,H as isObject,mt as isOk,ne as isOperationOutcome,mi as isPeriod,jn as isPopulated,Mr as isProfileLoaded,Mn as isProfileResource,P as isQuantity,wr as isQuantityEquivalent,fe as isReference,_ as isResource,Fr as isResourceType,Vt as isResourceTypeSchema,mr as isStringArray,$s as isUUID,vt as isValidDate,Zs as lazy,gi as loadDataType,ds as matchDiscriminant,uo as matchesAccessPolicy,Tr as matchesRange,zr as matchesSearchRequest,Nn as normalizeErrorString,we as normalizeOperationOutcome,ir as notFound,ys as notModified,Fn as operationOutcomeIssueToString,or as operationOutcomeToString,Lt as parseCriteriaAsSearchRequest,Nt as parseFhirPath,xl as parseFilterParameter,Sl as parseHl7DateTime,it as parseJWTPayload,Zu as parseMappingLanguage,ji as parseParameter,Ns as parseReference,kc as parseSearchDefinition,Ic as parseSearchRequest,Kr as parseSearchUrl,wt as parseStructureDefinition,Oc as parseXFhirQuery,Ws as preciseEquals,Js as preciseGreaterThan,Yn as preciseGreaterThanOrEquals,zs as preciseLessThan,Jn as preciseLessThanOrEquals,Ks as preciseRound,oo as projectAdminResourceTypes,io as protectedResourceTypes,Fe as removeDuplicates,fo as reorderBundle,ur as resolveId,jc as satisfiedAccessPolicy,Qt as serializeFhircastSubscriptionRequest,bs as serverError,Qs as setCodeBySystem,qs as setIdentifier,M as singleton,xt as sleep,Xs as splitN,Al as streamToBuffer,fr as stringify,Lr as stringifyTypedValue,sl as structureMapTransform,Aa as subsetResource,D as toJsBoolean,y as toTypedValue,Ss as tooManyRequests,Le as tryGetDataType,un as tryGetJwtExpiration,Ca as tryGetProfile,xs as unauthorized,nt as validateFhircastSubscriptionRequest,Xl as validateResource,Pl as validateResourceType,h as validationError};
43
43
  //# sourceMappingURL=index.mjs.map