@medplum/core 3.0.3 → 3.0.4

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 Ce=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()}`}},Ae=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 pt(e,this.prefixParselets,this.infixParselets)}},pt=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 ft="ok",we="created",mt="gone",ht="not-modified",gt="not-found",sr="conflict",ar="unauthorized",cr="forbidden",ur="too-many-requests",Ie="accepted",Es={resourceType:"OperationOutcome",id:ft,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},bs={resourceType:"OperationOutcome",id:we,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Rs={resourceType:"OperationOutcome",id:ht,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},lr={resourceType:"OperationOutcome",id:gt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Ps={resourceType:"OperationOutcome",id:ar,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Cs={resourceType:"OperationOutcome",id:cr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},As={resourceType:"OperationOutcome",id:mt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},ws={resourceType:"OperationOutcome",id:ur,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Is(r){return{resourceType:"OperationOutcome",id:Ie,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 ks(r){return{resourceType:"OperationOutcome",id:sr,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Os(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 yt(r){return r.id===ft||r.id===we||r.id===ht||r.id===Ie}function Vs(r){return r.id===we}function Ds(r){return r.id===Ie}function Ns(r){return r.id===gt}function Ms(r){return r.id===mt}function Fs(r){switch(r.id){case ft:return 200;case we:return 201;case Ie:return 202;case ht:return 304;case ar:return 401;case cr:return 403;case gt:return 404;case sr:return 409;case mt:return 410;case ur:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function _s(r,e){if(!yt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(dr(e)),this.outcome=e,this.cause=t}};function ke(r){return r instanceof f?r.outcome:ne(r)?r:v(jn(r))}function jn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ne(r)?dr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function dr(r){let e=r.issue?.map(Qn)??[];return e.length>0?e.join("; "):"Unknown error"}function Qn(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 xt(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 xt("structure",e,r)}function pr(r,e){return xt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function fr(r,e,t,n){return xt("processing",e,r,{...n,error:t})}function J(r){let e=fe(r),t=Hn(r);return t===e?{reference:e}:{reference:e,display:t}}function fe(r){return me(r)?r.reference:`${r.resourceType}/${r.id}`}function hr(r){if(r)return me(r)?r.reference.split("/")[1]:r.id}function $s(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function Gn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Hn(r){if(Gn(r)){let e=Kn(r);if(e)return e}if(r.resourceType==="Device"){let e=Wn(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:fe(r)}function Kn(r){let e=r.name;if(e&&e.length>0)return Fe(e[0])}function Wn(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function js(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=mr(t);if(n)return n}else return mr(e)}function mr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Qs(r){return r?new Date(r):void 0}function Oe(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),l=n.getUTCDate(),d=a-i;(c<o||c===o&&l<s)&&d--;let b=a*12+c-(i*12+o);l<s&&b--;let q=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:d,months:b,days:q}}function Gs(r,e){let{years:t,months:n,days:i}=Oe(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 Hs(r){let e={};return gr(r.item,e),e}function gr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),gr(t.item,e)}function Ks(r){let e={};return yr(r.item,e),e}function yr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),yr(t.item,e)}function Ws(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 zs(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 xr(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 Tr(r,e){return JSON.stringify(r,zn,e?2:void 0)}function zn(r,e){return!Jn(r)&&S(e)?void 0:e}function Jn(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!Yn(r):!1}function Yn(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 Ve(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Zn(r,e):Array.isArray(r)||Array.isArray(e)?!1:G(r)&&G(e)?Xn(r,e,t):(G(r)||G(e),!1)}function Zn(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Ve(r[t],e[t]))return!1;return!0}function Xn(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(!Ve(o,s,i))return!1}return!0}function De(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?ei(r,e):Array.isArray(r)||Array.isArray(e)?!1:G(r)&&G(e)?ti(r,e):G(r)||G(e)?!1:r===e}function ei(r,e){return e.every(t=>r.some(n=>De(n,t)))}function ti(r,e){return Object.entries(e).every(([t,n])=>t in r&&De(r[t],n))}function vt(r){return JSON.parse(JSON.stringify(r))}function Ys(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function G(r){return r!==null&&typeof r=="object"}function vr(r){return r.every(e=>typeof e=="string")}var Sr=[];for(let r=0;r<256;r++)Sr.push(r.toString(16).padStart(2,"0"));function Er(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Sr[e[n]];return t.join("")}function br(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 Ne(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Tt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Zs(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 Xs(r,e,t,n){return r.qualifiedInterval?.find(i=>Rr(i,e)&&ii(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function ea(r,e,t){return r.qualifiedInterval?.find(n=>Rr(n,e)&&t.includes(n.condition))}function Rr(r,e){return ri(r,e)&&ni(r,e)}function ri(r,e){return!r.gender||r.gender===e.gender}function ni(r,e){return!r.age||Pr(Oe(e.birthDate).years,r.age)}function ii(r,e,t){return!!r.range&&Pr(e,r.range,t)}function Pr(r,e,t){return(e.low?.value===void 0||si(r,e.low.value,t))&&(e.high?.value===void 0||oi(r,e.high.value,t))}function ta(r,e){return parseFloat(r.toFixed(e))}function ra(r,e,t){return M(r,t)===M(e,t)}function na(r,e,t){return M(r,t)<M(e,t)}function ia(r,e,t){return M(r,t)>M(e,t)}function oi(r,e,t){return M(r,t)<=M(e,t)}function si(r,e,t){return M(r,t)>=M(e,t)}function M(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function oa(r,e,t){return r.find(n=>typeof e=="string"?Tt(n.code||{},t)===e:Tt(n.code||{},t)===Tt(e,t))}function Me(r){if(r)return Array.isArray(r)?r:[r]}var St=r=>new Promise(e=>{setTimeout(e,r)});function sa(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function aa(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ie(r,e){return r?(r.push(e),r):[e]}function la(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 Fe(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=oe(r.text);if(n)return n}return t.join(" ").trim()}function da(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function pa(r){return oe(r.family)??""}function bt(r){return r instanceof Date&&!isNaN(r.getTime())}function fa(r,e,t){if(!r)return"";let n=new Date(r);return bt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function ai(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return bt(n)?n.toLocaleTimeString(e,t):""}function Et(r,e,t){if(!r)return"";let n=new Date(r);return bt(n)?n.toLocaleString(e,t):""}function ma(r,e,t){return!r||!r.start&&!r.end?"":Et(r.start,e,t)+" - "+Et(r.end,e,t)}var ci={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ui={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},li={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ha(r){if(!r)return"";let e=[];return di(e,r.repeat),r.event&&e.push(r.event.map(t=>Et(t)).join(", ")),I(e.join(" ").trim())}function di(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(ci[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ui[i]):r.push("per "+n+" "+li[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(I).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>ai(o)).join(", "))}function ga(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=gi(n.value,e),`> ${Y(n,e)}`):`>= ${Y(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=hi(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 ya(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function pi(r){if(!r)return"";let e=oe(r.text);return e||(r.coding?r.coding.map(t=>fi(t)).join(", "):"")}function fi(r){return oe(r?.display)??oe(r?.code)??""}function mi(r){if(!r)return"";if("component"in r)return r.component.map(t=>mi(t)).join(" / ");if(r.valueQuantity)return Y(r.valueQuantity);if(r.valueCodeableConcept)return pi(r.valueCodeableConcept);let e=oe(r.valueString);return e||""}function oe(r){return typeof r=="string"?r:void 0}function hi(r,e,t=1){return(Cr(r,e)+t)*Math.pow(10,-e)}function gi(r,e,t=1){return(Cr(r,e)-t)*Math.pow(10,-e)}function Cr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var yi={"http://hl7.org/fhirpath/System.String":"string"};function Ta(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:yi[t.code]??t.code})),e}function xi(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 Ar(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,xi(i,o)])),constraints:[],innerTypes:[]};return e}var wr={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};var Ir="http://unitsofmeasure.org",Ea="http://loinc.org",ba="http://snomed.info/sct",Ra="http://www.nlm.nih.gov/research/umls/rxnorm",Pa="http://www.ama-assn.org/go/cpt",Ca="http://hl7.org/fhir/sid/icd-10",Aa="http://hl7.org";function Pt(r,e,t,n){new Rt(r,e,t,n).crawl()}var Rt=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(g(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=F(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=Ct(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Me(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ne(e.type.charAt(0))){let n=se(e.type);this.crawlObject(e,n,t)}}};function Ct(r,e,t){if(e==="$this")return[r];let[n,...i]=e.split("."),o=[A(r,n,t)];for(let s of i){let a=[];for(let c of o)if(Array.isArray(c))for(let l of c)a.push(A(l,s,t));else c!==void 0&&a.push(A(c,s,t));o=a}return o}var kr={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"},_e={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:/.*/},vi={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Za(r,e){new At(r.resourceType,r,e).validate()}var At=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?this.schema=It(n):this.schema=se(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new f(h("Missing resource type"));this.constraintsCheck(g(this.rootResource),this.schema,e),wt(this.rootResource,e,this.issues),Pt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new f({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 c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(y(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(y(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(y(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Or(a,s)||this.issues.push(y(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(d=>[d.name,0])):void 0;for(let d of c){this.constraintsCheck(d,s,n),this.checkPropertyValue(d,n);let b=Ri(d,s.slicing);b&&l&&(l[b]+=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):S(e)?(this.issues.push(y(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ne(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)&&!Ei(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 vi)&&!this.isExpressionTrue(o,e,n)){this.issues.push(pr(n,o));return}}}isExpressionTrue(e,t,n){try{let i=$(e.expression,[t],{"%context":t,"%resource":g(this.currentResource[this.currentResource.length-1]),"%rootResource":g(this.rootResource),"%ucum":g(Ir)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(fr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Pi(e);if(n){let{type:o,value:s}=n;if(!(o in kr)){this.issues.push(y(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=kr[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&&Pt(i.value,this,se("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(y(n,"String must contain non-whitespace content"));return}let i=_e[t];i&&!i.exec(e)&&this.issues.push(y(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(y(n,"Invalid numeric value")):Si(t)&&!Number.isInteger(e)?this.issues.push(y(n,"Expected number to be an integer")):t===u.positiveInt&&e<=0?this.issues.push(y(n,"Expected number to be positive")):t===u.unsignedInt&&e<0&&this.issues.push(y(n,"Expected number to be non-negative"))}};function Si(r){return r===u.integer||r===u.positiveInt||r===u.unsignedInt}function Ei(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 wt(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]&&wt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&wt(i,o,t)}}function Or(r,e){return!(e.pattern&&!De(r,e.pattern)||e.fixed&&!Ve(r,e.fixed))}function bi(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(Or(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Ri(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Me(Ct(r,n.path))?.some(i=>bi(i,n,t))))return t.name}}function Pi(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function p(r){return[{type:u.boolean,value:r}]}function g(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:u.integer,value:r}:typeof r=="number"?{type:u.decimal,value:r}:typeof r=="boolean"?{type:u.boolean,value:r}:typeof r=="string"?{type:u.string,value:r}:P(r)?{type:u.Quantity,value:r}:F(r)?{type:r.resourceType,value:r}:{type:u.BackboneElement,value:r}}function D(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,t){if(!r.value)return;let n=qe(r.type,e,t?.profileUrl);return n?Ci(r,e,n):Ai(r,e)}function Ci(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let l of i){let d=c+I(l.code);if(o=n[d],a=n["_"+d],o!==void 0||a!==void 0){s=l.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o))for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=Fr(o[c],a[c]);else o=Fr(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Vr(c,s)):Vr(o,s)}function Vr(r,e){return e==="Resource"&&F(r)&&(e=r.resourceType),{type:e,value:r}}function Ai(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 u){let o=e+I(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(g):g(n)}function Le(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(D(_r(t,i))){n=!0;break}n||e.push(t)}return e}function kt(r){return p(!D(r))}function Ot(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?p(!1):p(r.every((t,n)=>D(_r(t,e[n]))))}function _r(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(Br(t,n)):p(typeof t=="object"&&typeof n=="object"?Dt(r,e):t===n)}function Vt(r,e){return r.length===0&&e.length===0?p(!0):r.length!==e.length?p(!1):(r.sort(Dr),e.sort(Dr),p(r.every((t,n)=>D(wi(t,e[n])))))}function wi(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(Br(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"?Dt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Dr(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 Be(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 Ur(t);case"DateTime":return Ue(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Lr(t);case"Quantity":return P(t);default:return typeof t=="object"&&t?.resourceType===e}}function Ur(r){return typeof r=="string"&&!!_e.date.exec(r)}function Ue(r){return typeof r=="string"&&!!_e.dateTime.exec(r)}function Lr(r){return!!(r&&typeof r=="object"&&("start"in r&&Ue(r.start)||"end"in r&&Ue(r.end)))}function ic(r){if(r){if(Ur(r))return{start:Nr(r,"0000-00-00T00:00:00.000Z"),end:Nr(r,"xxxx-12-31T23:59:59.999Z")};if(Ue(r))return{start:r,end:r};if(Lr(r))return r}}function Nr(r,e){return r+e.substring(r.length)}function P(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Br(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 Dt(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(Mr(o)&&Mr(s)){if(!Dt(o,s))return!1}else if(o!==s)return!1}return!0}function Mr(r){return r!==null&&typeof r=="object"}function Fr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Ii(r??{},e)}return r}function Ii(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function It(r){return new Ft(r).parse()}var he=Ar(wr),Ut=Object.create(null),qr=Object.create(null);function Mt(r){let e;return r?(e=qr[r],e||(e=qr[r]=Object.create(null))):e=he,e}function Lt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)Bt(n,e)}function Bt(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=It(r),n=Mt(e);n[r.name]=t,e&&r.url===e&&(Ut[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Gr(){return he}function Hr(r){return!!he[r]}function ge(r,e){let t=Mt(e)[r];return!t&&e&&(t=Mt()[r]),t}function se(r,e){let t=ge(r,e);if(!t)throw new f(v("Unknown data type: "+r));return t}function Kr(r){let e=he[r];return e&&qt(e)}function Wr(r){return!!Ut[r]}function mc(r){return Ut[r]}var Ft=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:Di(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=Nt(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[Nt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Nt(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&&!ae(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:_t(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:ae(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Vi(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&&!ae(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!ae(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!ae(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!!(ae(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10),binding:e.binding}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=_t(e)),n||(n=xr(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=jr(e.max),n=e.base?.max?jr(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:Qr(A(i,"fixed[x]")),pattern:Qr(A(i,"pattern[x]")),binding:e.binding}}};function hc(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=he[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)&&!ki.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($r):[$r]},r}var $r={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},ki=["resourceType","id","meta"];function jr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Nt(r,e=""){return Oi(r.path,e)}function Oi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function ae(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Qr(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function Vi(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 Di(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 u={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 Ec(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&$t(t)}}function $t(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 _t(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Ni((r.base?.path??r.path)?.split(".")):e}function Ni(r){return r.length===1?r[0]:r.map(I).join("")}function qt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function bc(){return Object.values(Gr()).filter(qt).map(r=>r.name)}function Rc(r){return N.types[r]?.searchParams}function Pc(r,e){return N.types[r]?.searchParams?.[e]}function Cc(r){let e=r.replaceAll("[x]","").split(".").pop();return Mi(e)}function Mi(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(_i).join(" ").replace("_"," ").replace(/\s+/g," ")}var Fi=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function _i(r){let e=r.toUpperCase();return r===e?r:Fi.has(e)?e:e.charAt(0)+r.slice(1)}function qe(r,e,t){let n=ge(r,t);if(n)return Ui(n.elements,e)}function Ui(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 F(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function me(r){return!!(r&&typeof r=="object"&&"reference"in r)}var N={types:{}};function Jr(r){switch(r.type){case u.uuid:case u.uri:case u.url:case u.string:case u.oid:case u.markdown:case u.id:case u.code:case u.canonical:case u.base64Binary:case u.SystemString:case u.date:case u.dateTime:case u.instant:return r.value;case u.Identifier:return`${r.value.system??""}|${r.value.value}`;case u.Coding:return zr(r.value);case u.CodeableConcept:return r.value.coding?.map(zr).join(",")??r.value.text;case u.HumanName:return r.value.text?r.value.text:Fe(r.value);case u.unsignedInt:case u.positiveInt:case u.integer:case u.decimal:return r.value.toString();case u.boolean:return r.value?"true":"false";case u.Extension:return r.value.url;case u.ContactPoint:return r.value.value;case u.Quantity:case u.Age:case u.Count:case u.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case u.Reference:return r.value.reference;default:return F(r.value)?J(r.value).reference:JSON.stringify(r)}}function zr(r){return r?`${r.system??""}|${r.code}`:""}function ce(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 ye=()=>[],R={empty:(r,e)=>p(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>p(e.length!==0),exists:(r,e,t)=>t?p(e.filter(n=>D(t.eval(r,[n]))).length>0):p(e.length>0&&e.every(n=>!S(n.value))),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:ye,supersetOf:ye,count:(r,e)=>[{type:u.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===R.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:ye,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 Le([...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 D(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);if(typeof t=="boolean")return[{type:u.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(R.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="number"?[{type:u.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:u.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:u.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:p(R.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.date,value:ce(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:p(R.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.dateTime,value:ce(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:p(R.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="number"?[{type:u.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:u.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:u.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:p(R.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return P(t)?[{type:u.Quantity,value:t}]:typeof t=="number"?[{type:u.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:u.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:u.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:p(R.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return t==null?[]:P(t)?[{type:u.string,value:`${t.value} '${t.unit}'`}]:[{type:u.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:p(R.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:u.time,value:ce("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:p(R.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,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>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)=>U(Math.abs,r,e),ceiling:(r,e)=>U(Math.ceil,r,e),exp:(r,e)=>U(Math.exp,r,e),floor:(r,e)=>U(Math.floor,r,e),ln:(r,e)=>U(Math.log,r,e),log:(r,e,t)=>U((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>U(Math.pow,r,e,t),round:(r,e)=>U(Math.round,r,e),sqrt:(r,e)=>U(Math.sqrt,r,e),truncate:(r,e)=>U(t=>t|0,r,e),children:ye,descendants:ye,trace:(r,e,t)=>e,now:()=>[{type:u.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:u.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:u.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=R.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=R.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=Oe(o[0].value,s[0].value);return[{type:u.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof B?n=t.name:t instanceof H&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:u.boolean,value:Be(i,n)})):[]},not:(r,e)=>R.toBoolean(r,e).map(t=>({type:u.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:u.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:u.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:u.BackboneElement,value:{namespace:"System",name:"Integer"}}:F(t)?{type:u.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:u.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:u.boolean,value:o.value?.resourceType===i}))}};function k(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=L(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 U(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=L(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(d=>d.eval(e,t)[0]?.value)),c=o?u.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:c,value:l}]}function L(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 $e=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 F(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},je=class{eval(){return[]}toString(){return"{}"}},Qe=class extends Ce{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()}},Z=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return R.ofType(e,this.left.eval(e,t),this.right)}},E=class extends Q{},C=class extends E{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=P(s)?s.value:s,l=P(a)?a.value:a,d=this.impl(c,l);return typeof d=="boolean"?p(d):P(s)?[{type:u.Quantity,value:{...s,value:d}}]:[g(d)]}},Ge=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:u.string,value:o.map(s=>s.value).join("")}]:o}},He=class extends E{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))}},Ke=class extends E{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?p(i.some(o=>o.value===n.value)):[]}},H=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()}`}},ue=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 Le([...n,...i])}},We=class extends E{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ot(n,i)}},ze=class extends E{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return kt(Ot(n,i))}},Je=class extends E{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Vt(n,i)}},Ye=class extends E{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return kt(Vt(n,i))}},X=class extends E{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(Be(n[0],i))}},Ze=class extends E{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?p(!0):n?.value===!1||i?.value===!1?p(!1):[]}},Xe=class extends E{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?p(!1):n?.value||i?.value?p(!0):[]}},et=class extends E{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?[]:p(n.value!==i.value)}},tt=class extends E{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?p(!0):!n||!i?[]:p(!1)}},j=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=R[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 Li=["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;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;this.curr()==="T"&&(t=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr()))));let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&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"&&Li.includes(r.value)))}var xe=["true","false"],Te=["!=","!~","<=",">=","{}","->"];function Yr(r){return new K(r,xe,Te).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},qi={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},$i={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ee(e,t)},precedence:m.Indexer},ji={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 Qi(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 ve(){return new Ae().registerPrefix("String",{parse:(r,e)=>new O({type:u.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new O({type:u.dateTime,value:ce(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new O({type:u.Quantity,value:Qi(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new O({type:e.value.includes(".")?u.decimal:u.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new O({type:u.boolean,value:!0})}).registerPrefix("false",{parse:()=>new O({type:u.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new B(e.value)}).registerPrefix("{}",{parse:()=>new je}).registerPrefix("(",qi).registerInfix("[",$i).registerInfix("(",ji).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 H(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 ue(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new We(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new ze(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Je(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new Ye(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 Ge(r,t)).infixLeft("and",m.And,(r,e,t)=>new Ze(r,t)).infixLeft("as",m.As,(r,e,t)=>new Z(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new He(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 Ke(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(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 Xe(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new et(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new tt(r,t))}var Gi=ve();function jt(r){return new $e(r,Gi.construct(Yr(r)).consumeAndParse())}function le(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 $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return jt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Zr=(d=>(d.BOOLEAN="BOOLEAN",d.NUMBER="NUMBER",d.QUANTITY="QUANTITY",d.TEXT="TEXT",d.REFERENCE="REFERENCE",d.CANONICAL="CANONICAL",d.DATE="DATE",d.DATETIME="DATETIME",d.PERIOD="PERIOD",d.UUID="UUID",d))(Zr||{});function Xr(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=Ki(r,e)),t}function Hi(r,e,t){let n=N.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ki(r,e){let t=e.code,n=Ji(t),i=tn(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Se(a);c.length===1&&c[0]instanceof E?o.propertyTypes.add("boolean"):en(o,Se(a),r,1)}let s={columnName:n,type:Yi(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Hi(r,t,s),s}function en(r,e,t,n){let i=e[n];if(i instanceof Z){r.propertyTypes.add(i.right.toString());return}if(i instanceof j){Wi(r,i);return}let o=i.toString(),s=qe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof ee&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=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 d=l.code;zi(d)&&(d=s.type[0].code),en(r,e,d,c)}}function Wi(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 zi(r){return r==="Element"||r==="BackboneElement"}function Ji(r){return r.split("-").reduce((e,t,n)=>e+(n?I(t):t),"")}function Yi(r,e){switch(r.type){case"date":return e.size===1&&e.has(u.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(u.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(u.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function tn(r,e){let t=[],n=jt(e);return Qt(r,n.child,t),t}function lu(r,e){let t=tn(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Qt(r,e,t){e instanceof ue?(Qt(r,e.left,t),Qt(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Se(r){if(r instanceof Z||r instanceof ee)return[Se(r.left),r].flat();if(r instanceof E)return[r];if(r instanceof H)return[Se(r.left),Se(r.right)].flat();if(r instanceof j){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var yu=20,Zi=(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))(Zi||{}),on={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"},Gt={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function xu(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 an(r,t)}function sn(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return an(e,r.searchParams.entries())}function Tu(r){return sn(new URL(r,"https://example.com/"))}function Ht(r){return sn(new URL(r,"https://api.medplum.com/"))}function an(r,e){let t={resourceType:r};for(let[n,i]of e)Xi(t,n,i);return t}function Xi(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(".")){r.filters=ie(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":eo(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=rn(t);i==="iterate"&&(s.modifier="iterate"),r.include=ie(r.include,s);break}case"_revinclude":{let s=rn(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=ie(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=N.types[r.resourceType]?.searchParams?.[n];s?r.filters=ie(r.filters,to(s,i,t)):r.filters=ie(r.filters,io(n,i,t))}}}function eo(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 to(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return ro(r,t);case"reference":case"string":case"token":case"uri":return no(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function ro(r,e){let{operator:t,value:n}=oo(e);return{code:r.code,operator:t,value:n}}function no(r,e,t){return{code:r.code,operator:so(e),value:t}}function io(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Gt&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function oo(r){let e=r.substring(0,2),t=Gt[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function so(r){return on[r]??"eq"}function rn(r){let e=r.split(":");if(e.includes("*"))throw new f(v("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(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 f(v(`Invalid include value '${r}'`))}var ao=/{{([^{}]+)}}/g;function vu(r,e){return r=r.replaceAll(ao,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":Jr(i[0])}),Ht(r)}function Su(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(co(t))),r.sortRules&&r.sortRules.length>0&&e.push(uo(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(nn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(nn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function co(r){let e=r.operator in on?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in Gt?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function uo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function nn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function cn(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!lo(r,e,t))return!1}return!0}function lo(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=le(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return po(r,t,n);case"string":case"uri":return un(r,t,n);case"token":return fo(r,t,n);case"date":return ho(r,t,n);default:return!1}}function po(r,e,t){let n=le(t.expression,r),i=rt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function fo(r,e,t){return Xr(r.resourceType,t).type==="BOOLEAN"?mo(r,e,t):un(r,e,t,!0)}function mo(r,e,t){let n=le(t.expression,r),i=e.value==="true",o=n.includes(i);return rt(e.operator)?!o:o}function un(r,e,t,n){let i=le(t.expression,r),o=e.value.split(","),s=rt(e.operator);for(let a of i)for(let c of o)if(Kt(a,e.operator,c,n))return!s;return s}function Kt(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Kt(r,e,o,!1)&&(!s||Kt(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 ho(r,e,t){let n=le(t.expression,r),i=e.value.split(","),o=rt(e.operator);for(let s of n)for(let a of i)if(go(s,e.operator,a))return!o;return o}function go(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 rt(r){return r==="ne"||r==="not"}var yo={resourceType:"*"},xo=["DomainConfiguration","JsonWebKey","Login"],To=["PasswordChangeRequest","Project","ProjectMembership","User"],vo=(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))(vo||{}),So=["read","vread","history","history-instance"];function Iu(r,e){if(r.resource){for(let t of r.resource)if(Wt(t.resourceType,e))return!0}return!1}function Eo(r,e){if(xo.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Wt(t.resourceType,e)&&!t.readonly)return!0}return!1}function ku(r,e){let t=e.resourceType;return Eo(r,t)?bo(r,e,!1):!1}function bo(r,e,t){if(r.resource){for(let n of r.resource)if(ln(e,t?"read":"update",n))return!0}return!1}function Ou(r,e,t){if(!t)return yo;if(t.resource){for(let n of t.resource)if(ln(r,e,n))return n}}function ln(r,e,t){let n=r.resourceType;return!(!Wt(t.resourceType,n)||t.readonly&&!So.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!cn(r,Ht(t.criteria)))}function Wt(r,e){return r===e||r==="*"&&!To.includes(e)}function dn(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 pn(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 zt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Er(r.buffer)}async function fn(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 Ro(r){let e={};r=vt(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 Co(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 Co(r){let e=wo(r),{sorted:t,cycles:n}=Ao(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],l={...c,request:{...c.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function Ao(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function mn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(me(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else mn(n,e)}}function wo(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&&mn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Lu(r){r=vt(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 Ro(e)}var nt=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",PING:"x-application/ping"};var Ee=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}},it=class{constructor(){this.emitter=new Ee}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"},Io=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Yt=["DiagnosticReport-update"];function gn(r){return Yt.includes(r)}function yn(r){if(Yt.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var ko={"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 Oo(r){return Io.includes(r)}function xn(r){return!!r.endpoint}function Zt(r){if(!st(r))throw new f(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return xn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function st(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!Jt[o])return!1;return!(xn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function hn(r,e,t,n){if(typeof e!="object")throw new f(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Oo(e.resourceType))throw new f(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Vo(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)hn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)hn(r,s,t,n)}}function Do(r,e){let t=new Map,n=ko[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Vo(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Xt(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!Jt[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Jt).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(Yt.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return Do(e,i),{timestamp:new Date().toISOString(),id:te(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var ot=class extends it{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!st(e))throw new f(h("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function No(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=dn(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 Tn(r){return r.split(".").length===3}function at(r){let[e,t,n]=r.split(".");return No(t)}function vn(r){try{return typeof at(r).login_id=="string"}catch{return!1}}function Sn(r){try{let t=at(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Mo,w=class{constructor(e){this[Mo]="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)}};Mo=Symbol.toStringTag;var be=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new er)}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?Tr(t):void 0)}},er=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]}},En=class extends be{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 El="3.0.3-d5dbfb87",Fo=V.FHIR_JSON+", */*; q=0.1",_o="https://api.medplum.com/",Uo=1e3,Lo=6e4,Bo=0,bn="Binary/",Rn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},qo=(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))(qo||{}),$o=(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))($o||{}),jo=(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))(jo||{}),Qo=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Qo||{}),Pn=class extends Ee{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??Go(),this.storage=t?.storage??new be,this.createPdfImpl=t?.createPdf,this.baseUrl=An(t?.baseUrl??_o),this.fhirBaseUrl=An(ct(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=ct(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=ct(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=ct(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?Bo:Lo),this.cacheTime>0?this.requestCache=new nt(t?.resourceCacheSize??Uo):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.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new 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:c,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",c)}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 c=new w((async()=>{let l=await this.get(o,i);if(l.entry)for(let d of l.entry)this.cacheResource(d.resource);return l})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new w(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new w(this.search(t,n,i).then(tr));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!c)break;yield tr(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Rn;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(Rn));let[o,s]=i.split("/");return!o||!s?new w(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Hr(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=`{
1
+ var Me=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},H=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Ne=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 Pt(e,this.prefixParselets,this.infixParselets)}},Pt=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 wt="ok",Fe="created",At="gone",It="not-modified",kt="not-found",Rr="conflict",Cr="unauthorized",Pr="forbidden",wr="too-many-requests",_e="accepted",zs={resourceType:"OperationOutcome",id:wt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Js={resourceType:"OperationOutcome",id:Fe,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Ys={resourceType:"OperationOutcome",id:It,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Ar={resourceType:"OperationOutcome",id:kt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Zs={resourceType:"OperationOutcome",id:Cr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Xs={resourceType:"OperationOutcome",id:Pr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},ea={resourceType:"OperationOutcome",id:At,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},ta={resourceType:"OperationOutcome",id:wr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function ra(r){return{resourceType:"OperationOutcome",id:_e,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function E(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function na(r){return{resourceType:"OperationOutcome",id:Rr,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function m(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Ir(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ae(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Ot(r){return r.id===wt||r.id===Fe||r.id===It||r.id===_e}function ia(r){return r.id===Fe}function oa(r){return r.id===_e}function sa(r){return r.id===kt}function aa(r){return r.id===At}function ca(r){switch(r.id){case wt:return 200;case Fe:return 201;case _e:return 202;case It:return 304;case Cr:return 401;case Pr:return 403;case kt:return 404;case Rr:return 409;case At:return 410;case wr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function ua(r,e){if(!Ot(r)||e===void 0)throw new p(r)}var p=class extends Error{constructor(e,t){super(kr(e)),this.outcome=e,this.cause=t}};function Ue(r){return r instanceof p?r.outcome:ae(r)?r:E(di(r))}function di(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ae(r)?kr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function kr(r){let e=r.issue?.map(pi)??[];return e.length>0?e.join("; "):"Unknown error"}function pi(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 Vt(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 Vt("structure",e,r)}function Or(r,e){return Vt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Vr(r,e,t,n){return Vt("processing",e,r,{...n,error:t})}function Y(r){let e=Z(r),t=mi(r);return t===e?{reference:e}:{reference:e,display:t}}function Z(r){return ve(r)?r.reference:`${r.resourceType}/${r.id}`}function Le(r){if(r)return ve(r)?r.reference.split("/")[1]:r.id}function ma(r){if(r?.reference===void 0)throw new p(m("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new p(m("Unable to parse reference string."));return[e,t]}function fi(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function mi(r){if(fi(r)){let e=hi(r);if(e)return e}if(r.resourceType==="Device"){let e=gi(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:Z(r)}function hi(r){let e=r.name;if(e&&e.length>0)return Ge(e[0])}function gi(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function ha(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Dr(t);if(n)return n}else return Dr(e)}function Dr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function ga(r){return r?new Date(r):void 0}function Be(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),d=a-i;(c<o||c===o&&u<s)&&d--;let v=a*12+c-(i*12+o);u<s&&v--;let A=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:d,months:v,days:A}}function ya(r,e){let{years:t,months:n,days:i}=Be(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 xa(r){let e={};return Mr(r.item,e),e}function Mr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Mr(t.item,e)}function va(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 Ta(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 Sa(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 Ea(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 Fr(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 _r(r,e){return JSON.stringify(r,yi,e?2:void 0)}function yi(r,e){return!xi(r)&&T(e)?void 0:e}function xi(r){return!!/\d+$/.exec(r)}function T(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!$(r):!1}function $(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function qe(r,e,t){return r===e||T(r)&&T(e)?!0:T(r)||T(e)?!1:Array.isArray(r)&&Array.isArray(e)?vi(r,e):Array.isArray(r)||Array.isArray(e)?!1:O(r)&&O(e)?Ti(r,e,t):(O(r)||O(e),!1)}function vi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!qe(r[t],e[t]))return!1;return!0}function Ti(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!qe(o,s,i))return!1}return!0}function je(r,e){return T(r)?!0:T(e)?!1:Array.isArray(r)&&Array.isArray(e)?Si(r,e):Array.isArray(r)||Array.isArray(e)?!1:O(r)&&O(e)?Ei(r,e):O(r)||O(e)?!1:r===e}function Si(r,e){return e.every(t=>r.some(n=>je(n,t)))}function Ei(r,e){return Object.entries(e).every(([t,n])=>t in r&&je(r[t],n))}function X(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function ba(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function O(r){return r!==null&&typeof r=="object"}function Ur(r){return r.every(e=>typeof e=="string")}var Lr=[];for(let r=0;r<256;r++)Lr.push(r.toString(16).padStart(2,"0"));function Br(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Lr[e[n]];return t.join("")}function qr(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 R(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function $e(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Mt(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ce(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Dt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ra(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 Ca(r,e,t,n){return r.qualifiedInterval?.find(i=>jr(i,e)&&Ci(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Pa(r,e,t){return r.qualifiedInterval?.find(n=>jr(n,e)&&t.includes(n.condition))}function jr(r,e){return bi(r,e)&&Ri(r,e)}function bi(r,e){return!r.gender||r.gender===e.gender}function Ri(r,e){return!r.age||$r(Be(e.birthDate).years,r.age)}function Ci(r,e,t){return!!r.range&&$r(e,r.range,t)}function $r(r,e,t){return(e.low?.value===void 0||wi(r,e.low.value,t))&&(e.high?.value===void 0||Pi(r,e.high.value,t))}function wa(r,e){return parseFloat(r.toFixed(e))}function Aa(r,e,t){return _(r,t)===_(e,t)}function Ia(r,e,t){return _(r,t)<_(e,t)}function ka(r,e,t){return _(r,t)>_(e,t)}function Pi(r,e,t){return _(r,t)<=_(e,t)}function wi(r,e,t){return _(r,t)>=_(e,t)}function _(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Oa(r,e,t){return r.find(n=>typeof e=="string"?Dt(n.code||{},t)===e:Dt(n.code||{},t)===Dt(e,t))}function Qe(r){if(r)return Array.isArray(r)?r:[r]}var Nt=r=>new Promise(e=>{setTimeout(e,r)});function Va(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function Da(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ue(r,e){return r?(r.push(e),r):[e]}function Qr(r,e){return new URL(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Fa(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 Ge(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=le(r.text);if(n)return n}return t.join(" ").trim()}function _a(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Ua(r){return le(r.family)??""}function _t(r){return r instanceof Date&&!isNaN(r.getTime())}function La(r,e,t){if(!r)return"";let n=new Date(r);return _t(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Ai(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return _t(n)?n.toLocaleTimeString(e,t):""}function Ft(r,e,t){if(!r)return"";let n=new Date(r);return _t(n)?n.toLocaleString(e,t):""}function Ba(r,e,t){return!r||!r.start&&!r.end?"":Ft(r.start,e,t)+" - "+Ft(r.end,e,t)}var Ii={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ki={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Oi={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function qa(r){if(!r)return"";let e=[];return Vi(e,r.repeat),r.event&&e.push(r.event.map(t=>Ft(t)).join(", ")),R(e.join(" ").trim())}function Vi(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Ii[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ki[i]):r.push("per "+n+" "+Oi[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(R).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Ai(o)).join(", "))}function ja(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=_i(n.value,e),`> ${ee(n,e)}`):`>= ${ee(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Fi(i.value,e),`< ${ee(i,e)}`):`<= ${ee(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${ee(n,e)} - ${ee(i,e)}`)}function ee(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 $a(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Di(r){if(!r)return"";let e=le(r.text);return e||(r.coding?r.coding.map(t=>Mi(t)).join(", "):"")}function Mi(r){return le(r?.display)??le(r?.code)??""}function Ni(r){if(!r)return"";if("component"in r)return r.component.map(t=>Ni(t)).join(" / ");if(r.valueQuantity)return ee(r.valueQuantity);if(r.valueCodeableConcept)return Di(r.valueCodeableConcept);let e=le(r.valueString);return e||""}function le(r){return typeof r=="string"?r:void 0}function Fi(r,e,t=1){return(Gr(r,e)+t)*Math.pow(10,-e)}function _i(r,e,t=1){return(Gr(r,e)-t)*Math.pow(10,-e)}function Gr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Ui={"http://hl7.org/fhirpath/System.String":"string"};function Ga(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:Ui[t.code]??t.code})),e}function Li(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 Hr(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,Li(i,o)])),constraints:[],innerTypes:[]};return e}var Wr={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};var Kr="http://unitsofmeasure.org",Ka="http://loinc.org",za="http://snomed.info/sct",Ja="http://www.nlm.nih.gov/research/umls/rxnorm",Ya="http://www.ama-assn.org/go/cpt",Za="http://hl7.org/fhir/sid/icd-10",Xa="http://hl7.org";function Lt(r,e,t,n){new Ut(r,e,t,n).crawl()}var Ut=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=de(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=U(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=Te(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Qe(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!$e(e.type.charAt(0))){let n=de(e.type);this.crawlObject(e,n,t)}}};function Te(r,e,t){if(e==="$this")return[r];let[n,...i]=e.split("."),o=[I(r,n,t)];for(let s of i){let a=[];for(let c of o)if(Array.isArray(c))for(let u of c)a.push(I(u,s,t));else c!==void 0&&a.push(I(c,s,t));o=a}return o}var zr={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"},He={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:/.*/},qi={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Rc(r,e){new Bt(r.resourceType,r,e).validate()}var Bt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?this.schema=$t(n):this.schema=de(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new p(m("Missing resource type"));this.constraintsCheck(g(this.rootResource),this.schema,e),qt(this.rootResource,e,this.issues),Lt(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 c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(y(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(y(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(y(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Jr(a,s)||this.issues.push(y(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(d=>[d.name,0])):void 0;for(let d of c){this.constraintsCheck(d,s,n),this.checkPropertyValue(d,n);let v=Qi(d,s.slicing);v&&u&&(u[v]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(y(n,"Missing required property")),!1):T(e)?(this.issues.push(y(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){$e(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)&&!$i(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 qi)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Or(n,o));return}}}isExpressionTrue(e,t,n){try{let i=Q(e.expression,[t],{"%context":t,"%resource":g(this.currentResource[this.currentResource.length-1]),"%rootResource":g(this.rootResource),"%ucum":g(Kr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Vr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Gi(e);if(n){let{type:o,value:s}=n;if(!(o in zr)){this.issues.push(y(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=zr[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&&Lt(i.value,this,de("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(y(n,"String must contain non-whitespace content"));return}let i=He[t];i&&!i.exec(e)&&this.issues.push(y(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(y(n,"Invalid numeric value")):ji(t)&&!Number.isInteger(e)?this.issues.push(y(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(y(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(y(n,"Expected number to be non-negative"))}};function ji(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function $i(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!!I(r,i);return!1}function qt(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]&&qt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&qt(i,o,t)}}function Jr(r,e){return!(e.pattern&&!je(r,e.pattern)||e.fixed&&!qe(r,e.fixed))}function jt(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(Jr(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Qi(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Qe(Te(r,n.path))?.some(i=>jt(i,n,t))))return t.name}}function Gi(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function f(r){return[{type:l.boolean,value:r}]}function g(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:P(r)?{type:l.Quantity,value:r}:U(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function N(r){return r.length===0?!1:!!r[0].value}function L(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function I(r,e,t){if(!r.value)return;let n=Je(r.type,e,t?.profileUrl);return n?Hi(r,e,n):Wi(r,e)}function Hi(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let d=c+R(u.code);if(o=n[d],a=n["_"+d],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o))for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=tn(o[c],a[c]);else o=tn(o,a);if(!T(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Yr(c,s)):Yr(o,s)}function Yr(r,e){return e==="Resource"&&U(r)&&(e=r.resourceType),{type:e,value:r}}function Wi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+R(i);if(o in t){n=t[o];break}}if(!T(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(N(rn(t,i))){n=!0;break}n||e.push(t)}return e}function Qt(r){return f(!N(r))}function Gt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!1):f(r.every((t,n)=>N(rn(t,e[n]))))}function rn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?f(Math.abs(t-n)<1e-8):P(t)&&P(n)?f(sn(t,n)):f(typeof t=="object"&&typeof n=="object"?Wt(r,e):t===n)}function Ht(r,e){return r.length===0&&e.length===0?f(!0):r.length!==e.length?f(!1):(r.sort(Zr),e.sort(Zr),f(r.every((t,n)=>N(Ki(t,e[n])))))}function Ki(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?f(Math.abs(s-a)<.01):P(s)&&P(a)?f(sn(s,a)):f(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Wt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Zr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function ze(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return nn(t);case"DateTime":return We(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return on(t);case"Quantity":return P(t);default:return typeof t=="object"&&t?.resourceType===e}}function nn(r){return typeof r=="string"&&!!He.date.exec(r)}function We(r){return typeof r=="string"&&!!He.dateTime.exec(r)}function on(r){return!!(r&&typeof r=="object"&&("start"in r&&We(r.start)||"end"in r&&We(r.end)))}function kc(r){if(r){if(nn(r))return{start:Xr(r,"0000-00-00T00:00:00.000Z"),end:Xr(r,"xxxx-12-31T23:59:59.999Z")};if(We(r))return{start:r,end:r};if(on(r))return r}}function Xr(r,e){return r+e.substring(r.length)}function P(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function sn(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 Wt(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(en(o)&&en(s)){if(!Wt(o,s))return!1}else if(o!==s)return!1}return!0}function en(r){return r!==null&&typeof r=="object"}function tn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return zi(r??{},e)}return r}function zi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function $t(r){return new Jt(r).parse()}var Se=Hr(Wr),Zt=Object.create(null),an=Object.create(null);function zt(r){let e;return r?(e=an[r],e||(e=an[r]=Object.create(null))):e=Se,e}function Xt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)er(n,e)}function er(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=$t(r),n=zt(e);n[r.name]=t,e&&r.url===e&&(Zt[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function dn(){return Se}function pn(r){return!!Se[r]}function Ee(r,e){let t=zt(e)[r];return!t&&e&&(t=zt()[r]),t}function de(r,e){let t=Ee(r,e);if(!t)throw new p(E("Unknown data type: "+r));return t}function fn(r){let e=Se[r];return e&&tr(e)}function mn(r){return!!Zt[r]}function hn(r){return Zt[r]}var Jt=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:Xi(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=Kt(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[Kt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Kt(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&&!pe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Yt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:pe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Zi(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&&!pe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!pe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!pe(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!!(pe(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10),binding:e.binding}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Yt(e)),n||(n=Fr(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=un(e.max),n=e.base?.max?un(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:ln(I(i,"fixed[x]")),pattern:ln(I(i,"pattern[x]")),binding:e.binding}}};function Bc(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Se[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+R(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Ji.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(cn):[cn]},r}var cn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ji=["resourceType","id","meta"];function un(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Kt(r,e=""){return Yi(r.path,e)}function Yi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function pe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function ln(r){return Array.isArray(r)&&r.length>0?r[0]:T(r)?void 0:r}function Zi(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 Xi(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 l={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function Wc(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&rr(t)}}function rr(r){for(let e of r.base??[]){let t=F.types[e];t||(t={searchParamsDetails:{}},F.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 Yt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?eo((r.base?.path??r.path)?.split(".")):e}function eo(r){return r.length===1?r[0]:r.map(R).join("")}function tr(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Kc(){return Object.values(dn()).filter(tr).map(r=>r.name)}function zc(r){return F.types[r]?.searchParams}function Jc(r,e){return F.types[r]?.searchParams?.[e]}function Yc(r){let e=r.replaceAll("[x]","").split(".").pop();return to(e)}function to(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(no).join(" ").replace("_"," ").replace(/\s+/g," ")}var ro=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function no(r){let e=r.toUpperCase();return r===e?r:ro.has(e)?e:e.charAt(0)+r.slice(1)}function Je(r,e,t){let n=Ee(r,t);if(n)return io(n.elements,e)}function io(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 U(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ve(r){return!!(r&&typeof r=="object"&&"reference"in r)}var F={types:{}};function yn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return gn(r.value);case l.CodeableConcept:return r.value.coding?.map(gn).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Ge(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return U(r.value)?Y(r.value).reference:JSON.stringify(r)}}function gn(r){return r?`${r.system??""}|${r.code}`:""}function fe(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 be=()=>[],C={empty:(r,e)=>f(e.length===0||e.every(t=>T(t.value))),hasValue:(r,e)=>f(e.length!==0),exists:(r,e,t)=>t?f(e.filter(n=>N(t.eval(r,[n]))).length>0):f(e.length>0&&e.every(n=>!T(n.value))),all:(r,e,t)=>f(e.every(n=>N(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return f(!1);return f(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return f(!0);return f(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return f(!1);return f(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return f(!0);return f(!1)},subsetOf:be,supersetOf:be,count:(r,e)=>[{type:l.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>f(e.length===C.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>N(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:be,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 N(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return f(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return f(!0);if(["false","f","no","n","0","0.0"].includes(n))return f(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:f(C.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:f(C.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:fe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:f(C.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:fe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:f(C.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:f(C.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return P(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:f(C.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return t==null?[]:P(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:f(C.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:fe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:f(C.toTime(r,e).length===1),indexOf:(r,e,t)=>V((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>V((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>V((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>V((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>V((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>V(t=>t.toUpperCase(),r,e),lower:(r,e)=>V(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>V((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>V((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>V((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>V(t=>t.length,r,e),toChars:(r,e)=>V(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>B(Math.abs,r,e),ceiling:(r,e)=>B(Math.ceil,r,e),exp:(r,e)=>B(Math.exp,r,e),floor:(r,e)=>B(Math.floor,r,e),ln:(r,e)=>B(Math.log,r,e),log:(r,e,t)=>B((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>B(Math.pow,r,e,t),round:(r,e)=>B(Math.round,r,e),sqrt:(r,e)=>B(Math.sqrt,r,e),truncate:(r,e)=>B(t=>t|0,r,e),children:be,descendants:be,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=C.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=C.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=Be(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof j?n=t.name:t instanceof W&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:ze(i,n)})):[]},not:(r,e)=>C.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return 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:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:U(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:l.boolean,value:o.value?.resourceType===i}))}};function V(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(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 B(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(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(d=>d.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function q(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 Ye=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()}},D=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},j=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 U(t)&&t.resourceType===this.name?e:I(e,this.name)}toString(){return this.name}},Ze=class{eval(){return[]}toString(){return"{}"}},Xe=class extends Me{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()}},te=class extends H{constructor(e,t){super("as",e,t)}eval(e,t){return C.ofType(e,this.left.eval(e,t),this.right)}},b=class extends H{},w=class extends b{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=P(s)?s.value:s,u=P(a)?a.value:a,d=this.impl(c,u);return typeof d=="boolean"?f(d):P(s)?[{type:l.Quantity,value:{...s,value:d}}]:[g(d)]}},et=class extends H{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:l.string,value:o.map(s=>s.value).join("")}]:o}},tt=class extends b{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return f(n.some(o=>o.value===i[0].value))}},rt=class extends b{constructor(e,t){super("in",e,t)}eval(e,t){let n=L(this.left.eval(e,t)),i=this.right.eval(e,t);return n?f(i.some(o=>o.value===n.value)):[]}},W=class extends H{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()}`}},me=class extends H{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])}},nt=class extends b{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Gt(n,i)}},it=class extends b{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Qt(Gt(n,i))}},ot=class extends b{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)}},st=class extends b{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Qt(Ht(n,i))}},re=class extends b{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return f(ze(n[0],i))}},at=class extends b{constructor(e,t){super("and",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?f(!0):n?.value===!1||i?.value===!1?f(!1):[]}},ct=class extends b{constructor(e,t){super("or",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?f(!1):n?.value||i?.value?f(!0):[]}},ut=class extends b{constructor(e,t){super("xor",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return!n||!i?[]:f(n.value!==i.value)}},lt=class extends b{constructor(e,t){super("implies",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?f(!0):!n||!i?[]:f(!1)}},G=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=C[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(", ")})`}},ne=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 oo=["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;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;this.curr()==="T"&&(t=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr()))));let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&so(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 so(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&oo.includes(r.value)))}var Re=["true","false"],Ce=["!=","!~","<=",">=","{}","->"];function xn(r){return new K(r,Re,Ce).tokenize()}var h={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},ao={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},co={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ne(e,t)},precedence:h.Indexer},uo={parse(r,e){if(!(e instanceof j))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new G(e.name,t)},precedence:h.FunctionCall};function lo(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 Pe(){return new Ne().registerPrefix("String",{parse:(r,e)=>new D({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new D({type:l.dateTime,value:fe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new D({type:l.Quantity,value:lo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new D({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new D({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new D({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new j(e.value)}).registerPrefix("{}",{parse:()=>new Ze}).registerPrefix("(",ao).registerInfix("[",co).registerInfix("(",uo).prefix("+",h.UnaryAdd,(r,e)=>new Xe("+",e,t=>t)).prefix("-",h.UnarySubtract,(r,e)=>new w("-",e,e,(t,n)=>-n)).infixLeft(".",h.Dot,(r,e,t)=>new W(r,t)).infixLeft("/",h.Divide,(r,e,t)=>new w("/",r,t,(n,i)=>n/i)).infixLeft("*",h.Multiply,(r,e,t)=>new w("*",r,t,(n,i)=>n*i)).infixLeft("+",h.Add,(r,e,t)=>new w("+",r,t,(n,i)=>n+i)).infixLeft("-",h.Subtract,(r,e,t)=>new w("-",r,t,(n,i)=>n-i)).infixLeft("|",h.Union,(r,e,t)=>new me(r,t)).infixLeft("=",h.Equals,(r,e,t)=>new nt(r,t)).infixLeft("!=",h.NotEquals,(r,e,t)=>new it(r,t)).infixLeft("~",h.Equivalent,(r,e,t)=>new ot(r,t)).infixLeft("!~",h.NotEquivalent,(r,e,t)=>new st(r,t)).infixLeft("<",h.LessThan,(r,e,t)=>new w("<",r,t,(n,i)=>n<i)).infixLeft("<=",h.LessThanOrEquals,(r,e,t)=>new w("<=",r,t,(n,i)=>n<=i)).infixLeft(">",h.GreaterThan,(r,e,t)=>new w(">",r,t,(n,i)=>n>i)).infixLeft(">=",h.GreaterThanOrEquals,(r,e,t)=>new w(">=",r,t,(n,i)=>n>=i)).infixLeft("&",h.Ampersand,(r,e,t)=>new et(r,t)).infixLeft("and",h.And,(r,e,t)=>new at(r,t)).infixLeft("as",h.As,(r,e,t)=>new te(r,t)).infixLeft("contains",h.Contains,(r,e,t)=>new tt(r,t)).infixLeft("div",h.Divide,(r,e,t)=>new w("div",r,t,(n,i)=>n/i|0)).infixLeft("in",h.In,(r,e,t)=>new rt(r,t)).infixLeft("is",h.Is,(r,e,t)=>new re(r,t)).infixLeft("mod",h.Modulo,(r,e,t)=>new w("mod",r,t,(n,i)=>n%i)).infixLeft("or",h.Or,(r,e,t)=>new ct(r,t)).infixLeft("xor",h.Xor,(r,e,t)=>new ut(r,t)).infixLeft("implies",h.Implies,(r,e,t)=>new lt(r,t))}var po=Pe();function nr(r){return new Ye(r,po.construct(xn(r)).consumeAndParse())}function he(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 Q(r,t).map(n=>n.value)}function Q(r,e,t){let n=t??{};return nr(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var vn=(d=>(d.BOOLEAN="BOOLEAN",d.NUMBER="NUMBER",d.QUANTITY="QUANTITY",d.TEXT="TEXT",d.REFERENCE="REFERENCE",d.CANONICAL="CANONICAL",d.DATE="DATE",d.DATETIME="DATETIME",d.PERIOD="PERIOD",d.UUID="UUID",d))(vn||{});function Tn(r,e){let t=F.types[r]?.searchParamsDetails?.[e.code];return t||(t=mo(r,e)),t}function fo(r,e,t){let n=F.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function mo(r,e){let t=e.code,n=yo(t),i=En(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=we(a);c.length===1&&c[0]instanceof b?o.propertyTypes.add("boolean"):Sn(o,we(a),r,1)}let s={columnName:n,type:xo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return fo(r,t,s),s}function Sn(r,e,t,n){let i=e[n];if(i instanceof te){r.propertyTypes.add(i.right.toString());return}if(i instanceof G){ho(r,i);return}let o=i.toString(),s=Je(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof ne&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let d=u.code;go(d)&&(d=s.type[0].code),Sn(r,e,d,c)}}function ho(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 re){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function go(r){return r==="Element"||r==="BackboneElement"}function yo(r){return r.split("-").reduce((e,t,n)=>e+(n?R(t):t),"")}function xo(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function En(r,e){let t=[],n=nr(e);return ir(r,n.child,t),t}function Nu(r,e){let t=En(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function ir(r,e,t){e instanceof me?(ir(r,e.left,t),ir(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function we(r){if(r instanceof te||r instanceof ne)return[we(r.left),r].flat();if(r instanceof b)return[r];if(r instanceof W)return[we(r.left),we(r.right)].flat();if(r instanceof G){if(r.name==="where"&&!(r.args[0]instanceof re))return[];if(r.name==="last")return[]}return[r]}var ju=20,vo=(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))(vo||{}),Cn={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"},or={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function $u(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 wn(r,t)}function Pn(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return wn(e,r.searchParams.entries())}function Qu(r){return Pn(new URL(r,"https://example.com/"))}function sr(r){return Pn(new URL(r,"https://api.medplum.com/"))}function wn(r,e){let t={resourceType:r};for(let[n,i]of e)To(t,n,i);return t}function To(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(".")){r.filters=ue(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":So(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=bn(t);i==="iterate"&&(s.modifier="iterate"),r.include=ue(r.include,s);break}case"_revinclude":{let s=bn(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=ue(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=F.types[r.resourceType]?.searchParams?.[n];s?r.filters=ue(r.filters,Eo(s,i,t)):r.filters=ue(r.filters,Co(n,i,t))}}}function So(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 Eo(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return bo(r,t);case"reference":case"string":case"token":case"uri":return Ro(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function bo(r,e){let{operator:t,value:n}=Po(e);return{code:r.code,operator:t,value:n}}function Ro(r,e,t){return{code:r.code,operator:wo(e),value:t}}function Co(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in or&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Po(r){let e=r.substring(0,2),t=or[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function wo(r){return Cn[r]??"eq"}function bn(r){let e=r.split(":");if(e.includes("*"))throw new p(E("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(E(`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(E(`Invalid include value '${r}'`))}var Ao=/{{([^{}]+)}}/g;function Gu(r,e){return r=r.replaceAll(Ao,(t,n)=>{let i=Q(n,[],e);return i.length!==1?"":yn(i[0])}),sr(r)}function Hu(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Io(t))),r.sortRules&&r.sortRules.length>0&&e.push(ko(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(Rn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Rn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Io(r){let e=r.operator in Cn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in or?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function ko(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Rn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function An(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Oo(r,e,t))return!1}return!0}function Oo(r,e,t){let n=F.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=he(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Vo(r,t,n);case"string":case"uri":return In(r,t,n);case"token":return Do(r,t,n);case"date":return No(r,t,n);default:return!1}}function Vo(r,e,t){let n=he(t.expression,r),i=dt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Do(r,e,t){return Tn(r.resourceType,t).type==="BOOLEAN"?Mo(r,e,t):In(r,e,t,!0)}function Mo(r,e,t){let n=he(t.expression,r),i=e.value==="true",o=n.includes(i);return dt(e.operator)?!o:o}function In(r,e,t,n){let i=he(t.expression,r),o=e.value.split(","),s=dt(e.operator);for(let a of i)for(let c of o)if(ar(a,e.operator,c,n))return!s;return s}function ar(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ar(r,e,o,!1)&&(!s||ar(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 No(r,e,t){let n=he(t.expression,r),i=e.value.split(","),o=dt(e.operator);for(let s of n)for(let a of i)if(Fo(s,e.operator,a))return!o;return o}function Fo(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 dt(r){return r==="ne"||r==="not"}var _o={resourceType:"*"},Uo=["DomainConfiguration","JsonWebKey","Login"],Lo=["PasswordChangeRequest","Project","ProjectMembership","User"],Bo=(S=>(S.READ="read",S.VREAD="vread",S.UPDATE="update",S.PATCH="patch",S.DELETE="delete",S.HISTORY="history",S.HISTORY_INSTANCE="history-instance",S.HISTORY_TYPE="history-type",S.HISTORY_SYSTEM="history-system",S.CREATE="create",S.SEARCH="search",S.SEARCH_TYPE="search-type",S.SEARCH_SYSTEM="search-system",S.SEARCH_COMPARTMENT="search-compartment",S.CAPABILITIES="capabilities",S.TRANSACTION="transaction",S.BATCH="batch",S.OPERATION="operation",S))(Bo||{}),qo=["read","vread","history","history-instance"];function el(r,e){if(r.resource){for(let t of r.resource)if(cr(t.resourceType,e))return!0}return!1}function jo(r,e){if(Uo.includes(e))return!1;if(r.resource){for(let t of r.resource)if(cr(t.resourceType,e)&&!t.readonly)return!0}return!1}function tl(r,e){let t=e.resourceType;return jo(r,t)?$o(r,e,!1):!1}function $o(r,e,t){if(r.resource){for(let n of r.resource)if(kn(e,t?"read":"update",n))return!0}return!1}function rl(r,e,t){if(!t)return _o;if(t.resource){for(let n of t.resource)if(kn(r,e,n))return n}}function kn(r,e,t){let n=r.resourceType;return!(!cr(t.resourceType,n)||t.readonly&&!qo.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!An(r,sr(t.criteria)))}function cr(r,e){return r===e||r==="*"&&!Lo.includes(e)}function On(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 Vn(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 ur(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Br(r.buffer)}async function Dn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ie(){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 Qo(r){let e={};r=X(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=ie(),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)=>Go(i,o,e),2);return Ho(JSON.parse(n))}function Go(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 Ho(r){let e=Ko(r),{sorted:t,cycles:n}=Wo(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function Wo(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Mn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ve(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Mn(n,e)}}function Ko(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&&Mn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ll(r){r=X(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=ie());return Qo(e)}var pt=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 M={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",PING:"x-application/ping"};var Ae=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}},oe=class{constructor(){this.emitter=new Ae}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var lr={"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"},zo=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],dr=["DiagnosticReport-update"];function Fn(r){return dr.includes(r)}function _n(r){if(dr.includes(r))throw new p(m(`'context.version' is required for '${r}'.`))}var Jo={"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 Yo(r){return zo.includes(r)}function Un(r){return!!r.endpoint}function pr(r){if(!mt(r))throw new p(m("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return Un(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function mt(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(!lr[o])return!1;return!(Un(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Nn(r,e,t,n){if(typeof e!="object")throw new p(m(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new p(m(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(m(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Yo(e.resourceType))throw new p(m(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new p(m(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Zo(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Nn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(m(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Nn(r,s,t,n)}}function Xo(r,e){let t=new Map,n=Jo[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(m(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Zo(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(m(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(m(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function fr(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(m("Must provide a topic."));if(!lr[e])throw new p(m(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(lr).join(", ")}`));if(typeof t!="object")throw new p(m("context must be a context object or array of context objects."));if(dr.includes(e)&&!n)throw new p(m(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return Xo(e,i),{timestamp:new Date().toISOString(),id:ie(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var ft=class extends oe{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new p(m("Subscription request should contain an endpoint."));if(!mt(e))throw new p(m("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function es(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=On(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 Ln(r){return r.split(".").length===3}function ht(r){let[e,t,n]=r.split(".");return es(t)}function Bn(r){try{return typeof ht(r).login_id=="string"}catch{return!1}}function qn(r){try{let t=ht(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var ts,k=class{constructor(e){this[ts]="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)}};ts=Symbol.toStringTag;var Ie=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new mr)}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?_r(t):void 0)}},mr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},jn=class extends Ie{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 hr=class extends oe{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},ke=class extends oe{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},gr=class{constructor(e){this.criteria=e,this.emitter=new ke(e),this.refCount=1}},gt=class{constructor(e,t){if(!(e instanceof yt))throw new p(m("First arg of constructor should be a `MedplumClient`"));let n;try{n=new URL(t).toString()}catch{throw new p(m("Not a valid URL"))}let i=new hr(n);this.medplum=e,this.ws=i,this.masterSubEmitter=new ke,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(Le(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let{emitter:o}of this.criteriaEntries.values())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new p(Ir(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e}};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(n)}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${Z(this.medplum.getProfile())}`,criteria:e.criteria,channel:{type:"websocket"}})).id);let{parameter:n}=await this.medplum.get(`/fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new p(m("Failed to get token"));if(!o)throw new p(m("Failed to get URL from $get-ws-binding-token"));return[t,i]}addCriteria(e){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let t=this.criteriaEntries.get(e);if(t)return t.refCount+=1,t.emitter;let n=new gr(e);return this.criteriaEntries.set(e,n),this.getTokenForCriteria(n).then(([i,o])=>{n.subscriptionId=i,this.criteriaEntriesBySubscriptionId.set(i,n),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:o}}))}).catch(i=>{console.error(i.message),this.emitError(e,i),this.criteriaEntries.delete(e)}),n.emitter}removeCriteria(e){let t=this.criteriaEntries.get(e);if(!t){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}if(t.refCount-=1,t.refCount>0)return;let n=this.criteriaEntries.get(e)?.subscriptionId,i={type:"disconnect",payload:{subscriptionId:n}};this.masterSubEmitter&&(this.masterSubEmitter._removeCriteria(e),this.masterSubEmitter.dispatchEvent(i)),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(i),this.criteriaEntries.delete(e),n&&this.criteriaEntriesBySubscriptionId.delete(n)}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.criteriaEntries.size}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new ke(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};var td="3.0.4-34ae986f",rs=M.FHIR_JSON+", */*; q=0.1",ns="https://api.medplum.com/",is=1e3,os=6e4,ss=0,$n="Binary/",Qn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},as=(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))(as||{}),cs=(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))(cs||{}),us=(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))(us||{}),ls=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(ls||{}),yt=class extends Ae{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??ds(),this.storage=t?.storage??new Ie,this.createPdfImpl=t?.createPdf,this.baseUrl=Hn(t?.baseUrl??ns),this.fhirBaseUrl=Hn(xt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=xt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=xt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=xt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?ss:os),this.cacheTime>0?this.requestCache=new pt(t?.resourceCacheSize??is):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.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new k(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,M.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(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 c=new k((async()=>{let u=await this.get(o,i);if(u.entry)for(let d of u.entry)this.cacheResource(d.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k(this.search(t,n,i).then(yr));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield yr(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Qn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new k(Promise.reject(new Error("Missing reference")));if(i==="system")return new k(Promise.resolve(Qn));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(pn(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new k((async()=>{let s=`{
4
4
  StructureDefinitionList(name: "${t}") {
5
5
  resourceType,
6
6
  name,
@@ -39,6 +39,6 @@ var Ce=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);Lt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)$t(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Wr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new w((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.get(a.toString());return tr(c).map(l=>(Bt(l,l.url),l.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(Lt([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async 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,c)=>{let l=new XMLHttpRequest,d=()=>l.abort();s?.signal?.addEventListener("abort",d);let b=q=>{s?.signal?.removeEventListener("abort",d),q instanceof Error?c(q):a(q)};l.responseType="json",l.onabort=()=>b(new Error("Request aborted")),l.onerror=()=>b(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?b(l.response):b(new f(ke(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",status:"completed",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",hr(t),"$push"),{destination:typeof n=="string"?n:fe(n),body:i,contentType:o,waitForResponse:s},V.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||fe(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=Sn(t),this.medplumServer=vn(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(bn)&&(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:bn+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 wn(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 f(lr);let c=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&c&&l==="follow")return this.request("GET",c,{...o,body:void 0});let d;if(a)try{d=await t.json()}catch(b){throw console.error("Error parsing response",t.status,b),b}else d=await t.text();if(t.status>=400)throw new f(ke(d));return d}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(c){this.retryCatch(a,i,c)}await St(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 c=await wn(a);c&&(i=await this.fetchWithRetry(c,s))}await St(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 f(ke(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&&!yt(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=Fo),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||n.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=zt();sessionStorage.setItem("pkceState",t);let n=zt();sessionStorage.setItem("codeVerifier",n);let i=await fn(n),o=br(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??Cn()),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??Cn()),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=pn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",Zt(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!st(t))throw new f(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",Zt(t),V.FORM_URL_ENCODED)}fhircastConnect(t){return new ot(t)}async fhircastPublish(t,n,i,o){return gn(n)?this.post(`/fhircast/STU3/${t}`,Xt(t,n,i,o),V.JSON):(yn(n),this.post(`/fhircast/STU3/${t}`,Xt(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;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new f(v(a.error_description))}catch(a){throw new f(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(Tn(n)){let i=at(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 Go(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Cn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function An(r){return r.endsWith("/")?r:r+"/"}function ct(r,e){return new URL(e,r).toString()}async function wn(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 tr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var Rl={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function In(r,e){if(!r.group)throw new f(v("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Ho(e);if(ne(t))throw new f(t);let n=Wo(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 Ho(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?Ko(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 Ko(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 Wo(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=zo(i,o)),s&&t.push(...s)}return t}function zo(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 Jo=[...Te,"->","<<",">>","=="];function kn(r){return new K(r,xe,Jo).tokenize()}var Yo={"-":"disjoint","==":"equal"},rr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){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(On)):t instanceof O||t instanceof B?(e.transform="copy",e.parameter=[On(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=Yo[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let l=this.parser.consume().value,d=e?.group?.find(b=>b.source===i&&b.target===c);d||(d={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(d)),d.element||(d.element=[]),d.element.push({code:o,target:[{code:l,equivalence:s}]})}};function On(r){if(r instanceof B)return{valueId:r.name};if(r instanceof O)return Zo(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Zo(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 Xo=ve().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function Ml(r){let e=Xo.construct(kn(r));return e.removeComments(),new rr(e).parse()}function $l(r,e,t){return es({root:r,loader:t},r,e)}function es(r,e,t){return ts(r,e),Nn(r,e),Mn(r,e.group[0],t)}function ts(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)Nn(r,i)}}function Nn(r,e){if(e.group)for(let t of e.group)nr(r,t.name,{type:"StructureMapGroup",value:t})}function Mn(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)Re(o,l.name,t[a++]);for(let l of i){let d=t[a++]??g({});Re(o,l.name,d),s.push(d)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)Fn(c,l);return s}function Fn(r,e){let t=!1;if(e.source)for(let n of e.source)rs(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)is(r,n);if(e.rule)for(let n of e.rule)Fn(r,n);if(e.dependent)for(let n of e.dependent)ps(r,n)}}function rs(r,e){let t=de(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&&!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.listMode&&(i=ns(e,i)),e.variable&&nr(r,e.variable,Un(i)),!0}function Vn(r,e,t){return D($(t,[r],e))}function ns(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 is(r,e){let t=de(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=os(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[g({})]:i=[g(n)];else switch(e.transform){case"append":i=ss(r,e);break;case"copy":i=as(r,e);break;case"create":i=cs(r,e);break;case"evaluate":i=us(r,e);break;case"translate":i=ls(r,e);break;case"truncate":i=ds(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=[],Re(t.value,e.element,n));for(let s of i)n.push(s.value)}else Re(t.value,e.element,i[0].value);e.variable&&nr(r,e.variable,Un(i))}}function os(r,e){return ge(r.type)?.elements?.[e]?.isArray}function ss(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 as(r,e){return e.parameter.flatMap(t=>W(r,t))}function cs(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[g(t)]}function us(r,e){let n=W(r,e.parameter?.[0])[0].value;return $(n,[],_n(r))}function ls(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=In(o,{system:o.group?.[0]?.source,code:n});return[g(s.match?.[0]?.concept?.code)]}function ds(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 ps(r,e){let t=de(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=de(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};Mn(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=Dn(n),n.length===1&&n[0].type==="id"){let i=de(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return Dn(i)}return n}function de(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return de(r.parent,e)}function _n(r,e={}){if(r.parent&&_n(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function nr(r,e,t){r.variables||(r.variables={}),Re(r.variables,e,t)}function Re(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function Dn(r){return Array.isArray(r)?r:[r]}function Un(r){return r.length===1?r[0]:r}var fs=[...Te,"eq","ne","co"];function Ln(r){return new K(r,xe,fs,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var ut=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},lt=class{constructor(e){this.child=e}},dt=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var ms={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 hs(r){let e=ms[r];if(!e)throw new f(v("Invalid operator: "+r));return e}var ir=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 lt(this.parse()),this.parser.consume(")")):e=new ut(this.parser.consume("Symbol").value,hs(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 dt(t,e,this.parse())):e}},gs=ve();function ed(r){let e=gs.construct(Ln(r));return e.removeComments(),new ir(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}},Bn=class r{constructor(e,t=new z){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new Pe(["MSH",this.context.getMsh2(),o,s,n,i,xs(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new Pe(["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=>Pe.parse(n,t)),t)}},Pe=class r{constructor(e,t=new z){this.context=t,vr(e)?this.fields=e.map(n=>pe.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 pe([[this.context.getMsh1()]],this.context);if(e===2)return new pe([[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=>pe.parse(n,t)),t)}},pe=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 nd(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),c=0;r.includes(".")&&(c=re(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,c)),d=ys(r,e?.tzOffset);return d!==0&&(l=new Date(l.getTime()-d)),l.toISOString()}function re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function ys(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 xs(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var or=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(or||{}),qn=class{constructor(e,t={},n=3){this.write=e;this.metadata=t;this.level=n}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
43
- `)}),this.write(JSON.stringify({level:or[e],timestamp:new Date().toISOString(),msg:t,...n,...this.metadata})))}};function od(r){let e=or[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function ud(r){if(!r)throw new f(h("Resource type is null"));if(!Kr(r))throw new f(h("Unknown resource type"))}function $n(r,e,t){r===null?t.push(y(e,"Invalid null value")):Array.isArray(r)?Ts(r,e,t):typeof r=="object"&&vs(r,e,t)}function Ts(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(y(`${e}[${n}]`,"Invalid undefined value")):$n(r[n],`${e}[${n}]`,t)}function vs(r,e,t){for(let[n,i]of Object.entries(r))$n(i,`${e}${e?".":""}${n}`,t)}function dd(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}export{vo as AccessPolicyInteraction,Ze as AndAtom,C as ArithemticOperatorAtom,Z as AsAtom,E as BooleanInfixOperatorAtom,Pa as CPT,be as ClientStorage,Ge as ConcatAtom,He as ContainsAtom,V as ContentType,Fo as DEFAULT_ACCEPT,yu as DEFAULT_SEARCH_COUNT,H as DotAtom,je as EmptySetAtom,We as EqualsAtom,Je as EquivalentAtom,Ee as EventTarget,Rl as ExternalSecretSystems,Jt as FHIRCAST_EVENT_NAMES,ko as FHIRCAST_EVENT_RESOURCES,Yt as FHIRCAST_EVENT_VERSION_REQUIRED,Io as FHIRCAST_RESOURCE_TYPES,ut as FhirFilterComparison,dt as FhirFilterConnective,lt as FhirFilterNegation,$e as FhirPathAtom,ot as FhircastConnection,j as FunctionAtom,Aa as HTTP_HL7_ORG,z as Hl7Context,pe as Hl7Field,Bn as Hl7Message,Pe as Hl7Segment,Ca as ICD10,tt as ImpliesAtom,Ke as InAtom,ee as IndexerAtom,Q as InfixOperatorAtom,X as IsAtom,Ea as LOINC,nt as LRUCache,O as LiteralAtom,or as LogLevel,qn as Logger,El as MEDPLUM_VERSION,Pn as MedplumClient,er as MemoryStorage,En as MockAsyncClientStorage,ze as NotEqualsAtom,Ye as NotEquivalentAtom,Qo as OAuthClientAssertionType,qo as OAuthGrantType,jo as OAuthTokenAuthMethod,$o as OAuthTokenType,f as OperationOutcomeError,Zi as Operator,m as OperatorPrecedence,Xe as OrAtom,pt as Parser,Ae as ParserBuilder,Ce as PrefixOperatorAtom,u as PropertyType,Ra as RXNORM,w as ReadablePromise,ba as SNOMED,Zr as SearchParameterType,B as SymbolAtom,K as Tokenizer,it as TypedEventTarget,Ir as UCUM,Qe as UnaryOperatorAtom,ue as UnionAtom,et as XorAtom,Is as accepted,Es as allOk,ie as append,br as arrayBufferToBase64,Er as arrayBufferToHex,Me as arrayify,yn as assertContextVersionOptional,_s as assertOk,v as badRequest,p as booleanToTypedValue,Ni as buildTypeName,Oe as calculateAge,Gs as calculateAgeString,Iu as canReadResourceType,ku as canWriteResource,Eo as canWriteResourceType,I as capitalize,$n as checkForNull,Ta as compressElement,In as conceptMapTranslate,ks as conflict,Lu as convertContainedResourcesToBundle,Ro as convertToTransactionBundle,Pt as crawlResource,pr as createConstraintIssue,Xt as createFhircastMessagePayload,fr as createProcessingIssue,J as createReference,y as createStructureIssue,bs as created,dn as decodeBase64,vt as deepClone,Ve as deepEquals,De as deepIncludes,pn as encodeBase64,fn as encryptSHA256,le as evalFhirPath,$ as evalFhirPathTyped,Ot as fhirPathArrayEquals,Vt as fhirPathArrayEquivalent,_r as fhirPathEquals,wi as fhirPathEquivalent,Be as fhirPathIs,kt as fhirPathNot,kr as fhirTypeToJsType,Xs as findObservationInterval,ea as findObservationReferenceRange,oa as findResourceByCode,Cs as forbidden,la as formatAddress,pi as formatCodeableConcept,fi as formatCoding,fa as formatDate,Et as formatDateTime,pa as formatFamilyName,da as formatGivenName,xs as formatHl7DateTime,Fe as formatHumanName,ya as formatMoney,mi as formatObservationValue,ma as formatPeriod,Y as formatQuantity,ga as formatRange,Su as formatSearchQuery,ai as formatTime,ha as formatTiming,te as generateId,Gr as getAllDataTypes,Ks as getAllQuestionnaireAnswers,Tt as getCodeBySystem,se as getDataType,Qs as getDateProperty,Hn as getDisplayString,qe as getElementDefinition,Ui as getElementDefinitionFromElements,_t as getElementDefinitionTypeName,lu as getExpressionForResourceType,tn as getExpressionsForResourceType,xr as getExtension,Js as getExtensionValue,Ws as getIdentifier,js as getImageSrc,Ct as getNestedProperty,Cc as getPathDisplayName,Mi as getPropertyDisplayName,Hs as getQuestionnaireAnswers,zt as getRandomString,fe as getReferenceString,bc as getResourceTypes,Pc as getSearchParameter,Xr as getSearchParameterDetails,Rc as getSearchParameters,Fs as getStatus,A as getTypedPropertyValue,Ci as getTypedPropertyValueWithSchema,N as globalSchema,As as gone,$t as indexSearchParameter,Ec as indexSearchParameterBundle,Lt as indexStructureDefinitionBundle,Ar as inflateBaseSchema,xi as inflateElement,ve as initFhirPathParserBuilder,Ds as isAccepted,xn as isCompletedSubscriptionRequest,gn as isContextVersionRequired,Vs as isCreated,Hr as isDataTypeLoaded,Ur as isDateString,Ue as isDateTimeString,S as isEmpty,Oo as isFhircastResourceType,Ms as isGone,Tn as isJwt,Ne as isLowerCase,vn as isMedplumAccessToken,Ns as isNotFound,G as isObject,yt as isOk,ne as isOperationOutcome,Lr as isPeriod,Yn as isPopulated,Wr as isProfileLoaded,Gn as isProfileResource,P as isQuantity,Br as isQuantityEquivalent,me as isReference,F as isResource,Kr as isResourceType,qt as isResourceTypeSchema,vr as isStringArray,Ys as isUUID,bt as isValidDate,aa as lazy,Bt as loadDataType,bi as matchDiscriminant,bo as matchesAccessPolicy,Pr as matchesRange,cn as matchesSearchRequest,jn as normalizeErrorString,ke as normalizeOperationOutcome,lr as notFound,Rs as notModified,Qn as operationOutcomeIssueToString,dr as operationOutcomeToString,Ht as parseCriteriaAsSearchRequest,jt as parseFhirPath,ed as parseFilterParameter,nd as parseHl7DateTime,at as parseJWTPayload,od as parseLogLevel,Ml as parseMappingLanguage,to as parseParameter,$s as parseReference,Tu as parseSearchDefinition,xu as parseSearchRequest,sn as parseSearchUrl,It as parseStructureDefinition,vu as parseXFhirQuery,ra as preciseEquals,ia as preciseGreaterThan,si as preciseGreaterThanOrEquals,na as preciseLessThan,oi as preciseLessThanOrEquals,ta as preciseRound,To as projectAdminResourceTypes,xo as protectedResourceTypes,Le as removeDuplicates,Co as reorderBundle,hr as resolveId,Ou as satisfiedAccessPolicy,Zt as serializeFhircastSubscriptionRequest,Os as serverError,Zs as setCodeBySystem,zs as setIdentifier,_ as singleton,St as sleep,sa as splitN,dd as streamToBuffer,Tr as stringify,Jr as stringifyTypedValue,$l as structureMapTransform,hc as subsetResource,D as toJsBoolean,ic as toPeriod,g as toTypedValue,ws as tooManyRequests,ge as tryGetDataType,Sn as tryGetJwtExpiration,mc as tryGetProfile,Ps as unauthorized,st as validateFhircastSubscriptionRequest,Za as validateResource,ud as validateResourceType,h as validationError,_e as validationRegexes};
42
+ }`.replace(/\s+/g," "),a=await this.graphql(s);Xt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)rr(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&mn(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new k((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.get(a.toString());return yr(c).map(u=>(er(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(Xt([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async 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,c)=>{let u=new XMLHttpRequest,d=()=>u.abort();s?.signal?.addEventListener("abort",d);let v=A=>{s?.signal?.removeEventListener("abort",d),A instanceof Error?c(A):a(A)};u.responseType="json",u.onabort=()=>v(new Error("Request aborted")),u.onerror=()=>v(new Error("Request error")),o&&(u.upload.onprogress=A=>o(A),u.upload.onload=A=>o(A)),u.onload=()=>{u.status>=200&&u.status<300?v(u.response):v(new p(Ue(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),u.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=Y(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=Y(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[Y(t)],encounter:s,subject:a,sender:o?Y(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,M.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},M.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",Le(t),"$push"),{destination:typeof n=="string"?n:Z(n),body:i,contentType:o,waitForResponse:s},M.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||Z(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=qn(t),this.medplumServer=Bn(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($n)&&(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:$n+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;return i.Prefer="respond-async",this.request("POST",t,n)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new k(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new p(Ar);let u=await this.parseBody(s,c),d=i.redirect??this.options.redirect;if((s.status===200||s.status===201)&&d==="follow"){let A=await Wn(s,u);if(A)return this.request("GET",A,{...i,body:void 0})}let v=i.headers?.Prefer;if(s.status===202&&v==="respond-async"){let br=await Wn(s,u)??o.statusUrl;if(br)return this.pollStatus(br,i,o)}if(s.status>=400)throw new p(Ue(u));return u}async parseBody(t,n){let i;if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}async fetchWithRetry(t,n){t.startsWith("http")||(t=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(c){this.retryCatch(a,i,c)}await Nt(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,n,i){return i.pollCount===void 0?(n.redirect="follow",i.statusUrl=t,i.pollCount=1):(await Nt(1e3),i.pollCount++),this.request("GET",t,n,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new p(Ue(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&&!Ot(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=rs),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=M.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||n.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=ur();sessionStorage.setItem("pkceState",t);let n=ur();sessionStorage.setItem("codeVerifier",n);let i=await Dn(n),o=qr(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??Gn()),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??Gn()),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=Vn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new p(m("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new p(m("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",pr(i),M.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!mt(t))throw new p(m("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new p(m("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",pr(t),M.FORM_URL_ENCODED)}fhircastConnect(t){return new ft(t)}async fhircastPublish(t,n,i,o){return Fn(n)?this.post(`/fhircast/STU3/${t}`,fr(t,n,i,o),M.JSON):(_n(n),this.post(`/fhircast/STU3/${t}`,fr(t,n,i),M.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":M.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new p(E(a.error_description))}catch(a){throw new p(E("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(Ln(n)){let i=ht(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new gt(this,Qr("/ws/subscriptions-r4",this.baseUrl))),this.subscriptionManager}subscribeToCriteria(t){return this.getSubscriptionManager().addCriteria(t)}unsubscribeFromCriteria(t){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function ds(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Gn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function Hn(r){return r.endsWith("/")?r:r+"/"}function xt(r,e){return new URL(e,r).toString()}async function Wn(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(ae(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function yr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var nd={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function xr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i}){if(e===r?.path)return;let o=ps(e,t,r,!!i),s=Object.create(null);for(let[a,c]of Object.entries(o))s[e+"."+a]=c;return{path:e,elements:o,elementsByPath:s,profileUrl:n??r?.profileUrl,debugMode:i??r?.debugMode??!1}}function ps(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=ce(r,s);c!==void 0&&(i[c]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function Kn(r){return r.type!==void 0&&r.type.length>0}function fs(r,e,t,n){let i=Te(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>jt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function zn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>fs(o,s,i,i.typeSchema?.url??n)))return i.name}}var ge=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=xr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack[this.elementsContextStack.length-1]}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!$(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=ms(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);$(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!Kn(o))continue;let s=o.type.find(a=>$(a.profile))?.profile?.[0];if($(s)){let a=hn(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;$(s)&&(o=xr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function ms(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var vt="__sliceName";function wd(r,e){let t=new Oe(r,r.resourceType,"resource");return new ge(e,t).crawlResource(),t.getDefaultValue()}function Ad(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Et(r,n,i,e);continue}let o=ce(t,n);o!==void 0&&Et(r,o,i,e)}return r}function Id(r,e,t,n,i){let o=r??Object.create(null),[s,a]=gs(e,"."),c=Object.create(null);Tt(c,o,a,t);let u=new Oe(c,s,"element");new ge(i,u,n).crawlElement(t,a,s);let v=u.getDefaultValue();return St(v,a,t,n)}function kd(r,e,t,n){let i=new Oe([{[vt]:e.name}],e.path,"element");return new ge(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Oe=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=X(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-1]}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=ce(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let d of u){hs(d,s,t,n.elements),Et(d,s,t,n.elements);let v=St(d,s,t,n.elements);v!==void 0&&a.push(v)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=ce(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=St(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];$(u)||a.splice(c,1)}T(a)&&Tt(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[vt]??zn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Mt(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];vt in i&&delete i[vt]}}getDefaultValue(){return this.rootValue}};function hs(r,e,t,n){let i=St(r,e,t,n);t.min>0&&i===void 0&&Mt(t.type[0].code)&&(t.isArray?Tt(r,[Object.create(null)],e,t):Tt(r,Object.create(null),e,t))}function Tt(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",R(o))}e===void 0?delete r[i]:r[i]=e}function St(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let d=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",R(d))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(O(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Et(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Et(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let c=o[a];if(c.includes("[x]")){let d=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",R(d))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let d of u)t.fixed?d[c]??=t.fixed.value:t.pattern&&(d[c]=Jn(d[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function Jn(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:X(e);if(O(e)&&(O(r)&&!Array.isArray(r)||r===void 0)){let t=X(r)??Object.create(null);for(let n of Object.keys(e))t[n]=Jn(t[n],e[n]);return t}return r}function gs(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function Yn(r,e){if(!r.group)throw new p(E("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=ys(e);if(ae(t))throw new p(t);let n=vs(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 ys(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?E("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?xs(r.codeableConcept):r.code||r.coding||r.codeableConcept?E("Ambiguous input: multiple source codings provided"):E("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function xs(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 vs(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Ts(i,o)),s&&t.push(...s)}return t}function Ts(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 Ss=[...Ce,"->","<<",">>","=="];function Zn(r){return new K(r,Re,Ss).tokenize()}var Es={"-":"disjoint","==":"equal"},vr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(h.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(h.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(h.As);t instanceof G?(e.transform=t.name,e.parameter=t.args?.map(Xn)):t instanceof D||t instanceof j?(e.transform="copy",e.parameter=[Xn(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(h.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=Es[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,d=e?.group?.find(v=>v.source===i&&v.target===c);d||(d={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(d)),d.element||(d.element=[]),d.element.push({code:o,target:[{code:u,equivalence:s}]})}};function Xn(r){if(r instanceof j)return{valueId:r.name};if(r instanceof D)return bs(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function bs(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 Rs=Pe().registerInfix("->",{precedence:h.Arrow}).registerInfix(";",{precedence:h.Semicolon});function qd(r){let e=Rs.construct(Zn(r));return e.removeComments(),new vr(e).parse()}function Kd(r,e,t){return Cs({root:r,loader:t},r,e)}function Cs(r,e,t){return Ps(r,e),ri(r,e),ni(r,e.group[0],t)}function Ps(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)ri(r,i)}}function ri(r,e){if(e.group)for(let t of e.group)Tr(r,t.name,{type:"StructureMapGroup",value:t})}function ni(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let u of n)Ve(o,u.name,t[a++]);for(let u of i){let d=t[a++]??g({});Ve(o,u.name,d),s.push(d)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)ii(c,u);return s}function ii(r,e){e.source&&oi(r,e,0)}function oi(r,e,t){let n=e.source[t];for(let i of As(r,n))n.variable&&Tr(r,n.variable,i),t<e.source.length-1?oi(r,e,t+1):ws(r,e)}function ws(r,e){if(e.target)for(let t of e.target)ks(r,t);if(e.rule)for(let t of e.rule)ii(r,t);if(e.dependent)for(let t of e.dependent)Us(r,t)}function As(r,e){let t=ye(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=Q(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ei(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ei(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Is(e,i)),i}function ei(r,e,t){return N(Q(t,[r],e))}function Is(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 ks(r,e){let t=ye(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Os(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[g({})]:i=[g(n)];else switch(e.transform){case"append":i=Vs(r,e);break;case"copy":i=Ds(r,e);break;case"create":i=Ms(r,e);break;case"evaluate":i=Ns(r,e);break;case"translate":i=Fs(r,e);break;case"truncate":i=_s(r,e);break;case"uuid":i=[{type:"string",value:ie()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],Ve(t.value,e.element,n));for(let s of i)n.push(s.value)}else Ve(t.value,e.element,i[0].value);e.variable&&Tr(r,e.variable,Ls(i))}}function Os(r,e){return Ee(r.type)?.elements?.[e]?.isArray}function Vs(r,e){let t=z(r,e.parameter?.[0])?.[0]?.value,n=z(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Ds(r,e){return e.parameter.flatMap(t=>z(r,t))}function Ms(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=z(r,e.parameter?.[0])?.[0]?.value),[g(t)]}function Ns(r,e){let n=z(r,e.parameter?.[0])[0].value;return Q(n,[],si(r))}function Fs(r,e){let t=e.parameter.flatMap(a=>z(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Yn(o,{system:o.group?.[0]?.source,code:n});return[g(s.match?.[0]?.concept?.code)]}function _s(r,e){let t=z(r,e.parameter?.[0])?.[0],n=z(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Us(r,e){let t=ye(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=ye(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};ni(o,t.value,i)}function z(r,e){let n=I({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=ti(n),n.length===1&&n[0].type==="id"){let i=ye(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return ti(i)}return n}function ye(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ye(r.parent,e)}function si(r,e={}){if(r.parent&&si(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Tr(r,e,t){r.variables||(r.variables={}),Ve(r.variables,e,t)}function Ve(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function ti(r){return Array.isArray(r)?r:[r]}function Ls(r){return r.length===1?r[0]:r}var Bs=[...Ce,"eq","ne","co"];function ai(r){return new K(r,Re,Bs,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var bt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},Rt=class{constructor(e){this.child=e}},Ct=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var qs={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 js(r){let e=qs[r];if(!e)throw new p(E("Invalid operator: "+r));return e}var Sr=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 Rt(this.parse()),this.parser.consume(")")):e=new bt(this.parser.consume("Symbol").value,js(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}},$s=Pe();function sp(r){let e=$s.construct(ai(r));return e.removeComments(),new Sr(e).parse()}var J=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}},ci=class r{constructor(e,t=new J){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new De(["MSH",this.context.getMsh2(),o,s,n,i,Gs(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new De(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new J("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>De.parse(n,t)),t)}},De=class r{constructor(e,t=new J){this.context=t,Ur(e)?this.fields=e.map(n=>xe.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 xe([[this.context.getMsh1()]],this.context);if(e===2)return new xe([[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 J){return new r(e.split(t.fieldSeparator).map(n=>xe.parse(n,t)),t)}},xe=class r{constructor(e,t=new J){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 J){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function up(r,e){if(!r)return;let t=se(r.slice(0,4),0),n=se(r.slice(4,6),1)-1,i=se(r.slice(6,8),1),o=se(r.slice(8,10),0),s=se(r.slice(10,12),0),a=se(r.slice(12,14),0),c=0;r.includes(".")&&(c=se(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),d=Qs(r,e?.tzOffset);return d!==0&&(u=new Date(u.getTime()-d)),u.toISOString()}function se(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Qs(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 Gs(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var Er=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(Er||{}),ui=class{constructor(e,t={},n=3){this.write=e;this.metadata=t;this.level=n}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
43
+ `)}),this.write(JSON.stringify({level:Er[e],timestamp:new Date().toISOString(),msg:t,...n,...this.metadata})))}};function dp(r){let e=Er[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function hp(r){if(!r)throw new p(m("Resource type is null"));if(!fn(r))throw new p(m("Unknown resource type"))}function li(r,e,t){r===null?t.push(y(e,"Invalid null value")):Array.isArray(r)?Hs(r,e,t):typeof r=="object"&&Ws(r,e,t)}function Hs(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(y(`${e}[${n}]`,"Invalid undefined value")):li(r[n],`${e}[${n}]`,t)}function Ws(r,e,t){for(let[n,i]of Object.entries(r))li(i,`${e}${e?".":""}${n}`,t)}function yp(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}export{Bo as AccessPolicyInteraction,at as AndAtom,w as ArithemticOperatorAtom,te as AsAtom,b as BooleanInfixOperatorAtom,Ya as CPT,Ie as ClientStorage,et as ConcatAtom,tt as ContainsAtom,M as ContentType,rs as DEFAULT_ACCEPT,ju as DEFAULT_SEARCH_COUNT,W as DotAtom,Ze as EmptySetAtom,nt as EqualsAtom,ot as EquivalentAtom,Ae as EventTarget,nd as ExternalSecretSystems,lr as FHIRCAST_EVENT_NAMES,Jo as FHIRCAST_EVENT_RESOURCES,dr as FHIRCAST_EVENT_VERSION_REQUIRED,zo as FHIRCAST_RESOURCE_TYPES,bt as FhirFilterComparison,Ct as FhirFilterConnective,Rt as FhirFilterNegation,Ye as FhirPathAtom,ft as FhircastConnection,G as FunctionAtom,Xa as HTTP_HL7_ORG,J as Hl7Context,xe as Hl7Field,ci as Hl7Message,De as Hl7Segment,Za as ICD10,lt as ImpliesAtom,rt as InAtom,ne as IndexerAtom,H as InfixOperatorAtom,re as IsAtom,Ka as LOINC,pt as LRUCache,D as LiteralAtom,Er as LogLevel,ui as Logger,td as MEDPLUM_VERSION,yt as MedplumClient,mr as MemoryStorage,jn as MockAsyncClientStorage,it as NotEqualsAtom,st as NotEquivalentAtom,ls as OAuthClientAssertionType,as as OAuthGrantType,us as OAuthTokenAuthMethod,cs as OAuthTokenType,p as OperationOutcomeError,vo as Operator,h as OperatorPrecedence,ct as OrAtom,Pt as Parser,Ne as ParserBuilder,Me as PrefixOperatorAtom,l as PropertyType,Ja as RXNORM,k as ReadablePromise,hr as RobustWebSocket,za as SNOMED,vn as SearchParameterType,ke as SubscriptionEmitter,gt as SubscriptionManager,j as SymbolAtom,K as Tokenizer,oe as TypedEventTarget,Kr as UCUM,Xe as UnaryOperatorAtom,me as UnionAtom,ut as XorAtom,ra as accepted,zs as allOk,ue as append,Ad as applyDefaultValuesToElement,Id as applyDefaultValuesToElementWithVisitor,wd as applyDefaultValuesToResource,Et as applyFixedOrPatternValue,qr as arrayBufferToBase64,Br as arrayBufferToHex,Qe as arrayify,_n as assertContextVersionOptional,ua as assertOk,E as badRequest,f as booleanToTypedValue,xr as buildElementsContext,eo as buildTypeName,Be as calculateAge,ya as calculateAgeString,el as canReadResourceType,tl as canWriteResource,jo as canWriteResourceType,R as capitalize,li as checkForNull,Ga as compressElement,Yn as conceptMapTranslate,na as conflict,ll as convertContainedResourcesToBundle,Qo as convertToTransactionBundle,Lt as crawlResource,Or as createConstraintIssue,fr as createFhircastMessagePayload,Vr as createProcessingIssue,Y as createReference,y as createStructureIssue,Js as created,On as decodeBase64,X as deepClone,qe as deepEquals,je as deepIncludes,Vn as encodeBase64,Dn as encryptSHA256,he as evalFhirPath,Q as evalFhirPathTyped,Gt as fhirPathArrayEquals,Ht as fhirPathArrayEquivalent,rn as fhirPathEquals,Ki as fhirPathEquivalent,ze as fhirPathIs,Qt as fhirPathNot,zr as fhirTypeToJsType,Ca as findObservationInterval,Pa as findObservationReferenceRange,Oa as findResourceByCode,Xs as forbidden,Fa as formatAddress,Di as formatCodeableConcept,Mi as formatCoding,La as formatDate,Ft as formatDateTime,Ua as formatFamilyName,_a as formatGivenName,Gs as formatHl7DateTime,Ge as formatHumanName,$a as formatMoney,Ni as formatObservationValue,Ba as formatPeriod,ee as formatQuantity,ja as formatRange,Hu as formatSearchQuery,Ai as formatTime,qa as formatTiming,ie as generateId,dn as getAllDataTypes,va as getAllQuestionnaireAnswers,Dt as getCodeBySystem,de as getDataType,ga as getDateProperty,kd as getDefaultValuesForNewSliceEntry,mi as getDisplayString,Je as getElementDefinition,io as getElementDefinitionFromElements,Yt as getElementDefinitionTypeName,Nu as getExpressionForResourceType,En as getExpressionsForResourceType,Fr as getExtension,Ea as getExtensionValue,Ta as getIdentifier,ha as getImageSrc,Te as getNestedProperty,ce as getPathDifference,Yc as getPathDisplayName,to as getPropertyDisplayName,xa as getQuestionnaireAnswers,ur as getRandomString,Z as getReferenceString,Kc as getResourceTypes,Jc as getSearchParameter,Tn as getSearchParameterDetails,zc as getSearchParameters,ca as getStatus,I as getTypedPropertyValue,Hi as getTypedPropertyValueWithSchema,zn as getValueSliceName,Qr as getWebSocketUrl,F as globalSchema,ea as gone,rr as indexSearchParameter,Wc as indexSearchParameterBundle,Xt as indexStructureDefinitionBundle,Hr as inflateBaseSchema,Li as inflateElement,Pe as initFhirPathParserBuilder,oa as isAccepted,Un as isCompletedSubscriptionRequest,Mt as isComplexTypeCode,Fn as isContextVersionRequired,ia as isCreated,pn as isDataTypeLoaded,nn as isDateString,We as isDateTimeString,T as isEmpty,Yo as isFhircastResourceType,aa as isGone,Ln as isJwt,$e as isLowerCase,Bn as isMedplumAccessToken,sa as isNotFound,O as isObject,Ot as isOk,ae as isOperationOutcome,on as isPeriod,$ as isPopulated,mn as isProfileLoaded,fi as isProfileResource,P as isQuantity,sn as isQuantityEquivalent,ve as isReference,U as isResource,fn as isResourceType,tr as isResourceTypeSchema,Kn as isSliceDefinitionWithTypes,Ur as isStringArray,ba as isUUID,_t as isValidDate,Da as lazy,er as loadDataType,jt as matchDiscriminant,$o as matchesAccessPolicy,$r as matchesRange,An as matchesSearchRequest,di as normalizeErrorString,Ue as normalizeOperationOutcome,Ar as notFound,Ys as notModified,pi as operationOutcomeIssueToString,kr as operationOutcomeToString,sr as parseCriteriaAsSearchRequest,nr as parseFhirPath,sp as parseFilterParameter,up as parseHl7DateTime,ht as parseJWTPayload,dp as parseLogLevel,qd as parseMappingLanguage,Eo as parseParameter,ma as parseReference,Qu as parseSearchDefinition,$u as parseSearchRequest,Pn as parseSearchUrl,$t as parseStructureDefinition,Gu as parseXFhirQuery,Aa as preciseEquals,ka as preciseGreaterThan,wi as preciseGreaterThanOrEquals,Ia as preciseLessThan,Pi as preciseLessThanOrEquals,wa as preciseRound,Lo as projectAdminResourceTypes,Uo as protectedResourceTypes,Ke as removeDuplicates,Ho as reorderBundle,Le as resolveId,rl as satisfiedAccessPolicy,pr as serializeFhircastSubscriptionRequest,Ir as serverError,Ra as setCodeBySystem,Sa as setIdentifier,L as singleton,Nt as sleep,Va as splitN,yp as streamToBuffer,_r as stringify,yn as stringifyTypedValue,Kd as structureMapTransform,Bc as subsetResource,N as toJsBoolean,kc as toPeriod,g as toTypedValue,ta as tooManyRequests,Ee as tryGetDataType,qn as tryGetJwtExpiration,hn as tryGetProfile,Zs as unauthorized,mt as validateFhircastSubscriptionRequest,Rc as validateResource,hp as validateResourceType,m as validationError,He as validationRegexes};
44
44
  //# sourceMappingURL=index.mjs.map