@medplum/core 2.2.10 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +3 -3
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/index.d.ts +2 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +1 -1
package/dist/esm/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var Re=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},Q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Pe=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new ut(e,this.prefixParselets,this.infixParselets)}},ut=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var lt="ok",Ce="created",dt="gone",pt="not-modified",ft="not-found",tr="unauthorized",rr="forbidden",nr="too-many-requests",Ae="accepted",hs={resourceType:"OperationOutcome",id:lt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},gs={resourceType:"OperationOutcome",id:Ce,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},ys={resourceType:"OperationOutcome",id:pt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},ir={resourceType:"OperationOutcome",id:ft,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},xs={resourceType:"OperationOutcome",id:tr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Ts={resourceType:"OperationOutcome",id:rr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},vs={resourceType:"OperationOutcome",id:dt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ss={resourceType:"OperationOutcome",id:nr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Es(r){return{resourceType:"OperationOutcome",id:Ae,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function v(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function bs(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ne(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function mt(r){return r.id===lt||r.id===Ce||r.id===pt||r.id===Ae}function Rs(r){return r.id===Ce}function Ps(r){return r.id===Ae}function Cs(r){return r.id===ft}function As(r){return r.id===dt}function ws(r){switch(r.id){case lt:return 200;case Ce:return 201;case Ae:return 202;case pt:return 304;case tr:return 401;case rr:return 403;case ft:return 404;case dt:return 410;case nr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Is(r,e){if(!mt(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(or(e)),this.outcome=e,this.cause=t}};function we(r){return r instanceof d?r.outcome:ne(r)?r:v(Nn(r))}function Nn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ne(r)?or(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function or(r){let e=r.issue?.map(Mn)??[];return e.length>0?e.join("; "):"Unknown error"}function Mn(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function ht(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function g(r,e){return ht("structure",e,r)}function sr(r,e){return ht("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function ar(r,e,t,n){return ht("processing",e,r,{...n,error:t})}function J(r){let e=pe(r),t=_n(r);return t===e?{reference:e}:{reference:e,display:t}}function pe(r){return fe(r)?r.reference:`${r.resourceType}/${r.id}`}function ur(r){if(r)return fe(r)?r.reference.split("/")[1]:r.id}function Ns(r){if(r?.reference===void 0)throw new d(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(h("Unable to parse reference string."));return[e,t]}function Fn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function _n(r){if(Fn(r)){let e=Ln(r);if(e)return e}if(r.resourceType==="Device"){let e=Un(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:pe(r)}function Ln(r){let e=r.name;if(e&&e.length>0)return Ne(e[0])}function Un(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ms(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=cr(t);if(n)return n}else return cr(e)}function cr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Fs(r){return r?new Date(r):void 0}function Ie(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let E=a*12+u-(i*12+o);l<s&&E--;let q=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:E,days:q}}function _s(r,e){let{years:t,months:n,days:i}=Ie(r,e);return t>=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function Ls(r){let e={};return lr(r.item,e),e}function lr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),lr(t.item,e)}function Us(r){let e={};return dr(r.item,e),e}function dr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),dr(t.item,e)}function Bs(r,e){let t=r.identifier;if(!t)return;let n=Array.isArray(t)?t:[t];for(let i of n)if(i.system===e)return i.value}function qs(r,e,t){let n=r.identifier;if(!n){r.identifier=[{system:e,value:t}];return}for(let i of n)if(i.system===e){i.value=t;return}n.push({system:e,value:t})}function js(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function pr(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function fr(r,e){return JSON.stringify(r,Bn,e?2:void 0)}function Bn(r,e){return!qn(r)&&R(e)?void 0:e}function qn(r){return!!/\d+$/.exec(r)}function R(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!jn(r):!1}function jn(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function ke(r,e,t){return r===e||R(r)&&R(e)?!0:R(r)||R(e)?!1:Array.isArray(r)&&Array.isArray(e)?$n(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?Qn(r,e,t):(H(r)||H(e),!1)}function $n(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ke(r[t],e[t]))return!1;return!0}function Qn(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!ke(o,s,i))return!1}return!0}function Oe(r,e){return R(r)?!0:R(e)?!1:Array.isArray(r)&&Array.isArray(e)?Hn(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?Gn(r,e):H(r)||H(e)?!1:r===e}function Hn(r,e){return e.every(t=>r.some(n=>Oe(n,t)))}function Gn(r,e){return Object.entries(e).every(([t,n])=>t in r&&Oe(r[t],n))}function yt(r){return JSON.parse(JSON.stringify(r))}function $s(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function H(r){return r!==null&&typeof r=="object"}function mr(r){return r.every(e=>typeof e=="string")}var hr=[];for(let r=0;r<256;r++)hr.push(r.toString(16).padStart(2,"0"));function gr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=hr[e[n]];return t.join("")}function yr(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function I(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ve(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function gt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Qs(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Hs(r,e,t,n){return r.qualifiedInterval?.find(i=>xr(i,e)&&zn(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Gs(r,e,t){return r.qualifiedInterval?.find(n=>xr(n,e)&&t.includes(n.condition))}function xr(r,e){return Kn(r,e)&&Wn(r,e)}function Kn(r,e){return!r.gender||r.gender===e.gender}function Wn(r,e){return!r.age||Tr(Ie(e.birthDate).years,r.age)}function zn(r,e,t){return!!r.range&&Tr(e,r.range,t)}function Tr(r,e,t){return(e.low?.value===void 0||Yn(r,e.low.value,t))&&(e.high?.value===void 0||Jn(r,e.high.value,t))}function Ks(r,e){return parseFloat(r.toFixed(e))}function Ws(r,e,t){return M(r,t)===M(e,t)}function zs(r,e,t){return M(r,t)<M(e,t)}function Js(r,e,t){return M(r,t)>M(e,t)}function Jn(r,e,t){return M(r,t)<=M(e,t)}function Yn(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 Ys(r,e,t){return r.find(n=>typeof e=="string"?gt(n.code||{},t)===e:gt(n.code||{},t)===gt(e,t))}function De(r){if(r)return Array.isArray(r)?r:[r]}var xt=r=>new Promise(e=>{setTimeout(e,r)});function Xs(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);o<0&&(o=r.length),n.push(r.slice(0,o)),r=r.slice(o+e.length)}return r&&n.push(r),n}function Zs(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ra(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ne(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=ie(r.text);if(n)return n}return t.join(" ").trim()}function na(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function ia(r){return ie(r.family)??""}function vt(r){return r instanceof Date&&!isNaN(r.getTime())}function oa(r,e,t){if(!r)return"";let n=new Date(r);return vt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Xn(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return vt(n)?n.toLocaleTimeString(e,t):""}function Tt(r,e,t){if(!r)return"";let n=new Date(r);return vt(n)?n.toLocaleString(e,t):""}function sa(r,e,t){return!r||!r.start&&!r.end?"":Tt(r.start,e,t)+" - "+Tt(r.end,e,t)}var Zn={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ei={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},ti={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function aa(r){if(!r)return"";let e=[];return ri(e,r.repeat),r.event&&e.push(r.event.map(t=>Tt(t)).join(", ")),I(e.join(" ").trim())}function ri(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Zn[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ei[i]):r.push("per "+n+" "+ti[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(I).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Xn(o)).join(", "))}function ca(r,e,t=!1){if(t&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=r?.low&&{...r.low,comparator:void 0},i=r?.high&&{...r.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?t&&e!==void 0?(n.value=ai(n.value,e),`> ${Y(n,e)}`):`>= ${Y(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=si(i.value,e),`< ${Y(i,e)}`):`<= ${Y(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${Y(n,e)} - ${Y(i,e)}`)}function Y(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function ua(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function ni(r){if(!r)return"";let e=ie(r.text);return e||(r.coding?r.coding.map(t=>ii(t)).join(", "):"")}function ii(r){return ie(r?.display)??ie(r?.code)??""}function oi(r){if(!r)return"";if("component"in r)return r.component.map(t=>oi(t)).join(" / ");if(r.valueQuantity)return Y(r.valueQuantity);if(r.valueCodeableConcept)return ni(r.valueCodeableConcept);let e=ie(r.valueString);return e||""}function ie(r){return typeof r=="string"?r:void 0}function si(r,e,t=1){return(vr(r,e)+t)*Math.pow(10,-e)}function ai(r,e,t=1){return(vr(r,e)-t)*Math.pow(10,-e)}function vr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var ci={"http://hl7.org/fhirpath/System.String":"string"};function da(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:ci[t.code]??t.code})),e}function ui(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Sr(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,ui(i,o)])),constraints:[],innerTypes:[]};return e}var Er={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity"}]},maxDosePerLifetime:{type:[{code:"Quantity"}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity"}]},high:{type:[{code:"Quantity"}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity"}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function p(r){return[{type:c.boolean,value:r}]}function y(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:P(r)?{type:c.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function D(r){return r.length===0?!1:!!r[0].value}function F(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function A(r,e){if(!r.value)return;let t=_e(r.type,e);return t?di(r.value,e,t):pi(r,e)}function di(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined",s;if(t.path.endsWith("[x]")){let a=t.path.split(".").pop().replace("[x]","");for(let u of n){let l=a+I(u.code);if(i=r[l],s=r["_"+l],i!==void 0||s!==void 0){o=u.code;break}}}else console.assert(n.length===1,"Expected single type",t.path),i=r[e],o=n[0].code,s=r["_"+e];if(s)if(Array.isArray(i))for(let a=0;a<Math.max(i.length,s.length);a++)i[a]=Cr(i[a],s[a]);else i=Cr(i,s);if(!R(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>br(a,o)):br(i,o)}function br(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function pi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in c){let o=e+I(i);if(o in t){n=t[o];break}}if(!R(n))return Array.isArray(n)?n.map(y):y(n)}function Me(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(D(Ar(t,i))){n=!0;break}n||e.push(t)}return e}function St(r){return p(!D(r))}function Et(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?p(!1):p(r.every((t,n)=>D(Ar(t,e[n]))))}function Ar(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?p(Math.abs(t-n)<1e-8):P(t)&&P(n)?p(wr(t,n)):p(typeof t=="object"&&typeof n=="object"?Rt(r,e):t===n)}function bt(r,e){return r.length===0&&e.length===0?p(!0):r.length!==e.length?p(!1):(r.sort(Rr),e.sort(Rr),p(r.every((t,n)=>D(fi(t,e[n])))))}function fi(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?p(Math.abs(s-a)<.01):P(s)&&P(a)?p(wr(s,a)):p(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Rt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Rr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function Fe(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return mi(t);case"Quantity":return P(t);default:return typeof t=="object"&&t?.resourceType===e}}function mi(r){return!!(r&&typeof r=="object"&&"start"in r)}function P(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function wr(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function Rt(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(Pr(o)&&Pr(s)){if(!Rt(o,s))return!1}else if(o!==s)return!1}return!0}function Pr(r){return r!==null&&typeof r=="object"}function Cr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return hi(r??{},e)}return r}function hi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function wt(r){return new Ct(r).parse()}var me=Sr(Er),It=Object.create(null),Ir=Object.create(null);function kt(r){let e;return r?(e=Ir[r],e||(e=Ir[r]=Object.create(null))):e=me,e}function Ot(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)gi(n,e)}function gi(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=wt(r),n=kt(e);n[r.name]=t,e&&r.url===e&&(It[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Dr(){return me}function Nr(r){return!!me[r]}function Le(r,e){return kt(e)[r]}function se(r,e){let t=kt(e)[r];if(!t)throw new d(v("Unknown data type: "+r));return t}function Mr(r){let e=me[r];return e&&Vt(e)}function Fr(r){return!!It[r]}function Ca(r){return It[r]}var Ct=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,title:e.title,type:e.type,url:e.url,kind:e.kind,description:vi(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let t=Pt(e,this.slicingContext.path);this.slicingContext.current.elements[t]=this.parseElementDefinition(e)}}else{let t=this.parseElementDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Pt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Pt(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!oe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:At(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:oe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Ti(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!oe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!oe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!oe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(oe(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator: "+e.sliceName);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=At(e)),n||(n=pr(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Or(e.max),n=e.base?.max?Or(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:Vr(A(i,"fixed[x]")),pattern:Vr(A(i,"pattern[x]")),binding:e.binding}}};function Aa(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=me[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+I(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!yi.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat(kr):[kr]},r}var kr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},yi=["resourceType","id","meta"];function Or(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Pt(r,e=""){return xi(r.path,e)}function xi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function oe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Vr(r){return Array.isArray(r)&&r.length>0?r[0]:R(r)?void 0:r}function Ti(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function vi(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}var c={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function Na(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Dt(t)}}function Dt(r){for(let e of r.base??[]){let t=N.types[e];t||(t={searchParamsDetails:{}},N.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function At(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Si((r.base?.path??r.path)?.split(".")):e}function Si(r){return r.length===1?r[0]:r.map(I).join("")}function Vt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Ma(){return Object.values(Dr()).filter(Vt).map(r=>r.name)}function Fa(r){return N.types[r]?.searchParams}function _a(r,e){return N.types[r]?.searchParams?.[e]}function La(r){let e=r.replaceAll("[x]","").split(".").pop();return Ei(e)}function Ei(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(Ri).join(" ").replace("_"," ").replace(/\s+/g," ")}var bi=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Ri(r){let e=r.toUpperCase();return r===e?r:bi.has(e)?e:e.charAt(0)+r.slice(1)}function _e(r,e){let t=Le(r);if(t)return Pi(t.elements,e)}function Pi(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function _(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function fe(r){return!!(r&&typeof r=="object"&&"reference"in r)}var N={types:{}};function Lr(r){switch(r.type){case c.uuid:case c.uri:case c.url:case c.string:case c.oid:case c.markdown:case c.id:case c.code:case c.canonical:case c.base64Binary:case c.SystemString:case c.date:case c.dateTime:case c.instant:return r.value;case c.Identifier:return`${r.value.system??""}|${r.value.value}`;case c.Coding:return _r(r.value);case c.CodeableConcept:return r.value.coding?.map(_r).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ne(r.value);case c.unsignedInt:case c.positiveInt:case c.integer:case c.decimal:return r.value.toString();case c.boolean:return r.value?"true":"false";case c.Extension:return r.value.url;case c.ContactPoint:return r.value.value;case c.Quantity:case c.Age:case c.Count:case c.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case c.Reference:return r.value.reference;default:return _(r.value)?J(r.value).reference:JSON.stringify(r)}}function _r(r){return r?`${r.system??""}|${r.code}`:""}function ae(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var he=()=>[],b={empty:(r,e)=>p(e.length===0),exists:(r,e,t)=>t?p(e.filter(n=>D(t.eval(r,[n]))).length>0):p(e.length>0),all:(r,e,t)=>p(e.every(n=>D(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return p(!1);return p(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return p(!0);return p(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return p(!1);return p(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return p(!0);return p(!1)},subsetOf:he,supersetOf:he,count:(r,e)=>[{type:c.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>p(e.length===b.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>D(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:he,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Me([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[y(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return D(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return p(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return p(!0);if(["false","f","no","n","0","0.0"].includes(n))return p(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:p(b.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:p(b.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:ae(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:p(b.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:ae(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:p(b.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:p(b.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return P(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:p(b.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return t==null?[]:P(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:p(b.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:ae("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:p(b.toTime(r,e).length===1),indexOf:(r,e,t)=>k((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>k((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>k((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>k((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>k((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>k(t=>t.toUpperCase(),r,e),lower:(r,e)=>k(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>k((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>k(t=>t.length,r,e),toChars:(r,e)=>k(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>L(Math.abs,r,e),ceiling:(r,e)=>L(Math.ceil,r,e),exp:(r,e)=>L(Math.exp,r,e),floor:(r,e)=>L(Math.floor,r,e),ln:(r,e)=>L(Math.log,r,e),log:(r,e,t)=>L((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>L(Math.pow,r,e,t),round:(r,e)=>L(Math.round,r,e),sqrt:(r,e)=>L(Math.sqrt,r,e),truncate:(r,e)=>L(t=>t|0,r,e),children:he,descendants:he,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=b.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=b.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Ie(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof B?n=t.name:t instanceof G&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:Fe(i,n)})):[]},not:(r,e)=>b.toBoolean(r,e).map(t=>({type:c.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return y(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:c.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:c.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:c.BackboneElement,value:{namespace:"System",name:"Integer"}}:_(t)?{type:c.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:c.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:c.boolean,value:o.value?.resourceType===i}))}};function k(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(y):[y(o)]}function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(t,1),o=P(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function U(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Ue=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},O=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},B=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=e.variables[this.name];if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return _(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},Be=class{eval(){return[]}toString(){return"{}"}},qe=class extends Re{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},X=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return b.ofType(e,this.left.eval(e,t),this.right)}},S=class extends Q{},C=class extends S{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=P(s)?s.value:s,l=P(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?p(f):P(s)?[{type:c.Quantity,value:{...s,value:f}}]:[y(f)]}},je=class extends Q{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:c.string,value:o.map(s=>s.value).join("")}]:o}},$e=class extends S{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return p(n.some(o=>o.value===i[0].value))}},Qe=class extends S{constructor(e,t){super("in",e,t)}eval(e,t){let n=F(this.left.eval(e,t)),i=this.right.eval(e,t);return n?p(i.some(o=>o.value===n.value)):[]}},G=class extends Q{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},ce=class extends Q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Me([...n,...i])}},He=class extends S{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Et(n,i)}},Ge=class extends S{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return St(Et(n,i))}},Ke=class extends S{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return bt(n,i)}},We=class extends S{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return St(bt(n,i))}},Z=class extends S{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return p(Fe(n[0],i))}},ze=class extends S{constructor(e,t){super("and",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?p(!0):n?.value===!1||i?.value===!1?p(!1):[]}},Je=class extends S{constructor(e,t){super("or",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?p(!1):n?.value||i?.value?p(!0):[]}},Ye=class extends S{constructor(e,t){super("xor",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return!n||!i?[]:p(n.value!==i.value)}},Xe=class extends S{constructor(e,t){super("implies",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?p(!0):!n||!i?[]:p(!1)}},j=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=b[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},ee=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var Ci=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
|
|
1
|
+
var Pe=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()}`}},Ce=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new lt(e,this.prefixParselets,this.infixParselets)}},lt=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var dt="ok",Ae="created",pt="gone",ft="not-modified",mt="not-found",tr="unauthorized",rr="forbidden",nr="too-many-requests",we="accepted",gs={resourceType:"OperationOutcome",id:dt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ys={resourceType:"OperationOutcome",id:Ae,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},xs={resourceType:"OperationOutcome",id:ft,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},ir={resourceType:"OperationOutcome",id:mt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Ts={resourceType:"OperationOutcome",id:tr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},vs={resourceType:"OperationOutcome",id:rr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ss={resourceType:"OperationOutcome",id:pt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Es={resourceType:"OperationOutcome",id:nr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function bs(r){return{resourceType:"OperationOutcome",id:we,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function v(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Rs(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 ht(r){return r.id===dt||r.id===Ae||r.id===ft||r.id===we}function Ps(r){return r.id===Ae}function Cs(r){return r.id===we}function As(r){return r.id===mt}function ws(r){return r.id===pt}function Is(r){switch(r.id){case dt:return 200;case Ae:return 201;case we:return 202;case ft:return 304;case tr:return 401;case rr:return 403;case mt:return 404;case pt:return 410;case nr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function ks(r,e){if(!ht(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(or(e)),this.outcome=e,this.cause=t}};function Ie(r){return r instanceof d?r.outcome:ne(r)?r:v(Nn(r))}function Nn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ne(r)?or(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function or(r){let e=r.issue?.map(Mn)??[];return e.length>0?e.join("; "):"Unknown error"}function Mn(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 gt(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function g(r,e){return gt("structure",e,r)}function sr(r,e){return gt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function ar(r,e,t,n){return gt("processing",e,r,{...n,error:t})}function J(r){let e=fe(r),t=_n(r);return t===e?{reference:e}:{reference:e,display:t}}function fe(r){return me(r)?r.reference:`${r.resourceType}/${r.id}`}function ur(r){if(r)return me(r)?r.reference.split("/")[1]:r.id}function Ms(r){if(r?.reference===void 0)throw new d(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(h("Unable to parse reference string."));return[e,t]}function Fn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function _n(r){if(Fn(r)){let e=Ln(r);if(e)return e}if(r.resourceType==="Device"){let e=Un(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:fe(r)}function Ln(r){let e=r.name;if(e&&e.length>0)return Me(e[0])}function Un(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Fs(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=cr(t);if(n)return n}else return cr(e)}function cr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function _s(r){return r?new Date(r):void 0}function ke(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let E=a*12+u-(i*12+o);l<s&&E--;let q=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:E,days:q}}function Ls(r,e){let{years:t,months:n,days:i}=ke(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 Us(r){let e={};return lr(r.item,e),e}function lr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),lr(t.item,e)}function Bs(r){let e={};return dr(r.item,e),e}function dr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),dr(t.item,e)}function qs(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 js(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 $s(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function pr(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function fr(r,e){return JSON.stringify(r,Bn,e?2:void 0)}function Bn(r,e){return!qn(r)&&R(e)?void 0:e}function qn(r){return!!/\d+$/.exec(r)}function R(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!jn(r):!1}function jn(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function Oe(r,e,t){return r===e||R(r)&&R(e)?!0:R(r)||R(e)?!1:Array.isArray(r)&&Array.isArray(e)?$n(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?Qn(r,e,t):(H(r)||H(e),!1)}function $n(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Oe(r[t],e[t]))return!1;return!0}function Qn(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Oe(o,s,i))return!1}return!0}function Ve(r,e){return R(r)?!0:R(e)?!1:Array.isArray(r)&&Array.isArray(e)?Hn(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?Gn(r,e):H(r)||H(e)?!1:r===e}function Hn(r,e){return e.every(t=>r.some(n=>Ve(n,t)))}function Gn(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ve(r[t],n))}function xt(r){return JSON.parse(JSON.stringify(r))}function Qs(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function H(r){return r!==null&&typeof r=="object"}function mr(r){return r.every(e=>typeof e=="string")}var hr=[];for(let r=0;r<256;r++)hr.push(r.toString(16).padStart(2,"0"));function gr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=hr[e[n]];return t.join("")}function yr(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function I(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function De(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function yt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Hs(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 Gs(r,e,t,n){return r.qualifiedInterval?.find(i=>xr(i,e)&&zn(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Ks(r,e,t){return r.qualifiedInterval?.find(n=>xr(n,e)&&t.includes(n.condition))}function xr(r,e){return Kn(r,e)&&Wn(r,e)}function Kn(r,e){return!r.gender||r.gender===e.gender}function Wn(r,e){return!r.age||Tr(ke(e.birthDate).years,r.age)}function zn(r,e,t){return!!r.range&&Tr(e,r.range,t)}function Tr(r,e,t){return(e.low?.value===void 0||Yn(r,e.low.value,t))&&(e.high?.value===void 0||Jn(r,e.high.value,t))}function Ws(r,e){return parseFloat(r.toFixed(e))}function zs(r,e,t){return M(r,t)===M(e,t)}function Js(r,e,t){return M(r,t)<M(e,t)}function Ys(r,e,t){return M(r,t)>M(e,t)}function Jn(r,e,t){return M(r,t)<=M(e,t)}function Yn(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 Xs(r,e,t){return r.find(n=>typeof e=="string"?yt(n.code||{},t)===e:yt(n.code||{},t)===yt(e,t))}function Ne(r){if(r)return Array.isArray(r)?r:[r]}var Tt=r=>new Promise(e=>{setTimeout(e,r)});function Zs(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);o<0&&(o=r.length),n.push(r.slice(0,o)),r=r.slice(o+e.length)}return r&&n.push(r),n}function ea(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 na(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 Me(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 ia(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function oa(r){return oe(r.family)??""}function St(r){return r instanceof Date&&!isNaN(r.getTime())}function sa(r,e,t){if(!r)return"";let n=new Date(r);return St(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Xn(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return St(n)?n.toLocaleTimeString(e,t):""}function vt(r,e,t){if(!r)return"";let n=new Date(r);return St(n)?n.toLocaleString(e,t):""}function aa(r,e,t){return!r||!r.start&&!r.end?"":vt(r.start,e,t)+" - "+vt(r.end,e,t)}var Zn={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ei={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},ti={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ca(r){if(!r)return"";let e=[];return ri(e,r.repeat),r.event&&e.push(r.event.map(t=>vt(t)).join(", ")),I(e.join(" ").trim())}function ri(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Zn[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ei[i]):r.push("per "+n+" "+ti[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(I).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Xn(o)).join(", "))}function ua(r,e,t=!1){if(t&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=r?.low&&{...r.low,comparator:void 0},i=r?.high&&{...r.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?t&&e!==void 0?(n.value=ai(n.value,e),`> ${Y(n,e)}`):`>= ${Y(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=si(i.value,e),`< ${Y(i,e)}`):`<= ${Y(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${Y(n,e)} - ${Y(i,e)}`)}function Y(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function la(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function ni(r){if(!r)return"";let e=oe(r.text);return e||(r.coding?r.coding.map(t=>ii(t)).join(", "):"")}function ii(r){return oe(r?.display)??oe(r?.code)??""}function oi(r){if(!r)return"";if("component"in r)return r.component.map(t=>oi(t)).join(" / ");if(r.valueQuantity)return Y(r.valueQuantity);if(r.valueCodeableConcept)return ni(r.valueCodeableConcept);let e=oe(r.valueString);return e||""}function oe(r){return typeof r=="string"?r:void 0}function si(r,e,t=1){return(vr(r,e)+t)*Math.pow(10,-e)}function ai(r,e,t=1){return(vr(r,e)-t)*Math.pow(10,-e)}function vr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var ci={"http://hl7.org/fhirpath/System.String":"string"};function pa(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:ci[t.code]??t.code})),e}function ui(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Sr(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,ui(i,o)])),constraints:[],innerTypes:[]};return e}var Er={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function p(r){return[{type:c.boolean,value:r}]}function y(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:P(r)?{type:c.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function D(r){return r.length===0?!1:!!r[0].value}function F(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function A(r,e){if(!r.value)return;let t=Le(r.type,e);return t?di(r.value,e,t):pi(r,e)}function di(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined",s;if(t.path.endsWith("[x]")){let a=t.path.split(".").pop().replace("[x]","");for(let u of n){let l=a+I(u.code);if(i=r[l],s=r["_"+l],i!==void 0||s!==void 0){o=u.code;break}}}else console.assert(n.length===1,"Expected single type",t.path),i=r[e],o=n[0].code,s=r["_"+e];if(s)if(Array.isArray(i))for(let a=0;a<Math.max(i.length,s.length);a++)i[a]=Cr(i[a],s[a]);else i=Cr(i,s);if(!R(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>br(a,o)):br(i,o)}function br(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function pi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in c){let o=e+I(i);if(o in t){n=t[o];break}}if(!R(n))return Array.isArray(n)?n.map(y):y(n)}function Fe(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(D(Ar(t,i))){n=!0;break}n||e.push(t)}return e}function Et(r){return p(!D(r))}function bt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?p(!1):p(r.every((t,n)=>D(Ar(t,e[n]))))}function Ar(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?p(Math.abs(t-n)<1e-8):P(t)&&P(n)?p(wr(t,n)):p(typeof t=="object"&&typeof n=="object"?Pt(r,e):t===n)}function Rt(r,e){return r.length===0&&e.length===0?p(!0):r.length!==e.length?p(!1):(r.sort(Rr),e.sort(Rr),p(r.every((t,n)=>D(fi(t,e[n])))))}function fi(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?p(Math.abs(s-a)<.01):P(s)&&P(a)?p(wr(s,a)):p(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Pt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Rr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function _e(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return mi(t);case"Quantity":return P(t);default:return typeof t=="object"&&t?.resourceType===e}}function mi(r){return!!(r&&typeof r=="object"&&"start"in r)}function P(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function wr(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function Pt(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(Pr(o)&&Pr(s)){if(!Pt(o,s))return!1}else if(o!==s)return!1}return!0}function Pr(r){return r!==null&&typeof r=="object"}function Cr(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return hi(r??{},e)}return r}function hi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function It(r){return new At(r).parse()}var he=Sr(Er),kt=Object.create(null),Ir=Object.create(null);function Ot(r){let e;return r?(e=Ir[r],e||(e=Ir[r]=Object.create(null))):e=he,e}function Vt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)gi(n,e)}function gi(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=It(r),n=Ot(e);n[r.name]=t,e&&r.url===e&&(kt[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Dr(){return he}function Nr(r){return!!he[r]}function Ue(r,e){return Ot(e)[r]}function ae(r,e){let t=Ot(e)[r];if(!t)throw new d(v("Unknown data type: "+r));return t}function Mr(r){let e=he[r];return e&&Dt(e)}function Fr(r){return!!kt[r]}function Aa(r){return kt[r]}var At=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,title:e.title,type:e.type,url:e.url,kind:e.kind,description:vi(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let t=Ct(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[Ct(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ct(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&&!se(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:wt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:se(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Ti(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!se(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!se(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!se(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!!(se(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator: "+e.sliceName);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=wt(e)),n||(n=pr(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Or(e.max),n=e.base?.max?Or(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:Vr(A(i,"fixed[x]")),pattern:Vr(A(i,"pattern[x]")),binding:e.binding}}};function wa(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)&&!yi.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat(kr):[kr]},r}var kr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},yi=["resourceType","id","meta"];function Or(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ct(r,e=""){return xi(r.path,e)}function xi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function se(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Vr(r){return Array.isArray(r)&&r.length>0?r[0]:R(r)?void 0:r}function Ti(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function vi(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}var c={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function Ma(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Nt(t)}}function Nt(r){for(let e of r.base??[]){let t=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 wt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Si((r.base?.path??r.path)?.split(".")):e}function Si(r){return r.length===1?r[0]:r.map(I).join("")}function Dt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Fa(){return Object.values(Dr()).filter(Dt).map(r=>r.name)}function _a(r){return N.types[r]?.searchParams}function La(r,e){return N.types[r]?.searchParams?.[e]}function Ua(r){let e=r.replaceAll("[x]","").split(".").pop();return Ei(e)}function Ei(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(Ri).join(" ").replace("_"," ").replace(/\s+/g," ")}var bi=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Ri(r){let e=r.toUpperCase();return r===e?r:bi.has(e)?e:e.charAt(0)+r.slice(1)}function Le(r,e){let t=Ue(r);if(t)return Pi(t.elements,e)}function Pi(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function _(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function me(r){return!!(r&&typeof r=="object"&&"reference"in r)}var N={types:{}};function Lr(r){switch(r.type){case c.uuid:case c.uri:case c.url:case c.string:case c.oid:case c.markdown:case c.id:case c.code:case c.canonical:case c.base64Binary:case c.SystemString:case c.date:case c.dateTime:case c.instant:return r.value;case c.Identifier:return`${r.value.system??""}|${r.value.value}`;case c.Coding:return _r(r.value);case c.CodeableConcept:return r.value.coding?.map(_r).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Me(r.value);case c.unsignedInt:case c.positiveInt:case c.integer:case c.decimal:return r.value.toString();case c.boolean:return r.value?"true":"false";case c.Extension:return r.value.url;case c.ContactPoint:return r.value.value;case c.Quantity:case c.Age:case c.Count:case c.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case c.Reference:return r.value.reference;default:return _(r.value)?J(r.value).reference:JSON.stringify(r)}}function _r(r){return r?`${r.system??""}|${r.code}`:""}function 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 ge=()=>[],b={empty:(r,e)=>p(e.length===0),exists:(r,e,t)=>t?p(e.filter(n=>D(t.eval(r,[n]))).length>0):p(e.length>0),all:(r,e,t)=>p(e.every(n=>D(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return p(!1);return p(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return p(!0);return p(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return p(!1);return p(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return p(!0);return p(!1)},subsetOf:ge,supersetOf:ge,count:(r,e)=>[{type:c.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>p(e.length===b.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>D(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:ge,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Fe([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[y(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return D(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return p(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return p(!0);if(["false","f","no","n","0","0.0"].includes(n))return p(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:p(b.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:p(b.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:ce(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:p(b.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:ce(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:p(b.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:p(b.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return P(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:p(b.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);return t==null?[]:P(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:p(b.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=U(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:ce("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:p(b.toTime(r,e).length===1),indexOf:(r,e,t)=>k((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>k((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>k((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>k((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>k((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>k(t=>t.toUpperCase(),r,e),lower:(r,e)=>k(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>k((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>k(t=>t.length,r,e),toChars:(r,e)=>k(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>L(Math.abs,r,e),ceiling:(r,e)=>L(Math.ceil,r,e),exp:(r,e)=>L(Math.exp,r,e),floor:(r,e)=>L(Math.floor,r,e),ln:(r,e)=>L(Math.log,r,e),log:(r,e,t)=>L((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>L(Math.pow,r,e,t),round:(r,e)=>L(Math.round,r,e),sqrt:(r,e)=>L(Math.sqrt,r,e),truncate:(r,e)=>L(t=>t|0,r,e),children:ge,descendants:ge,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=b.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=b.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=ke(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof B?n=t.name:t instanceof G&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:_e(i,n)})):[]},not:(r,e)=>b.toBoolean(r,e).map(t=>({type:c.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return y(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:c.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:c.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:c.BackboneElement,value:{namespace:"System",name:"Integer"}}:_(t)?{type:c.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:c.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:c.boolean,value:o.value?.resourceType===i}))}};function k(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(y):[y(o)]}function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=U(t,1),o=P(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function U(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Be=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},O=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},B=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=e.variables[this.name];if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return _(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},qe=class{eval(){return[]}toString(){return"{}"}},je=class extends Pe{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},X=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return b.ofType(e,this.left.eval(e,t),this.right)}},S=class extends Q{},C=class extends S{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=P(s)?s.value:s,l=P(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?p(f):P(s)?[{type:c.Quantity,value:{...s,value:f}}]:[y(f)]}},$e=class extends Q{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:c.string,value:o.map(s=>s.value).join("")}]:o}},Qe=class extends S{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return p(n.some(o=>o.value===i[0].value))}},He=class extends S{constructor(e,t){super("in",e,t)}eval(e,t){let n=F(this.left.eval(e,t)),i=this.right.eval(e,t);return n?p(i.some(o=>o.value===n.value)):[]}},G=class extends Q{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},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 Fe([...n,...i])}},Ge=class extends S{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return bt(n,i)}},Ke=class extends S{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Et(bt(n,i))}},We=class extends S{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Rt(n,i)}},ze=class extends S{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Et(Rt(n,i))}},Z=class extends S{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return p(_e(n[0],i))}},Je=class extends S{constructor(e,t){super("and",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?p(!0):n?.value===!1||i?.value===!1?p(!1):[]}},Ye=class extends S{constructor(e,t){super("or",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?p(!1):n?.value||i?.value?p(!0):[]}},Xe=class extends S{constructor(e,t){super("xor",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return!n||!i?[]:p(n.value!==i.value)}},Ze=class extends S{constructor(e,t){super("implies",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?p(!0):!n||!i?[]:p(!1)}},j=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=b[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},ee=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var Ci=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
|
|
2
2
|
`))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&Ai(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
|
|
3
|
-
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function Ai(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ci.includes(r.value)))}var ge=["true","false"],ye=["!=","!~","<=",">=","{}","->"];function Ur(r){return new K(r,ge,ye).tokenize()}var m={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},wi={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ii={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ee(e,t)},precedence:m.Indexer},ki={parse(r,e){if(!(e instanceof B))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new j(e.name,t)},precedence:m.FunctionCall};function Oi(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function xe(){return new Pe().registerPrefix("String",{parse:(r,e)=>new O({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new O({type:c.dateTime,value:ae(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new O({type:c.Quantity,value:Oi(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new O({type:e.value.includes(".")?c.decimal:c.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new O({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new O({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new B(e.value)}).registerPrefix("{}",{parse:()=>new Be}).registerPrefix("(",wi).registerInfix("[",Ii).registerInfix("(",ki).prefix("+",m.UnaryAdd,(r,e)=>new qe("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new C("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new G(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new C("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new C("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new C("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new C("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new ce(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new He(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new Ge(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Ke(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new We(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new C("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new C("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new C(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new C(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new je(r,t)).infixLeft("and",m.And,(r,e,t)=>new ze(r,t)).infixLeft("as",m.As,(r,e,t)=>new X(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new $e(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new C("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Qe(r,t)).infixLeft("is",m.Is,(r,e,t)=>new Z(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new C("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Je(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Ye(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Xe(r,t))}var Vi=xe();function Nt(r){return new Ue(r,Vi.construct(Ur(r)).consumeAndParse())}function ue(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=y(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return Nt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Br=(f=>(f.BOOLEAN="BOOLEAN",f.NUMBER="NUMBER",f.QUANTITY="QUANTITY",f.TEXT="TEXT",f.REFERENCE="REFERENCE",f.CANONICAL="CANONICAL",f.DATE="DATE",f.DATETIME="DATETIME",f.PERIOD="PERIOD",f.UUID="UUID",f))(Br||{});function qr(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=Ni(r,e)),t}function Di(r,e,t){let n=N.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ni(r,e){let t=e.code,n=_i(t),i=$r(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=Te(a);u.length===1&&u[0]instanceof S?o.propertyTypes.add("boolean"):jr(o,Te(a),r,1)}let s={columnName:n,type:Li(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Di(r,t,s),s}function jr(r,e,t,n){let i=e[n];if(i instanceof X){r.propertyTypes.add(i.right.toString());return}if(i instanceof j){Mi(r,i);return}let o=i.toString(),s=_e(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof ee&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;Fi(f)&&(f=s.type[0].code),jr(r,e,f,u)}}function Mi(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof Z){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Fi(r){return r==="Element"||r==="BackboneElement"}function _i(r){return r.split("-").reduce((e,t,n)=>e+(n?I(t):t),"")}function Li(r,e){switch(r.type){case"date":return e.size===1&&e.has(c.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(c.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(c.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function $r(r,e){let t=[],n=Nt(e);return Mt(r,n.child,t),t}function Ec(r,e){let t=$r(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Mt(r,e,t){e instanceof ce?(Mt(r,e.left,t),Mt(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Te(r){if(r instanceof X||r instanceof ee)return[Te(r.left),r].flat();if(r instanceof S)return[r];if(r instanceof G)return[Te(r.left),Te(r.right)].flat();if(r instanceof j){if(r.name==="where"&&!(r.args[0]instanceof Z))return[];if(r.name==="last")return[]}return[r]}var wc=20,Ui=(x=>(x.EQUALS="eq",x.NOT_EQUALS="ne",x.GREATER_THAN="gt",x.LESS_THAN="lt",x.GREATER_THAN_OR_EQUALS="ge",x.LESS_THAN_OR_EQUALS="le",x.STARTS_AFTER="sa",x.ENDS_BEFORE="eb",x.APPROXIMATELY="ap",x.CONTAINS="contains",x.EXACT="exact",x.TEXT="text",x.NOT="not",x.ABOVE="above",x.BELOW="below",x.IN="in",x.NOT_IN="not-in",x.OF_TYPE="of-type",x.MISSING="missing",x.IDENTIFIER="identifier",x.ITERATE="iterate",x))(Ui||{}),Gr={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},_t={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Ic(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return Wr(r,t)}function Kr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Wr(e,r.searchParams.entries())}function kc(r){return Kr(new URL(r,"https://example.com/"))}function Lt(r){return Kr(new URL(r,"https://api.medplum.com/"))}function Wr(r,e){let t={resourceType:r};for(let[n,i]of e)Bi(t,n,i);return t}function Bi(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n==="_has"||e.includes(".")){Ft(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":qi(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=N.types[r.resourceType]?.searchParams?.[n];s?Ft(r,ji(s,i,t)):Ft(r,Hi(n,i,t))}}}function qi(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function ji(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return $i(r,t);case"reference":case"string":case"token":case"uri":return Qi(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function $i(r,e){let{operator:t,value:n}=Gi(e);return{code:r.code,operator:t,value:n}}function Qi(r,e,t){return{code:r.code,operator:Ki(e),value:t}}function Hi(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in _t&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Gi(r){let e=r.substring(0,2),t=_t[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ki(r){return Gr[r]??"eq"}function Qr(r){let e=r.split(":");if(e.includes("*"))throw new d(v("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(v(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new d(v(`Invalid include value '${r}'`))}function Ft(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Wi=/{{([^{}]+)}}/g;function Oc(r,e){return r=r.replaceAll(Wi,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":Lr(i[0])}),Lt(r)}function Vc(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(zi(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ji(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(Hr("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Hr("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function zi(r){let e=r.operator in Gr?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in _t?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ji(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Hr(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function zr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Yi(r,e,t))return!1}return!0}function Yi(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ue(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Xi(r,t,n);case"string":case"uri":return Jr(r,t,n);case"token":return Zi(r,t,n);case"date":return to(r,t,n);default:return!1}}function Xi(r,e,t){let n=ue(t.expression,r),i=Ze(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(u=>u?.endsWith("/"+s))),a)return!i}return i}function Zi(r,e,t){return qr(r.resourceType,t).type==="BOOLEAN"?eo(r,e,t):Jr(r,e,t,!0)}function eo(r,e,t){let n=ue(t.expression,r),i=e.value==="true",o=n.includes(i);return Ze(e.operator)?!o:o}function Jr(r,e,t,n){let i=ue(t.expression,r),o=e.value.split(","),s=Ze(e.operator);for(let a of i)for(let u of o)if(Ut(a,e.operator,u,n))return!s;return s}function Ut(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Ut(r,e,o,!1)&&(!s||Ut(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function to(r,e,t){let n=ue(t.expression,r),i=e.value.split(","),o=Ze(e.operator);for(let s of n)for(let a of i)if(ro(s,e.operator,a))return!o;return o}function ro(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function Ze(r){return r==="ne"||r==="not"}var no={resourceType:"*"},io=["DomainConfiguration","JsonWebKey","Login"],oo=["PasswordChangeRequest","Project","ProjectMembership","User"],so=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(so||{}),ao=["read","vread","history","history-instance"];function Bc(r,e){if(r.resource){for(let t of r.resource)if(Bt(t.resourceType,e))return!0}return!1}function co(r,e){if(io.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Bt(t.resourceType,e)&&!t.readonly)return!0}return!1}function qc(r,e){let t=e.resourceType;return co(r,t)?uo(r,e,!1):!1}function uo(r,e,t){if(r.resource){for(let n of r.resource)if(Yr(e,t?"read":"update",n))return!0}return!1}function jc(r,e,t){if(!t)return no;if(t.resource){for(let n of t.resource)if(Yr(r,e,n))return n}}function Yr(r,e,t){let n=r.resourceType;return!(!Bt(t.resourceType,n)||t.readonly&&!ao.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!zr(r,Lt(t.criteria)))}function Bt(r,e){return r===e||r==="*"&&!oo.includes(e)}function Xr(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function Zr(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function qt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),gr(r.buffer)}async function en(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function te(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function lo(r){let e={};r=yt(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=te(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>po(i,o,e),2);return fo(JSON.parse(n))}function po(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function fo(r){let e=ho(r),{sorted:t,cycles:n}=mo(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let u=i[a],l={...u,request:{...u.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function mo(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=1,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function tn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(fe(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else tn(n,e)}}function ho(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&tn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Jc(r){r=yt(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=te());return lo(e)}var et=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var V={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var ve=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},tt=class{constructor(){this.emitter=new ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var jt={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},go=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],$t=["DiagnosticReport-update"];function nn(r){return $t.includes(r)}function on(r){if($t.includes(r))throw new d(h(`'context.version' is required for '${r}'.`))}var yo={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function xo(r){return go.includes(r)}function sn(r){return!!r.endpoint}function Qt(r){if(!nt(r))throw new d(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return sn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function nt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!jt[o])return!1;return!(sn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function rn(r,e,t,n){if(typeof e!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!xo(e.resourceType))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function To(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)rn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)rn(r,s,t,n)}}function vo(r,e){let t=new Map,n=yo[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));To(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Ht(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!jt[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(jt).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if($t.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return vo(e,i),{timestamp:new Date().toISOString(),id:te(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var rt=class extends tt{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!nt(e))throw new d(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 So(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Xr(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function an(r){return r.split(".").length===3}function it(r){let[e,t,n]=r.split(".");return So(t)}function cn(r){try{return typeof it(r).login_id=="string"}catch{return!1}}function un(r){try{let t=it(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Eo,w=class{constructor(e){this[Eo]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};Eo=Symbol.toStringTag;var Se=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Gt)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?fr(t):void 0)}},Gt=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},ln=class extends Se{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var Du="2.2.10-b94663cd",bo=V.FHIR_JSON+", */*; q=0.1",Ro="https://api.medplum.com/",Po=1e3,Co=6e4,dn="Binary/",pn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Ao=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(Ao||{}),wo=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(wo||{}),Io=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(Io||{}),ko=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(ko||{}),fn=class extends ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??Oo(),this.storage=t?.storage??new Se,this.createPdfImpl=t?.createPdf,this.baseUrl=hn(t?.baseUrl??Ro),this.fhirBaseUrl=hn(ot(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=ot(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=ot(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=ot(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??Co,this.cacheTime>0?this.requestCache=new et(t?.resourceCacheSize??Po):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.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,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new w(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,V.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,n,i).then(yn));return this.setCacheEntry(s,u),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield yn(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return pn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new w(Promise.reject(new Error("Missing reference")));if(i==="system")return new w(Promise.resolve(pn));let[o,s]=i.split("/");return!o||!s?new w(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Nr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=`{
|
|
3
|
+
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function Ai(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ci.includes(r.value)))}var ye=["true","false"],xe=["!=","!~","<=",">=","{}","->"];function Ur(r){return new K(r,ye,xe).tokenize()}var m={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},wi={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ii={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ee(e,t)},precedence:m.Indexer},ki={parse(r,e){if(!(e instanceof B))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new j(e.name,t)},precedence:m.FunctionCall};function Oi(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function Te(){return new Ce().registerPrefix("String",{parse:(r,e)=>new O({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new O({type:c.dateTime,value:ce(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new O({type:c.Quantity,value:Oi(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new O({type:e.value.includes(".")?c.decimal:c.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new O({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new O({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new B(e.value)}).registerPrefix("{}",{parse:()=>new qe}).registerPrefix("(",wi).registerInfix("[",Ii).registerInfix("(",ki).prefix("+",m.UnaryAdd,(r,e)=>new je("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new C("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new G(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new C("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new C("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new C("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new C("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new ue(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new Ge(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new Ke(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new We(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new ze(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 $e(r,t)).infixLeft("and",m.And,(r,e,t)=>new Je(r,t)).infixLeft("as",m.As,(r,e,t)=>new X(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Qe(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 He(r,t)).infixLeft("is",m.Is,(r,e,t)=>new Z(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new C("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Ye(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Xe(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Ze(r,t))}var Vi=Te();function Mt(r){return new Be(r,Vi.construct(Ur(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]=y(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return Mt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Br=(f=>(f.BOOLEAN="BOOLEAN",f.NUMBER="NUMBER",f.QUANTITY="QUANTITY",f.TEXT="TEXT",f.REFERENCE="REFERENCE",f.CANONICAL="CANONICAL",f.DATE="DATE",f.DATETIME="DATETIME",f.PERIOD="PERIOD",f.UUID="UUID",f))(Br||{});function qr(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=Ni(r,e)),t}function Di(r,e,t){let n=N.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ni(r,e){let t=e.code,n=_i(t),i=$r(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=ve(a);u.length===1&&u[0]instanceof S?o.propertyTypes.add("boolean"):jr(o,ve(a),r,1)}let s={columnName:n,type:Li(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Di(r,t,s),s}function jr(r,e,t,n){let i=e[n];if(i instanceof X){r.propertyTypes.add(i.right.toString());return}if(i instanceof j){Mi(r,i);return}let o=i.toString(),s=Le(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof ee&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;Fi(f)&&(f=s.type[0].code),jr(r,e,f,u)}}function Mi(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof Z){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Fi(r){return r==="Element"||r==="BackboneElement"}function _i(r){return r.split("-").reduce((e,t,n)=>e+(n?I(t):t),"")}function Li(r,e){switch(r.type){case"date":return e.size===1&&e.has(c.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(c.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(c.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function $r(r,e){let t=[],n=Mt(e);return Ft(r,n.child,t),t}function bc(r,e){let t=$r(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Ft(r,e,t){e instanceof ue?(Ft(r,e.left,t),Ft(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ve(r){if(r instanceof X||r instanceof ee)return[ve(r.left),r].flat();if(r instanceof S)return[r];if(r instanceof G)return[ve(r.left),ve(r.right)].flat();if(r instanceof j){if(r.name==="where"&&!(r.args[0]instanceof Z))return[];if(r.name==="last")return[]}return[r]}var kc=20,Ui=(x=>(x.EQUALS="eq",x.NOT_EQUALS="ne",x.GREATER_THAN="gt",x.LESS_THAN="lt",x.GREATER_THAN_OR_EQUALS="ge",x.LESS_THAN_OR_EQUALS="le",x.STARTS_AFTER="sa",x.ENDS_BEFORE="eb",x.APPROXIMATELY="ap",x.CONTAINS="contains",x.EXACT="exact",x.TEXT="text",x.NOT="not",x.ABOVE="above",x.BELOW="below",x.IN="in",x.NOT_IN="not-in",x.OF_TYPE="of-type",x.MISSING="missing",x.IDENTIFIER="identifier",x.ITERATE="iterate",x))(Ui||{}),Gr={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},_t={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Oc(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return Wr(r,t)}function Kr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Wr(e,r.searchParams.entries())}function Vc(r){return Kr(new URL(r,"https://example.com/"))}function Lt(r){return Kr(new URL(r,"https://api.medplum.com/"))}function Wr(r,e){let t={resourceType:r};for(let[n,i]of e)Bi(t,n,i);return t}function Bi(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n==="_has"||e.includes(".")){r.filters=ie(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":qi(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Qr(t);i==="iterate"&&(s.modifier="iterate"),r.include=ie(r.include,s);break}case"_revinclude":{let s=Qr(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,ji(s,i,t)):r.filters=ie(r.filters,Hi(n,i,t))}}}function qi(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function ji(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return $i(r,t);case"reference":case"string":case"token":case"uri":return Qi(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function $i(r,e){let{operator:t,value:n}=Gi(e);return{code:r.code,operator:t,value:n}}function Qi(r,e,t){return{code:r.code,operator:Ki(e),value:t}}function Hi(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in _t&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Gi(r){let e=r.substring(0,2),t=_t[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ki(r){return Gr[r]??"eq"}function Qr(r){let e=r.split(":");if(e.includes("*"))throw new d(v("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(v(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new d(v(`Invalid include value '${r}'`))}var Wi=/{{([^{}]+)}}/g;function Dc(r,e){return r=r.replaceAll(Wi,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":Lr(i[0])}),Lt(r)}function Nc(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(zi(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ji(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(Hr("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Hr("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function zi(r){let e=r.operator in Gr?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in _t?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ji(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Hr(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function zr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Yi(r,e,t))return!1}return!0}function Yi(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=le(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Xi(r,t,n);case"string":case"uri":return Jr(r,t,n);case"token":return Zi(r,t,n);case"date":return to(r,t,n);default:return!1}}function Xi(r,e,t){let n=le(t.expression,r),i=et(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(u=>u?.endsWith("/"+s))),a)return!i}return i}function Zi(r,e,t){return qr(r.resourceType,t).type==="BOOLEAN"?eo(r,e,t):Jr(r,e,t,!0)}function eo(r,e,t){let n=le(t.expression,r),i=e.value==="true",o=n.includes(i);return et(e.operator)?!o:o}function Jr(r,e,t,n){let i=le(t.expression,r),o=e.value.split(","),s=et(e.operator);for(let a of i)for(let u of o)if(Ut(a,e.operator,u,n))return!s;return s}function Ut(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Ut(r,e,o,!1)&&(!s||Ut(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function to(r,e,t){let n=le(t.expression,r),i=e.value.split(","),o=et(e.operator);for(let s of n)for(let a of i)if(ro(s,e.operator,a))return!o;return o}function ro(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function et(r){return r==="ne"||r==="not"}var no={resourceType:"*"},io=["DomainConfiguration","JsonWebKey","Login"],oo=["PasswordChangeRequest","Project","ProjectMembership","User"],so=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(so||{}),ao=["read","vread","history","history-instance"];function jc(r,e){if(r.resource){for(let t of r.resource)if(Bt(t.resourceType,e))return!0}return!1}function co(r,e){if(io.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Bt(t.resourceType,e)&&!t.readonly)return!0}return!1}function $c(r,e){let t=e.resourceType;return co(r,t)?uo(r,e,!1):!1}function uo(r,e,t){if(r.resource){for(let n of r.resource)if(Yr(e,t?"read":"update",n))return!0}return!1}function Qc(r,e,t){if(!t)return no;if(t.resource){for(let n of t.resource)if(Yr(r,e,n))return n}}function Yr(r,e,t){let n=r.resourceType;return!(!Bt(t.resourceType,n)||t.readonly&&!ao.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!zr(r,Lt(t.criteria)))}function Bt(r,e){return r===e||r==="*"&&!oo.includes(e)}function Xr(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function Zr(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function qt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),gr(r.buffer)}async function en(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function te(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function lo(r){let e={};r=xt(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=te(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>po(i,o,e),2);return fo(JSON.parse(n))}function po(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function fo(r){let e=ho(r),{sorted:t,cycles:n}=mo(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let u=i[a],l={...u,request:{...u.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function mo(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=1,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function tn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(me(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else tn(n,e)}}function ho(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&tn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Xc(r){r=xt(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=te());return lo(e)}var tt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var V={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var Se=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}},rt=class{constructor(){this.emitter=new Se}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var jt={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},go=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],$t=["DiagnosticReport-update"];function nn(r){return $t.includes(r)}function on(r){if($t.includes(r))throw new d(h(`'context.version' is required for '${r}'.`))}var yo={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function xo(r){return go.includes(r)}function sn(r){return!!r.endpoint}function Qt(r){if(!it(r))throw new d(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return sn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function it(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!jt[o])return!1;return!(sn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function rn(r,e,t,n){if(typeof e!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!xo(e.resourceType))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function To(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)rn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)rn(r,s,t,n)}}function vo(r,e){let t=new Map,n=yo[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));To(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Ht(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!jt[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(jt).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if($t.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return vo(e,i),{timestamp:new Date().toISOString(),id:te(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var nt=class extends rt{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!it(e))throw new d(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 So(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Xr(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function an(r){return r.split(".").length===3}function ot(r){let[e,t,n]=r.split(".");return So(t)}function cn(r){try{return typeof ot(r).login_id=="string"}catch{return!1}}function un(r){try{let t=ot(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Eo,w=class{constructor(e){this[Eo]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};Eo=Symbol.toStringTag;var Ee=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Gt)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?fr(t):void 0)}},Gt=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},ln=class extends Ee{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 Mu="3.0.0-0cc50f0d",bo=V.FHIR_JSON+", */*; q=0.1",Ro="https://api.medplum.com/",Po=1e3,Co=6e4,Ao=0,dn="Binary/",pn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},wo=(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))(wo||{}),Io=(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))(Io||{}),ko=(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))(ko||{}),Oo=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Oo||{}),fn=class extends Se{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??Vo(),this.storage=t?.storage??new Ee,this.createPdfImpl=t?.createPdf,this.baseUrl=hn(t?.baseUrl??Ro),this.fhirBaseUrl=hn(st(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=st(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=st(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=st(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"?Ao:Co),this.cacheTime>0?this.requestCache=new tt(t?.resourceCacheSize??Po):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.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,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new w(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,V.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,n,i).then(yn));return this.setCacheEntry(s,u),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield yn(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return pn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new w(Promise.reject(new Error("Missing reference")));if(i==="system")return new w(Promise.resolve(pn));let[o,s]=i.split("/");return!o||!s?new w(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Nr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|
|
@@ -39,5 +39,5 @@ var Re=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);Ot(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Dt(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t){if(Fr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});s?Ot([s],t):console.warn(`No StructureDefinition found for ${t}!`)})());return this.setCacheEntry(n,o),o}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,f=()=>l.abort();s?.signal?.addEventListener("abort",f);let E=q=>{s?.signal?.removeEventListener("abort",f),q instanceof Error?u(q):a(q)};l.responseType="json",l.onabort=()=>E(new Error("Request aborted")),l.onerror=()=>E(new Error("Request error")),o&&(l.upload.onprogress=q=>o(q),l.upload.onload=q=>o(q)),l.onload=()=>{l.status>=200&&l.status<300?E(l.response):E(new d(we(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),l.setRequestHeader("X-Medplum","extended"),l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=J(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=J(t)),this.createResource({resourceType:"Communication",basedOn:[J(t)],encounter:s,subject:a,sender:o?J(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,V.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},V.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",ur(t),"$push"),{destination:pe(n),body:i,contentType:o,waitForResponse:s},V.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||pe(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=un(t),this.medplumServer=cn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();return i.startsWith(dn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:dn+a.id,title:i},...o},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await gn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new w(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new d(ir);let u=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&u&&l==="follow")return this.request("GET",u,{...o,body:void 0});let f;if(a)try{f=await t.json()}catch(E){throw console.error("Error parsing response",t.status,E),E}else f=await t.text();if(t.status>=400)throw new d(we(f));return f}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(u){this.retryCatch(a,i,u)}await xt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let u=await gn(a);u&&(i=await this.fetchWithRetry(u,s))}await xt(o)}return this.parseResponse(i,"POST",t)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(we(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!mt(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=bo),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=V.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=qt();sessionStorage.setItem("pkceState",t);let n=qt();sessionStorage.setItem("codeVerifier",n);let i=await en(n),o=yr(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??mn()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??mn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Zr(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",Qt(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!nt(t))throw new d(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",Qt(t),V.FORM_URL_ENCODED)}fhircastConnect(t){return new rt(t)}async fhircastPublish(t,n,i,o){return nn(n)?this.post(`/fhircast/STU3/${t}`,Ht(t,n,i,o),V.JSON):(on(n),this.post(`/fhircast/STU3/${t}`,Ht(t,n,i),V.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":V.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(v(a.error_description))}catch(a){throw new d(v("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(an(n)){let i=it(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}};function Oo(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function mn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function hn(r){return r.endsWith("/")?r:r+"/"}function ot(r,e){return new URL(e,r).toString()}async function gn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(ne(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function yn(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var Mu={aws_ssm_parameter_store:"aws_ssm_parameter_store"};var xn="http://unitsofmeasure.org",_u="http://loinc.org",Lu="http://snomed.info/sct",Uu="http://www.nlm.nih.gov/research/umls/rxnorm",Bu="http://www.ama-assn.org/go/cpt",qu="http://hl7.org/fhir/sid/icd-10",ju="http://hl7.org";function Tn(r,e){if(!r.group)throw new d(v("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Vo(e);if(ne(t))throw new d(t);let n=No(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Vo(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?v("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?Do(r.codeableConcept):r.code||r.coding||r.codeableConcept?v("Ambiguous input: multiple source codings provided"):v("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function Do(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function No(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=Mo(i,o)),s&&t.push(...s)}return t}function Mo(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 Fo=[...ye,"->","<<",">>","=="];function vn(r){return new K(r,ge,Fo).tokenize()}var _o={"-":"disjoint","==":"equal"},Kt=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(m.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(m.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(m.As);t instanceof j?(e.transform=t.name,e.parameter=t.args?.map(Sn)):t instanceof O||t instanceof B?(e.transform="copy",e.parameter=[Sn(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(m.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=_o[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,f=e?.group?.find(E=>E.source===i&&E.target===u);f||(f={source:i,target:u},e.group||(e.group=[]),e.group.push(f)),f.element||(f.element=[]),f.element.push({code:o,target:[{code:l,equivalence:s}]})}};function Sn(r){if(r instanceof B)return{valueId:r.name};if(r instanceof O)return Lo(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Lo(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var Uo=xe().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function Zu(r){let e=Uo.construct(vn(r));return e.removeComments(),new Kt(e).parse()}function sl(r,e,t){return Bo({root:r,loader:t},r,e)}function Bo(r,e,t){return qo(r,e),Rn(r,e),Pn(r,e.group[0],t)}function qo(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)Rn(r,i)}}function Rn(r,e){if(e.group)for(let t of e.group)Wt(r,t.name,{type:"StructureMapGroup",value:t})}function Pn(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)Ee(o,l.name,t[a++]);for(let l of i){let f=t[a++]??y({});Ee(o,l.name,f),s.push(f)}let u={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)Cn(u,l);return s}function Cn(r,e){let t=!1;if(e.source)for(let n of e.source)jo(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)Qo(r,n);if(e.rule)for(let n of e.rule)Cn(r,n);if(e.dependent)for(let n of e.dependent)Xo(r,n)}}function jo(r,e){let t=le(r,e.context);if(!t)return!1;let n=e.element;if(!n)return!0;let i=$(n,[t]);if(!i||i.length===0||e.condition&&!En(t,{[e.variable]:i[0]},e.condition))return!1;if(e.check&&!En(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=$o(e,i)),e.variable&&Wt(r,e.variable,wn(i)),!0}function En(r,e,t){return D($(t,[r],e))}function $o(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-1]];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function Qo(r,e){let t=le(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Ho(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[y({})]:i=[y(n)];else switch(e.transform){case"append":i=Go(r,e);break;case"copy":i=Ko(r,e);break;case"create":i=Wo(r,e);break;case"evaluate":i=zo(r,e);break;case"translate":i=Jo(r,e);break;case"truncate":i=Yo(r,e);break;case"uuid":i=[{type:"string",value:te()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],Ee(t.value,e.element,n));for(let s of i)n.push(s.value)}else Ee(t.value,e.element,i[0].value);e.variable&&Wt(r,e.variable,wn(i))}}function Ho(r,e){return Le(r.type)?.elements?.[e]?.isArray}function Go(r,e){let t=W(r,e.parameter?.[0])?.[0]?.value,n=W(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Ko(r,e){return e.parameter.flatMap(t=>W(r,t))}function Wo(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[y(t)]}function zo(r,e){let n=W(r,e.parameter?.[0])[0].value;return $(n,[],An(r))}function Jo(r,e){let t=e.parameter.flatMap(a=>W(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Tn(o,{system:o.group?.[0]?.source,code:n});return[y(s.match?.[0]?.concept?.code)]}function Yo(r,e){let t=W(r,e.parameter?.[0])?.[0],n=W(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Xo(r,e){let t=le(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=le(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};Pn(o,t.value,i)}function W(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=bn(n),n.length===1&&n[0].type==="id"){let i=le(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return bn(i)}return n}function le(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return le(r.parent,e)}function An(r,e={}){if(r.parent&&An(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Wt(r,e,t){r.variables||(r.variables={}),Ee(r.variables,e,t)}function Ee(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function bn(r){return Array.isArray(r)?r:[r]}function wn(r){return r.length===1?r[0]:r}var Zo=[...ye,"eq","ne","co"];function In(r){return new K(r,ge,Zo,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var st=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},at=class{constructor(e){this.child=e}},ct=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var es={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function ts(r){let e=es[r];if(!e)throw new d(v("Invalid operator: "+r));return e}var zt=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new at(this.parse()),this.parser.consume(")")):e=new st(this.parser.consume("Symbol").value,ts(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new ct(t,e,this.parse())):e}},rs=xe();function xl(r){let e=rs.construct(In(r));return e.removeComments(),new zt(e).parse()}var z=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},kn=class r{constructor(e,t=new z){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",u=t?.getField(12)?.toString()??"2.5.1";return new r([new be(["MSH",this.context.getMsh2(),o,s,n,i,is(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",u],this.context),new be(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new z("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>be.parse(n,t)),t)}},be=class r{constructor(e,t=new z){this.context=t,mr(e)?this.fields=e.map(n=>de.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new de([[this.context.getMsh1()]],this.context);if(e===2)return new de([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new z){return new r(e.split(t.fieldSeparator).map(n=>de.parse(n,t)),t)}},de=class r{constructor(e,t=new z){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new z){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Sl(r,e){if(!r)return;let t=re(r.slice(0,4),0),n=re(r.slice(4,6),1)-1,i=re(r.slice(6,8),1),o=re(r.slice(8,10),0),s=re(r.slice(10,12),0),a=re(r.slice(12,14),0),u=0;r.includes(".")&&(u=re(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),f=ns(r,e?.tzOffset);return f!==0&&(l=new Date(l.getTime()-f)),l.toISOString()}function re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function ns(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function is(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}function Pl(r){if(!r)throw new d(h("Resource type is null"));if(!Mr(r))throw new d(h("Unknown resource type"))}function On(r,e,t){r===null?t.push(g(e,"Invalid null value")):Array.isArray(r)?os(r,e,t):typeof r=="object"&&ss(r,e,t)}function os(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(g(`${e}[${n}]`,"Invalid undefined value")):On(r[n],`${e}[${n}]`,t)}function ss(r,e,t){for(let[n,i]of Object.entries(r))On(i,`${e}${e?".":""}${n}`,t)}function Al(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function Yt(r,e,t,n){new Jt(r,e,t,n).crawl()}var Jt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=se(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(y(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=_(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=Xt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of De(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ve(e.type.charAt(0))){let n=se(e.type);this.crawlObject(e,n,t)}}};function Xt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let u of a)s.push(A(u,o));else a!==void 0&&s.push(A(a,o));i=s}return i}var Vn={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},as={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},cs={"ele-1":!0};function Xl(r,e){new Zt(r.resourceType,r,e).validate()}var Zt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=wt(n):this.schema=se(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(h("Missing resource type"));er(this.rootResource,e,this.issues),Yt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new d({resourceType:"OperationOutcome",issue:t})}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(g(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(g(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(g(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Dn(a,s)||this.issues.push(g(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(f=>[f.name,0])):void 0;for(let f of u){this.constraintsCheck(f,s,n),this.checkPropertyValue(f,n);let E=ps(f,s.slicing);E&&l&&(l[E]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(g(n,"Missing required property")),!1):R(e)?(this.issues.push(g(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ve(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(g(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(i)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!ls(e,o,t)&&this.issues.push(g(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in cs)&&!this.isExpressionTrue(o,e,n)){this.issues.push(sr(n,o));return}}}isExpressionTrue(e,t,n){try{let i=$(e.expression,[t],{"%context":t,"%resource":y(this.currentResource[this.currentResource.length-1]),"%rootResource":y(this.rootResource),"%ucum":y(xn)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(ar(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=fs(e);if(n){let{type:o,value:s}=n;if(!(o in Vn)){this.issues.push(g(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Vn[o];if(typeof s!==a){s!==null&&this.issues.push(g(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Yt(i.value,this,se("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(g(n,"String must contain non-whitespace content"));return}let i=as[t];i&&!i.exec(e)&&this.issues.push(g(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(g(n,"Invalid numeric value")):us(t)&&!Number.isInteger(e)?this.issues.push(g(n,"Expected number to be an integer")):t===c.positiveInt&&e<=0?this.issues.push(g(n,"Expected number to be positive")):t===c.unsignedInt&&e<0&&this.issues.push(g(n,"Expected number to be non-negative"))}};function us(r){return r===c.integer||r===c.positiveInt||r===c.unsignedInt}function ls(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!A(r,i);return!1}function er(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(g(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(g(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(g(`${o}[${a}]`,"Invalid null value")):i[a]&&er(i[a],`${o}[${a}]`,t);else typeof i=="object"&&er(i,o,t)}}function Dn(r,e){return!(e.pattern&&!Oe(r,e.pattern)||e.fixed&&!ke(r,e.fixed))}function ds(r,e,t,n){if(Array.isArray(r))return!1;let i=(n??t.elements)[e.path],o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(Dn(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ps(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>De(Xt(r,n.path))?.some(i=>ds(i,n,t))))return t.name}}function fs(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}export{so as AccessPolicyInteraction,ze as AndAtom,C as ArithemticOperatorAtom,X as AsAtom,S as BooleanInfixOperatorAtom,Bu as CPT,Se as ClientStorage,je as ConcatAtom,$e as ContainsAtom,V as ContentType,bo as DEFAULT_ACCEPT,wc as DEFAULT_SEARCH_COUNT,G as DotAtom,Be as EmptySetAtom,He as EqualsAtom,Ke as EquivalentAtom,ve as EventTarget,Mu as ExternalSecretSystems,jt as FHIRCAST_EVENT_NAMES,yo as FHIRCAST_EVENT_RESOURCES,$t as FHIRCAST_EVENT_VERSION_REQUIRED,go as FHIRCAST_RESOURCE_TYPES,st as FhirFilterComparison,ct as FhirFilterConnective,at as FhirFilterNegation,Ue as FhirPathAtom,rt as FhircastConnection,j as FunctionAtom,ju as HTTP_HL7_ORG,z as Hl7Context,de as Hl7Field,kn as Hl7Message,be as Hl7Segment,qu as ICD10,Xe as ImpliesAtom,Qe as InAtom,ee as IndexerAtom,Q as InfixOperatorAtom,Z as IsAtom,_u as LOINC,et as LRUCache,O as LiteralAtom,Du as MEDPLUM_VERSION,fn as MedplumClient,Gt as MemoryStorage,ln as MockAsyncClientStorage,Ge as NotEqualsAtom,We as NotEquivalentAtom,ko as OAuthClientAssertionType,Ao as OAuthGrantType,Io as OAuthTokenAuthMethod,wo as OAuthTokenType,d as OperationOutcomeError,Ui as Operator,m as OperatorPrecedence,Je as OrAtom,ut as Parser,Pe as ParserBuilder,Re as PrefixOperatorAtom,c as PropertyType,Uu as RXNORM,w as ReadablePromise,Lu as SNOMED,Br as SearchParameterType,B as SymbolAtom,K as Tokenizer,tt as TypedEventTarget,xn as UCUM,qe as UnaryOperatorAtom,ce as UnionAtom,Ye as XorAtom,Es as accepted,hs as allOk,yr as arrayBufferToBase64,gr as arrayBufferToHex,De as arrayify,on as assertContextVersionOptional,Is as assertOk,v as badRequest,p as booleanToTypedValue,Si as buildTypeName,Ie as calculateAge,_s as calculateAgeString,Bc as canReadResourceType,qc as canWriteResource,co as canWriteResourceType,I as capitalize,On as checkForNull,da as compressElement,Tn as conceptMapTranslate,Jc as convertContainedResourcesToBundle,lo as convertToTransactionBundle,Yt as crawlResource,sr as createConstraintIssue,Ht as createFhircastMessagePayload,ar as createProcessingIssue,J as createReference,g as createStructureIssue,gs as created,Xr as decodeBase64,yt as deepClone,ke as deepEquals,Oe as deepIncludes,Zr as encodeBase64,en as encryptSHA256,ue as evalFhirPath,$ as evalFhirPathTyped,Et as fhirPathArrayEquals,bt as fhirPathArrayEquivalent,Ar as fhirPathEquals,fi as fhirPathEquivalent,Fe as fhirPathIs,St as fhirPathNot,Vn as fhirTypeToJsType,Hs as findObservationInterval,Gs as findObservationReferenceRange,Ys as findResourceByCode,Ts as forbidden,ra as formatAddress,ni as formatCodeableConcept,ii as formatCoding,oa as formatDate,Tt as formatDateTime,ia as formatFamilyName,na as formatGivenName,is as formatHl7DateTime,Ne as formatHumanName,ua as formatMoney,oi as formatObservationValue,sa as formatPeriod,Y as formatQuantity,ca as formatRange,Vc as formatSearchQuery,Xn as formatTime,aa as formatTiming,te as generateId,Dr as getAllDataTypes,Us as getAllQuestionnaireAnswers,gt as getCodeBySystem,se as getDataType,Fs as getDateProperty,_n as getDisplayString,_e as getElementDefinition,Pi as getElementDefinitionFromElements,At as getElementDefinitionTypeName,Ec as getExpressionForResourceType,$r as getExpressionsForResourceType,pr as getExtension,js as getExtensionValue,Bs as getIdentifier,Ms as getImageSrc,Xt as getNestedProperty,La as getPathDisplayName,Ei as getPropertyDisplayName,Ls as getQuestionnaireAnswers,qt as getRandomString,pe as getReferenceString,Ma as getResourceTypes,_a as getSearchParameter,qr as getSearchParameterDetails,Fa as getSearchParameters,ws as getStatus,A as getTypedPropertyValue,di as getTypedPropertyValueWithSchema,N as globalSchema,vs as gone,Dt as indexSearchParameter,Na as indexSearchParameterBundle,Ot as indexStructureDefinitionBundle,Sr as inflateBaseSchema,ui as inflateElement,xe as initFhirPathParserBuilder,Ps as isAccepted,sn as isCompletedSubscriptionRequest,nn as isContextVersionRequired,Rs as isCreated,Nr as isDataTypeLoaded,R as isEmpty,xo as isFhircastResourceType,As as isGone,an as isJwt,Ve as isLowerCase,cn as isMedplumAccessToken,Cs as isNotFound,H as isObject,mt as isOk,ne as isOperationOutcome,mi as isPeriod,jn as isPopulated,Fr as isProfileLoaded,Fn as isProfileResource,P as isQuantity,wr as isQuantityEquivalent,fe as isReference,_ as isResource,Mr as isResourceType,Vt as isResourceTypeSchema,mr as isStringArray,$s as isUUID,vt as isValidDate,Zs as lazy,gi as loadDataType,ds as matchDiscriminant,uo as matchesAccessPolicy,Tr as matchesRange,zr as matchesSearchRequest,Nn as normalizeErrorString,we as normalizeOperationOutcome,ir as notFound,ys as notModified,Mn as operationOutcomeIssueToString,or as operationOutcomeToString,Lt as parseCriteriaAsSearchRequest,Nt as parseFhirPath,xl as parseFilterParameter,Sl as parseHl7DateTime,it as parseJWTPayload,Zu as parseMappingLanguage,ji as parseParameter,Ns as parseReference,kc as parseSearchDefinition,Ic as parseSearchRequest,Kr as parseSearchUrl,wt as parseStructureDefinition,Oc as parseXFhirQuery,Ws as preciseEquals,Js as preciseGreaterThan,Yn as preciseGreaterThanOrEquals,zs as preciseLessThan,Jn as preciseLessThanOrEquals,Ks as preciseRound,oo as projectAdminResourceTypes,io as protectedResourceTypes,Me as removeDuplicates,fo as reorderBundle,ur as resolveId,jc as satisfiedAccessPolicy,Qt as serializeFhircastSubscriptionRequest,bs as serverError,Qs as setCodeBySystem,qs as setIdentifier,F as singleton,xt as sleep,Xs as splitN,Al as streamToBuffer,fr as stringify,Lr as stringifyTypedValue,sl as structureMapTransform,Aa as subsetResource,D as toJsBoolean,y as toTypedValue,Ss as tooManyRequests,Le as tryGetDataType,un as tryGetJwtExpiration,Ca as tryGetProfile,xs as unauthorized,nt as validateFhircastSubscriptionRequest,Xl as validateResource,Pl as validateResourceType,h as validationError};
|
|
42
|
+
}`.replace(/\s+/g," "),a=await this.graphql(s);Vt(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Nt(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t){if(Fr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});s?Vt([s],t):console.warn(`No StructureDefinition found for ${t}!`)})());return this.setCacheEntry(n,o),o}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,f=()=>l.abort();s?.signal?.addEventListener("abort",f);let E=q=>{s?.signal?.removeEventListener("abort",f),q instanceof Error?u(q):a(q)};l.responseType="json",l.onabort=()=>E(new Error("Request aborted")),l.onerror=()=>E(new Error("Request error")),o&&(l.upload.onprogress=q=>o(q),l.upload.onload=q=>o(q)),l.onload=()=>{l.status>=200&&l.status<300?E(l.response):E(new d(Ie(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",ur(t),"$push"),{destination: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=un(t),this.medplumServer=cn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();return i.startsWith(dn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:dn+a.id,title:i},...o},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await gn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new w(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new d(ir);let u=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&u&&l==="follow")return this.request("GET",u,{...o,body:void 0});let f;if(a)try{f=await t.json()}catch(E){throw console.error("Error parsing response",t.status,E),E}else f=await t.text();if(t.status>=400)throw new d(Ie(f));return f}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(u){this.retryCatch(a,i,u)}await Tt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let u=await gn(a);u&&(i=await this.fetchWithRetry(u,s))}await Tt(o)}return this.parseResponse(i,"POST",t)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(Ie(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&&!ht(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=bo),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=V.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=qt();sessionStorage.setItem("pkceState",t);let n=qt();sessionStorage.setItem("codeVerifier",n);let i=await en(n),o=yr(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??mn()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??mn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Zr(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",Qt(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!it(t))throw new d(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",Qt(t),V.FORM_URL_ENCODED)}fhircastConnect(t){return new nt(t)}async fhircastPublish(t,n,i,o){return nn(n)?this.post(`/fhircast/STU3/${t}`,Ht(t,n,i,o),V.JSON):(on(n),this.post(`/fhircast/STU3/${t}`,Ht(t,n,i),V.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":V.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(v(a.error_description))}catch(a){throw new d(v("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(an(n)){let i=ot(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 Vo(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function mn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function hn(r){return r.endsWith("/")?r:r+"/"}function st(r,e){return new URL(e,r).toString()}async function gn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(ne(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function yn(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var _u={aws_ssm_parameter_store:"aws_ssm_parameter_store"};var xn="http://unitsofmeasure.org",Uu="http://loinc.org",Bu="http://snomed.info/sct",qu="http://www.nlm.nih.gov/research/umls/rxnorm",ju="http://www.ama-assn.org/go/cpt",$u="http://hl7.org/fhir/sid/icd-10",Qu="http://hl7.org";function Tn(r,e){if(!r.group)throw new d(v("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Do(e);if(ne(t))throw new d(t);let n=Mo(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 Do(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?No(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 No(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 Mo(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=Fo(i,o)),s&&t.push(...s)}return t}function Fo(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var _o=[...xe,"->","<<",">>","=="];function vn(r){return new K(r,ye,_o).tokenize()}var Lo={"-":"disjoint","==":"equal"},Kt=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(Sn)):t instanceof O||t instanceof B?(e.transform="copy",e.parameter=[Sn(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(m.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=Lo[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,f=e?.group?.find(E=>E.source===i&&E.target===u);f||(f={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(f)),f.element||(f.element=[]),f.element.push({code:o,target:[{code:l,equivalence:s}]})}};function Sn(r){if(r instanceof B)return{valueId:r.name};if(r instanceof O)return Uo(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Uo(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 Bo=Te().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function tl(r){let e=Bo.construct(vn(r));return e.removeComments(),new Kt(e).parse()}function cl(r,e,t){return qo({root:r,loader:t},r,e)}function qo(r,e,t){return jo(r,e),Rn(r,e),Pn(r,e.group[0],t)}function jo(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)Rn(r,i)}}function Rn(r,e){if(e.group)for(let t of e.group)Wt(r,t.name,{type:"StructureMapGroup",value:t})}function Pn(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)be(o,l.name,t[a++]);for(let l of i){let f=t[a++]??y({});be(o,l.name,f),s.push(f)}let u={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)Cn(u,l);return s}function Cn(r,e){let t=!1;if(e.source)for(let n of e.source)$o(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)Ho(r,n);if(e.rule)for(let n of e.rule)Cn(r,n);if(e.dependent)for(let n of e.dependent)Zo(r,n)}}function $o(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&&!En(t,{[e.variable]:i[0]},e.condition))return!1;if(e.check&&!En(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Qo(e,i)),e.variable&&Wt(r,e.variable,wn(i)),!0}function En(r,e,t){return D($(t,[r],e))}function Qo(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 Ho(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=Go(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[y({})]:i=[y(n)];else switch(e.transform){case"append":i=Ko(r,e);break;case"copy":i=Wo(r,e);break;case"create":i=zo(r,e);break;case"evaluate":i=Jo(r,e);break;case"translate":i=Yo(r,e);break;case"truncate":i=Xo(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=[],be(t.value,e.element,n));for(let s of i)n.push(s.value)}else be(t.value,e.element,i[0].value);e.variable&&Wt(r,e.variable,wn(i))}}function Go(r,e){return Ue(r.type)?.elements?.[e]?.isArray}function Ko(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 Wo(r,e){return e.parameter.flatMap(t=>W(r,t))}function zo(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[y(t)]}function Jo(r,e){let n=W(r,e.parameter?.[0])[0].value;return $(n,[],An(r))}function Yo(r,e){let t=e.parameter.flatMap(a=>W(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Tn(o,{system:o.group?.[0]?.source,code:n});return[y(s.match?.[0]?.concept?.code)]}function Xo(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 Zo(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:{}};Pn(o,t.value,i)}function W(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=bn(n),n.length===1&&n[0].type==="id"){let i=de(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return bn(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 An(r,e={}){if(r.parent&&An(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Wt(r,e,t){r.variables||(r.variables={}),be(r.variables,e,t)}function be(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function bn(r){return Array.isArray(r)?r:[r]}function wn(r){return r.length===1?r[0]:r}var es=[...xe,"eq","ne","co"];function In(r){return new K(r,ye,es,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var at=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},ct=class{constructor(e){this.child=e}},ut=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var ts={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 rs(r){let e=ts[r];if(!e)throw new d(v("Invalid operator: "+r));return e}var zt=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new ct(this.parse()),this.parser.consume(")")):e=new at(this.parser.consume("Symbol").value,rs(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 ut(t,e,this.parse())):e}},ns=Te();function vl(r){let e=ns.construct(In(r));return e.removeComments(),new zt(e).parse()}var z=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},kn=class r{constructor(e,t=new z){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",u=t?.getField(12)?.toString()??"2.5.1";return new r([new Re(["MSH",this.context.getMsh2(),o,s,n,i,os(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",u],this.context),new Re(["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=>Re.parse(n,t)),t)}},Re=class r{constructor(e,t=new z){this.context=t,mr(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 bl(r,e){if(!r)return;let t=re(r.slice(0,4),0),n=re(r.slice(4,6),1)-1,i=re(r.slice(6,8),1),o=re(r.slice(8,10),0),s=re(r.slice(10,12),0),a=re(r.slice(12,14),0),u=0;r.includes(".")&&(u=re(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),f=is(r,e?.tzOffset);return f!==0&&(l=new Date(l.getTime()-f)),l.toISOString()}function re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function is(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 os(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}function Al(r){if(!r)throw new d(h("Resource type is null"));if(!Mr(r))throw new d(h("Unknown resource type"))}function On(r,e,t){r===null?t.push(g(e,"Invalid null value")):Array.isArray(r)?ss(r,e,t):typeof r=="object"&&as(r,e,t)}function ss(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(g(`${e}[${n}]`,"Invalid undefined value")):On(r[n],`${e}[${n}]`,t)}function as(r,e,t){for(let[n,i]of Object.entries(r))On(i,`${e}${e?".":""}${n}`,t)}function Il(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function Yt(r,e,t,n){new Jt(r,e,t,n).crawl()}var Jt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=ae(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(y(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=_(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=Xt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Ne(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!De(e.type.charAt(0))){let n=ae(e.type);this.crawlObject(e,n,t)}}};function Xt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let u of a)s.push(A(u,o));else a!==void 0&&s.push(A(a,o));i=s}return i}var Vn={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},cs={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:/.*/},us={"ele-1":!0};function ed(r,e){new Zt(r.resourceType,r,e).validate()}var Zt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=It(n):this.schema=ae(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(h("Missing resource type"));er(this.rootResource,e,this.issues),Yt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new d({resourceType:"OperationOutcome",issue:t})}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(g(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(g(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(g(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Dn(a,s)||this.issues.push(g(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(f=>[f.name,0])):void 0;for(let f of u){this.constraintsCheck(f,s,n),this.checkPropertyValue(f,n);let E=fs(f,s.slicing);E&&l&&(l[E]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(g(n,"Missing required property")),!1):R(e)?(this.issues.push(g(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){De(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(g(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(i)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!ds(e,o,t)&&this.issues.push(g(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in us)&&!this.isExpressionTrue(o,e,n)){this.issues.push(sr(n,o));return}}}isExpressionTrue(e,t,n){try{let i=$(e.expression,[t],{"%context":t,"%resource":y(this.currentResource[this.currentResource.length-1]),"%rootResource":y(this.rootResource),"%ucum":y(xn)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(ar(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=ms(e);if(n){let{type:o,value:s}=n;if(!(o in Vn)){this.issues.push(g(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Vn[o];if(typeof s!==a){s!==null&&this.issues.push(g(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Yt(i.value,this,ae("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(g(n,"String must contain non-whitespace content"));return}let i=cs[t];i&&!i.exec(e)&&this.issues.push(g(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(g(n,"Invalid numeric value")):ls(t)&&!Number.isInteger(e)?this.issues.push(g(n,"Expected number to be an integer")):t===c.positiveInt&&e<=0?this.issues.push(g(n,"Expected number to be positive")):t===c.unsignedInt&&e<0&&this.issues.push(g(n,"Expected number to be non-negative"))}};function ls(r){return r===c.integer||r===c.positiveInt||r===c.unsignedInt}function ds(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!A(r,i);return!1}function er(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(g(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(g(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(g(`${o}[${a}]`,"Invalid null value")):i[a]&&er(i[a],`${o}[${a}]`,t);else typeof i=="object"&&er(i,o,t)}}function Dn(r,e){return!(e.pattern&&!Ve(r,e.pattern)||e.fixed&&!Oe(r,e.fixed))}function ps(r,e,t,n){if(Array.isArray(r))return!1;let i=(n??t.elements)[e.path],o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(Dn(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function fs(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Ne(Xt(r,n.path))?.some(i=>ps(i,n,t))))return t.name}}function ms(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}export{so as AccessPolicyInteraction,Je as AndAtom,C as ArithemticOperatorAtom,X as AsAtom,S as BooleanInfixOperatorAtom,ju as CPT,Ee as ClientStorage,$e as ConcatAtom,Qe as ContainsAtom,V as ContentType,bo as DEFAULT_ACCEPT,kc as DEFAULT_SEARCH_COUNT,G as DotAtom,qe as EmptySetAtom,Ge as EqualsAtom,We as EquivalentAtom,Se as EventTarget,_u as ExternalSecretSystems,jt as FHIRCAST_EVENT_NAMES,yo as FHIRCAST_EVENT_RESOURCES,$t as FHIRCAST_EVENT_VERSION_REQUIRED,go as FHIRCAST_RESOURCE_TYPES,at as FhirFilterComparison,ut as FhirFilterConnective,ct as FhirFilterNegation,Be as FhirPathAtom,nt as FhircastConnection,j as FunctionAtom,Qu as HTTP_HL7_ORG,z as Hl7Context,pe as Hl7Field,kn as Hl7Message,Re as Hl7Segment,$u as ICD10,Ze as ImpliesAtom,He as InAtom,ee as IndexerAtom,Q as InfixOperatorAtom,Z as IsAtom,Uu as LOINC,tt as LRUCache,O as LiteralAtom,Mu as MEDPLUM_VERSION,fn as MedplumClient,Gt as MemoryStorage,ln as MockAsyncClientStorage,Ke as NotEqualsAtom,ze as NotEquivalentAtom,Oo as OAuthClientAssertionType,wo as OAuthGrantType,ko as OAuthTokenAuthMethod,Io as OAuthTokenType,d as OperationOutcomeError,Ui as Operator,m as OperatorPrecedence,Ye as OrAtom,lt as Parser,Ce as ParserBuilder,Pe as PrefixOperatorAtom,c as PropertyType,qu as RXNORM,w as ReadablePromise,Bu as SNOMED,Br as SearchParameterType,B as SymbolAtom,K as Tokenizer,rt as TypedEventTarget,xn as UCUM,je as UnaryOperatorAtom,ue as UnionAtom,Xe as XorAtom,bs as accepted,gs as allOk,ie as append,yr as arrayBufferToBase64,gr as arrayBufferToHex,Ne as arrayify,on as assertContextVersionOptional,ks as assertOk,v as badRequest,p as booleanToTypedValue,Si as buildTypeName,ke as calculateAge,Ls as calculateAgeString,jc as canReadResourceType,$c as canWriteResource,co as canWriteResourceType,I as capitalize,On as checkForNull,pa as compressElement,Tn as conceptMapTranslate,Xc as convertContainedResourcesToBundle,lo as convertToTransactionBundle,Yt as crawlResource,sr as createConstraintIssue,Ht as createFhircastMessagePayload,ar as createProcessingIssue,J as createReference,g as createStructureIssue,ys as created,Xr as decodeBase64,xt as deepClone,Oe as deepEquals,Ve as deepIncludes,Zr as encodeBase64,en as encryptSHA256,le as evalFhirPath,$ as evalFhirPathTyped,bt as fhirPathArrayEquals,Rt as fhirPathArrayEquivalent,Ar as fhirPathEquals,fi as fhirPathEquivalent,_e as fhirPathIs,Et as fhirPathNot,Vn as fhirTypeToJsType,Gs as findObservationInterval,Ks as findObservationReferenceRange,Xs as findResourceByCode,vs as forbidden,na as formatAddress,ni as formatCodeableConcept,ii as formatCoding,sa as formatDate,vt as formatDateTime,oa as formatFamilyName,ia as formatGivenName,os as formatHl7DateTime,Me as formatHumanName,la as formatMoney,oi as formatObservationValue,aa as formatPeriod,Y as formatQuantity,ua as formatRange,Nc as formatSearchQuery,Xn as formatTime,ca as formatTiming,te as generateId,Dr as getAllDataTypes,Bs as getAllQuestionnaireAnswers,yt as getCodeBySystem,ae as getDataType,_s as getDateProperty,_n as getDisplayString,Le as getElementDefinition,Pi as getElementDefinitionFromElements,wt as getElementDefinitionTypeName,bc as getExpressionForResourceType,$r as getExpressionsForResourceType,pr as getExtension,$s as getExtensionValue,qs as getIdentifier,Fs as getImageSrc,Xt as getNestedProperty,Ua as getPathDisplayName,Ei as getPropertyDisplayName,Us as getQuestionnaireAnswers,qt as getRandomString,fe as getReferenceString,Fa as getResourceTypes,La as getSearchParameter,qr as getSearchParameterDetails,_a as getSearchParameters,Is as getStatus,A as getTypedPropertyValue,di as getTypedPropertyValueWithSchema,N as globalSchema,Ss as gone,Nt as indexSearchParameter,Ma as indexSearchParameterBundle,Vt as indexStructureDefinitionBundle,Sr as inflateBaseSchema,ui as inflateElement,Te as initFhirPathParserBuilder,Cs as isAccepted,sn as isCompletedSubscriptionRequest,nn as isContextVersionRequired,Ps as isCreated,Nr as isDataTypeLoaded,R as isEmpty,xo as isFhircastResourceType,ws as isGone,an as isJwt,De as isLowerCase,cn as isMedplumAccessToken,As as isNotFound,H as isObject,ht as isOk,ne as isOperationOutcome,mi as isPeriod,jn as isPopulated,Fr as isProfileLoaded,Fn as isProfileResource,P as isQuantity,wr as isQuantityEquivalent,me as isReference,_ as isResource,Mr as isResourceType,Dt as isResourceTypeSchema,mr as isStringArray,Qs as isUUID,St as isValidDate,ea as lazy,gi as loadDataType,ps as matchDiscriminant,uo as matchesAccessPolicy,Tr as matchesRange,zr as matchesSearchRequest,Nn as normalizeErrorString,Ie as normalizeOperationOutcome,ir as notFound,xs as notModified,Mn as operationOutcomeIssueToString,or as operationOutcomeToString,Lt as parseCriteriaAsSearchRequest,Mt as parseFhirPath,vl as parseFilterParameter,bl as parseHl7DateTime,ot as parseJWTPayload,tl as parseMappingLanguage,ji as parseParameter,Ms as parseReference,Vc as parseSearchDefinition,Oc as parseSearchRequest,Kr as parseSearchUrl,It as parseStructureDefinition,Dc as parseXFhirQuery,zs as preciseEquals,Ys as preciseGreaterThan,Yn as preciseGreaterThanOrEquals,Js as preciseLessThan,Jn as preciseLessThanOrEquals,Ws as preciseRound,oo as projectAdminResourceTypes,io as protectedResourceTypes,Fe as removeDuplicates,fo as reorderBundle,ur as resolveId,Qc as satisfiedAccessPolicy,Qt as serializeFhircastSubscriptionRequest,Rs as serverError,Hs as setCodeBySystem,js as setIdentifier,F as singleton,Tt as sleep,Zs as splitN,Il as streamToBuffer,fr as stringify,Lr as stringifyTypedValue,cl as structureMapTransform,wa as subsetResource,D as toJsBoolean,y as toTypedValue,Es as tooManyRequests,Ue as tryGetDataType,un as tryGetJwtExpiration,Aa as tryGetProfile,Ts as unauthorized,it as validateFhircastSubscriptionRequest,ed as validateResource,Al as validateResourceType,h as validationError};
|
|
43
43
|
//# sourceMappingURL=index.mjs.map
|