@medplum/core 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";var It=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var Jn=Object.prototype.hasOwnProperty;var Yn=(r,e)=>{for(var t in e)It(r,t,{get:e[t],enumerable:!0})},Xn=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of zn(e))!Jn.call(r,i)&&i!==t&&It(r,i,{get:()=>e[i],enumerable:!(n=Gn(e,i))||n.enumerable});return r};var Zn=r=>Xn(It({},"__esModule",{value:!0}),r);var Xs={};Yn(Xs,{AccessPolicyInteraction:()=>En,AndAtom:()=>Me,ArithemticOperatorAtom:()=>R,AsAtom:()=>Y,BooleanInfixOperatorAtom:()=>v,CPT:()=>ws,ClientStorage:()=>Je,ConcatAtom:()=>Ve,ContainsAtom:()=>De,ContentType:()=>w,DEFAULT_ACCEPT:()=>Mn,DEFAULT_SEARCH_COUNT:()=>Mo,DotAtom:()=>H,EmptySetAtom:()=>ke,EqualsAtom:()=>Fe,EquivalentAtom:()=>Ue,EventTarget:()=>fe,ExternalSecretSystems:()=>Rs,FHIRCAST_EVENT_NAMES:()=>vt,FHIRCAST_EVENT_RESOURCES:()=>On,FHIRCAST_EVENT_VERSION_REQUIRED:()=>St,FHIRCAST_RESOURCE_TYPES:()=>kn,FhirFilterComparison:()=>Ye,FhirFilterConnective:()=>Ze,FhirFilterNegation:()=>Xe,FhirPathAtom:()=>Ie,FhircastConnection:()=>Ge,FunctionAtom:()=>q,Hl7Context:()=>W,Hl7Field:()=>ie,Hl7Message:()=>Pr,Hl7Segment:()=>me,ICD10:()=>Is,ImpliesAtom:()=>$e,InAtom:()=>Ne,IndexerAtom:()=>Z,InfixOperatorAtom:()=>j,IsAtom:()=>X,LOINC:()=>Ps,LRUCache:()=>Ke,LiteralAtom:()=>D,MEDPLUM_VERSION:()=>Ts,MedplumClient:()=>Sr,MemoryStorage:()=>Pt,NotEqualsAtom:()=>_e,NotEquivalentAtom:()=>Le,OAuthClientAssertionType:()=>jn,OAuthGrantType:()=>Bn,OAuthTokenAuthMethod:()=>$n,OAuthTokenType:()=>qn,OperationOutcomeError:()=>p,Operator:()=>hn,OperatorPrecedence:()=>m,OrAtom:()=>Be,Parser:()=>et,ParserBuilder:()=>ye,PrefixOperatorAtom:()=>he,PropertyType:()=>c,RXNORM:()=>Cs,ReadablePromise:()=>I,SNOMED:()=>As,SearchParameterType:()=>ir,SymbolAtom:()=>B,Tokenizer:()=>K,TypedEventTarget:()=>We,UCUM:()=>Er,UnaryOperatorAtom:()=>Oe,UnionAtom:()=>te,XorAtom:()=>qe,accepted:()=>io,allOk:()=>Yi,arrayBufferToBase64:()=>Nt,arrayBufferToHex:()=>Dt,arrayify:()=>Se,assertContextVersionOptional:()=>gr,assertOk:()=>po,badRequest:()=>C,booleanToTypedValue:()=>l,buildTypeName:()=>ln,calculateAge:()=>ge,calculateAgeString:()=>oi,canReadResourceType:()=>cs,canWriteResource:()=>us,canWriteResourceType:()=>bn,capitalize:()=>A,checkForNull:()=>Ar,compressElement:()=>Wi,convertContainedResourcesToBundle:()=>ms,convertToTransactionBundle:()=>An,crawlResource:()=>Ct,createConstraintIssue:()=>Wt,createDeferredPromise:()=>Oi,createFhircastMessagePayload:()=>bt,createProcessingIssue:()=>Gt,createReference:()=>G,createStructureIssue:()=>y,created:()=>Xi,decodeBase64:()=>fr,deepClone:()=>rt,deepEquals:()=>xe,deepIncludes:()=>Te,encodeBase64:()=>mr,encryptSHA256:()=>hr,evalFhirPath:()=>re,evalFhirPathTyped:()=>de,fhirPathArrayEquals:()=>at,fhirPathArrayEquivalent:()=>ct,fhirPathEquals:()=>Ut,fhirPathEquivalent:()=>Yr,fhirPathIs:()=>Re,fhirPathNot:()=>st,fhirTypeToJsType:()=>wr,findObservationInterval:()=>vi,findObservationReferenceRange:()=>Si,findResourceByCode:()=>Ii,forbidden:()=>to,formatAddress:()=>Vi,formatCodeableConcept:()=>qr,formatCoding:()=>$r,formatDate:()=>Fi,formatDateTime:()=>it,formatFamilyName:()=>Ni,formatGivenName:()=>Di,formatHl7DateTime:()=>Kn,formatHumanName:()=>Ee,formatMoney:()=>ji,formatObservationValue:()=>jr,formatPeriod:()=>_i,formatQuantity:()=>z,formatRange:()=>$i,formatSearchQuery:()=>Yo,formatTime:()=>Br,formatTiming:()=>Bi,generateId:()=>pe,getAllDataTypes:()=>Xt,getAllQuestionnaireAnswers:()=>ai,getCodeBySystem:()=>tt,getDataType:()=>ee,getDateProperty:()=>ii,getDisplayString:()=>Dr,getElementDefinition:()=>Pe,getElementDefinitionTypeName:()=>pt,getExpressionForResourceType:()=>Lo,getExpressionsForResourceType:()=>sr,getExtension:()=>di,getExtensionValue:()=>li,getIdentifier:()=>ci,getImageSrc:()=>ni,getNestedProperty:()=>wt,getPropertyDisplayName:()=>Eo,getQuestionnaireAnswers:()=>si,getRandomString:()=>Tt,getReferenceString:()=>oe,getResourceTypes:()=>To,getSearchParameter:()=>So,getSearchParameterDetails:()=>or,getSearchParameters:()=>vo,getStatus:()=>lo,getTypedPropertyValue:()=>k,globalSchema:()=>O,gone:()=>ro,indexSearchParameter:()=>ht,indexSearchParameterBundle:()=>xo,indexStructureDefinitionBundle:()=>Yt,inflateBaseSchema:()=>_t,inflateElement:()=>Hr,initFhirPathParserBuilder:()=>le,isAccepted:()=>ao,isCompletedSubscriptionRequest:()=>xr,isContextVersionRequired:()=>yr,isCreated:()=>so,isDataTypeLoaded:()=>Zt,isEmpty:()=>S,isFhircastResourceType:()=>Vn,isGone:()=>uo,isJwt:()=>Tr,isLowerCase:()=>ve,isMedplumAccessToken:()=>vr,isNotFound:()=>co,isObject:()=>Q,isOk:()=>dt,isOperationOutcome:()=>Ae,isPeriod:()=>Xr,isProfileResource:()=>Vr,isQuantity:()=>E,isQuantityEquivalent:()=>Lt,isReference:()=>se,isResource:()=>F,isResourceType:()=>tr,isResourceTypeSchema:()=>mt,isStringArray:()=>Vt,isUUID:()=>xi,isValidDate:()=>ot,loadDataType:()=>cn,matchesAccessPolicy:()=>Rn,matchesRange:()=>Ft,matchesSearchRequest:()=>dr,normalizeErrorString:()=>rn,normalizeOperationOutcome:()=>Ce,notFound:()=>Qt,notModified:()=>Zi,operationOutcomeIssueToString:()=>nn,operationOutcomeToString:()=>Ht,parseCriteriaAsSearchRequest:()=>gt,parseFhirPath:()=>yt,parseFilterParameter:()=>Us,parseHl7DateTime:()=>Ls,parseJWTPayload:()=>Rt,parseMappingLanguage:()=>Vs,parseParameter:()=>xn,parseReference:()=>ei,parseSearchDefinition:()=>qo,parseSearchRequest:()=>Bo,parseSearchUrl:()=>ur,parseStructureDefinition:()=>ft,parseXFhirQuery:()=>Jo,preciseEquals:()=>Ai,preciseGreaterThan:()=>wi,preciseGreaterThanOrEquals:()=>Mr,preciseLessThan:()=>Ci,preciseLessThanOrEquals:()=>Lr,preciseRound:()=>Pi,projectAdminResourceTypes:()=>Sn,protectedResourceTypes:()=>vn,removeDuplicates:()=>be,reorderBundle:()=>Cn,resolveId:()=>kt,satisfiedAccessPolicy:()=>ls,serializeFhircastSubscriptionRequest:()=>Et,serverError:()=>oo,setCodeBySystem:()=>Ti,setIdentifier:()=>ui,singleton:()=>N,sleep:()=>nt,splitN:()=>ki,streamToBuffer:()=>js,stringify:()=>Ot,stringifyTypedValue:()=>rr,subsetResource:()=>fo,toJsBoolean:()=>U,toTypedValue:()=>T,tooManyRequests:()=>no,tryGetDataType:()=>er,unauthorized:()=>eo,validateFhircastSubscriptionRequest:()=>ze,validateResource:()=>Ks,validateResourceType:()=>Bs,validationError:()=>h});module.exports=Zn(Xs);var he=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},j=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},ye=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 et(e,this.prefixParselets,this.infixParselets)}},et=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}" at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};function G(r){let e=oe(r),t=Dr(r);return t===e?{reference:e}:{reference:e,display:t}}function oe(r){return se(r)?r.reference:`${r.resourceType}/${r.id}`}function kt(r){if(r)return se(r)?r.reference.split("/")[1]:r.id}function ei(r){if(r?.reference===void 0)return;let[e,t]=r.reference.split("/");if(!(e===""||t===""||t===void 0))return[e,t]}function Vr(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Dr(r){if(Vr(r)){let e=ti(r);if(e)return e}if(r.resourceType==="Device"){let e=ri(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:oe(r)}function ti(r){let e=r.name;if(e&&e.length>0)return Ee(e[0])}function ri(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function ni(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Or(t);if(n)return n}else return Or(e)}function Or(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function ii(r){return r?new Date(r):void 0}function ge(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(),d=n.getUTCDate(),f=a-i;(u<o||u===o&&d<s)&&f--;let P=a*12+u-(i*12+o);d<s&&P--;let $=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:P,days:$}}function oi(r,e){let{years:t,months:n,days:i}=ge(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 si(r){let e={};return Nr(r.item,e),e}function Nr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Nr(t.item,e)}function ai(r){let e={};return Fr(r.item,e),e}function Fr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Fr(t.item,e)}function ci(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 ui(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 li(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 di(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 Ot(r,e){return JSON.stringify(r,pi,e?2:void 0)}function pi(r,e){return!fi(r)&&S(e)?void 0:e}function fi(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"&&r===""||e==="object"&&Object.keys(r).length===0}function xe(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?mi(r,e):Array.isArray(r)||Array.isArray(e)?!1:Q(r)&&Q(e)?hi(r,e,t):(Q(r)||Q(e),!1)}function mi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!xe(r[t],e[t]))return!1;return!0}function hi(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(!xe(o,s,i))return!1}return!0}function Te(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?yi(r,e):Array.isArray(r)||Array.isArray(e)?!1:Q(r)&&Q(e)?gi(r,e):Q(r)||Q(e)?!1:r===e}function yi(r,e){return e.every(t=>r.some(n=>Te(n,t)))}function gi(r,e){return Object.entries(e).every(([t,n])=>t in r&&Te(r[t],n))}function rt(r){return JSON.parse(JSON.stringify(r))}function xi(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function Q(r){return r!==null&&typeof r=="object"}function Vt(r){return r.every(e=>typeof e=="string")}var _r=[];for(let r=0;r<256;r++)_r.push(r.toString(16).padStart(2,"0"));function Dt(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=_r[e[n]];return t.join("")}function Nt(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 A(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function ve(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function tt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ti(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 vi(r,e,t,n){return r.qualifiedInterval?.find(i=>Ur(i,e)&&Ri(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Si(r,e,t){return r.qualifiedInterval?.find(n=>Ur(n,e)&&t.includes(n.condition))}function Ur(r,e){return Ei(r,e)&&bi(r,e)}function Ei(r,e){return!r.gender||r.gender===e.gender}function bi(r,e){return!r.age||Ft(ge(e.birthDate).years,r.age)}function Ri(r,e,t){return!!r.range&&Ft(e,r.range,t)}function Ft(r,e,t){return(e.low?.value===void 0||Mr(r,e.low.value,t))&&(e.high?.value===void 0||Lr(r,e.high.value,t))}function Pi(r,e){return parseFloat(r.toFixed(e))}function Ai(r,e,t){return _(r,t)===_(e,t)}function Ci(r,e,t){return _(r,t)<_(e,t)}function wi(r,e,t){return _(r,t)>_(e,t)}function Lr(r,e,t){return _(r,t)<=_(e,t)}function Mr(r,e,t){return _(r,t)>=_(e,t)}function _(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Ii(r,e,t){return r.find(n=>typeof e=="string"?tt(n.code||{},t)===e:tt(n.code||{},t)===tt(e,t))}function Se(r){if(r)return Array.isArray(r)?r:[r]}var nt=r=>new Promise(e=>{setTimeout(e,r)});function ki(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 Oi(){let r,e;return{promise:new Promise((n,i)=>{r=n,e=i}),resolve:r,reject:e}}function Vi(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 Ee(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=ae(r.text);if(n)return n}return t.join(" ").trim()}function Di(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Ni(r){return ae(r.family)??""}function ot(r){return r instanceof Date&&!isNaN(r.getTime())}function Fi(r,e,t){if(!r)return"";let n=new Date(r);return ot(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Br(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return ot(n)?n.toLocaleTimeString(e,t):""}function it(r,e,t){if(!r)return"";let n=new Date(r);return ot(n)?n.toLocaleString(e,t):""}function _i(r,e,t){return!r||!r.start&&!r.end?"":it(r.start,e,t)+" - "+it(r.end,e,t)}var Ui={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Li={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Mi={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Bi(r){if(!r)return"";let e=[];return qi(e,r.repeat),r.event&&e.push(r.event.map(t=>it(t)).join(", ")),A(e.join(" ").trim())}function qi(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Ui[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Li[i]):r.push("per "+n+" "+Mi[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(A).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Br(o)).join(", "))}function $i(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=Hi(n.value,e),`> ${z(n,e)}`):`>= ${z(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Qi(i.value,e),`< ${z(i,e)}`):`<= ${z(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${z(n,e)} - ${z(i,e)}`)}function z(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 ji(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function qr(r){if(!r)return"";let e=ae(r.text);return e||(r.coding?r.coding.map(t=>$r(t)).join(", "):"")}function $r(r){return ae(r?.display)??ae(r?.code)??""}function jr(r){if(!r)return"";if("component"in r)return r.component.map(t=>jr(t)).join(" / ");if(r.valueQuantity)return z(r.valueQuantity);if(r.valueCodeableConcept)return qr(r.valueCodeableConcept);let e=ae(r.valueString);return e||""}function ae(r){return typeof r=="string"?r:void 0}function Qi(r,e,t=1){return(Qr(r,e)+t)*Math.pow(10,-e)}function Hi(r,e,t=1){return(Qr(r,e)-t)*Math.pow(10,-e)}function Qr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Ki={"http://hl7.org/fhirpath/System.String":"string"};function Wi(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:Ki[t.code]??t.code})),e}function Hr(r){let e=r.max&&r.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:r.max;return{path:"",description:"",type:r.type??[],min:r.min??0,max:e??1,isArray:!!e&&e>1,constraints:[]}}function _t(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,Hr(o)])),constraints:[],innerTypes:[]};return e}var Kr={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 l(r){return[{type:c.boolean,value:r}]}function T(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}:E(r)?{type:c.Quantity,value:r}:F(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function U(r){return r.length===0?!1:!!r[0].value}function N(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 k(r,e){if(!r.value)return;let t=Pe(r.type,e);return t?zi(r,e,t):Ji(r,e)}function zi(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let a of n){let u=e.replace("[x]","")+A(a.code);if(u in r.value){i=r.value[u],o=a.code;break}}let s=r.value["_"+e];if(s&&(Array.isArray(i)?i=i.map((a,u)=>s[u]?Jr(a??{},s[u]):a):i=Jr(i??{},s)),!S(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>Wr(a,o)):Wr(i,o)}function Wr(r,e){return e==="Resource"&&F(r)&&(e=r.resourceType),{type:e,value:r}}function Ji(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in c){let o=e+A(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(T):T(n)}function be(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(U(Ut(t,i))){n=!0;break}n||e.push(t)}return e}function st(r){return l(!U(r))}function at(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?l(!1):l(r.every((t,n)=>U(Ut(t,e[n]))))}function Ut(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?l(Math.abs(t-n)<1e-8):E(t)&&E(n)?l(Lt(t,n)):l(typeof t=="object"&&typeof n=="object"?Mt(r,e):t===n)}function ct(r,e){return r.length===0&&e.length===0?l(!0):r.length!==e.length?l(!1):(r.sort(Gr),e.sort(Gr),l(r.every((t,n)=>U(Yr(t,e[n])))))}function Yr(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"?l(Math.abs(s-a)<.01):E(s)&&E(a)?l(Lt(s,a)):l(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"?Mt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Gr(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 Re(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 Xr(t);case"Quantity":return E(t);default:return typeof t=="object"&&t?.resourceType===e}}function Xr(r){return!!(r&&typeof r=="object"&&"start"in r)}function E(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Lt(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 Mt(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(zr(o)&&zr(s)){if(!Mt(o,s))return!1}else if(o!==s)return!1}return!0}function zr(r){return r!==null&&typeof r=="object"}function Jr(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}var Bt="ok",ut="created",qt="gone",$t="not-modified",jt="not-found",Zr="unauthorized",en="forbidden",tn="too-many-requests",lt="accepted",Yi={resourceType:"OperationOutcome",id:Bt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Xi={resourceType:"OperationOutcome",id:ut,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Zi={resourceType:"OperationOutcome",id:$t,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Qt={resourceType:"OperationOutcome",id:jt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},eo={resourceType:"OperationOutcome",id:Zr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},to={resourceType:"OperationOutcome",id:en,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},ro={resourceType:"OperationOutcome",id:qt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},no={resourceType:"OperationOutcome",id:tn,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function io(r){return{resourceType:"OperationOutcome",id:lt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function C(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 oo(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Ae(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function dt(r){return r.id===Bt||r.id===ut||r.id===$t||r.id===lt}function so(r){return r.id===ut}function ao(r){return r.id===lt}function co(r){return r.id===jt}function uo(r){return r.id===qt}function lo(r){switch(r.id){case Bt:return 200;case ut:return 201;case lt:return 202;case $t:return 304;case Zr:return 401;case en:return 403;case jt:return 404;case qt:return 410;case tn:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function po(r,e){if(!dt(r)||e===void 0)throw new p(r)}var p=class extends Error{constructor(t,n){super(Ht(t));this.outcome=t,this.cause=n}};function Ce(r){return r instanceof p?r.outcome:Ae(r)?r:C(rn(r))}function rn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:Ae(r)?Ht(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Ht(r){let e=r.issue?.map(nn)??[];return e.length>0?e.join("; "):"Unknown error"}function nn(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 Kt(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function y(r,e){return Kt("structure",e,r)}function Wt(r,e){return Kt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Gt(r,e,t,n){return Kt("processing",e,r,{...n,error:t})}function ft(r){return new Jt(r).parse()}var J=_t(Kr);function Yt(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)cn(t)}function cn(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=ft(r);J[r.name]=e;for(let t of e.innerTypes)t.parentType=e,J[t.name]=t}function Xt(){return J}function Zt(r){return!!J[r]}function er(r){return J[r]}function ee(r){let e=J[r];if(!e)throw new p(C("Unknown data type: "+r));return e}function tr(r){let e=J[r];return e&&mt(e)}var Jt=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,url:e.url,kind:e.kind,description:go(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=zt(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[zt(e,n.path)]=t;break}n=n.parent}if(!n){let i=zt(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&&!ce(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:pt(e),description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:ce(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){yo(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&&!ce(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!ce(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!ce(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!!(ce(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??"",type:e.type?.map(t=>({code:t.code??"",targetProfile:t.targetProfile})),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinition(e){let t=sn(e.max),n=e.base?.max?sn(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:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?pt(e):o.code??"",targetProfile:o.targetProfile})),fixed:an(k(i,"fixed")),pattern:an(k(i,"pattern")),binding:e.binding}}};function fo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=J[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+A(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!mo.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(on):[on]},r}var on={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},mo=["resourceType","id","meta"];function sn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function zt(r,e=""){return ho(r.path,e)}function ho(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function ce(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function an(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function yo(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 go(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 xo(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&ht(t)}}function ht(r){for(let e of r.base??[]){let t=O.types[e];t||(t={searchParamsDetails:{}},O.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function pt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ln((r.base?.path??r.path)?.split(".")):e}function ln(r){return r.length===1?r[0]:r.map(A).join("")}function mt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function To(){return Object.values(Xt()).filter(mt).map(r=>r.name)}function vo(r){return O.types[r]?.searchParams}function So(r,e){return O.types[r]?.searchParams?.[e]}function Eo(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(Ro).join(" ").replace("_"," ").replace(/\s+/g," ")}var bo=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function Ro(r){let e=r.toUpperCase();return bo.has(e)?e:e.charAt(0)+r.slice(1)}function Pe(r,e){let t=er(r);if(t)return t.elements[e]??t.elements[e+"[x]"]}function F(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function se(r){return!!(r&&typeof r=="object"&&"reference"in r)}var O={types:{}};function rr(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 un(r.value);case c.CodeableConcept:return r.value.coding?.map(un).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ee(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 F(r.value)?G(r.value).reference:JSON.stringify(r)}}function un(r){return r?`${r.system??""}|${r.code}`:""}function ue(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 we=()=>[],b={empty:(r,e)=>l(e.length===0),exists:(r,e,t)=>t?l(e.filter(n=>U(t.eval(r,[n]))).length>0):l(e.length>0),all:(r,e,t)=>l(e.every(n=>U(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return l(!1);return l(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return l(!0);return l(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return l(!1);return l(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return l(!0);return l(!1)},subsetOf:we,supersetOf:we,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)=>l(e.length===b.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>U(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:we,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 be([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[T(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return U(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return l(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return l(!0);if(["false","f","no","n","0","0.0"].includes(n))return l(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:l(b.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(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?[]:l(b.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:ue(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:l(b.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:ue(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:l(b.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(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?[]:l(b.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(e,1);return E(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?[]:l(b.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(e,1);return t==null?[]:E(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:l(b.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=M(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:ue("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:l(b.toTime(r,e).length===1),indexOf:(r,e,t)=>V((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>V((i,o,s)=>{let a=o,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)=>V((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>V((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>V((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>V(t=>t.toUpperCase(),r,e),lower:(r,e)=>V(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>V((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>V((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>V((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>V(t=>t.length,r,e),toChars:(r,e)=>V(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>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:we,descendants:we,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=ge(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 H&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:Re(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 T(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"}}:F(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 V(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=M(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(T):[T(o)]}function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=M(t,1),o=E(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,d=o?{...i,value:a}:a;return[{type:u,value:d}]}function M(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 Ie=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},D=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},B=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return F(t)&&t.resourceType===this.name?e:k(e,this.name)}toString(){return this.name}},ke=class{eval(){return[]}toString(){return"{}"}},Oe=class extends he{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},Y=class extends j{constructor(e,t){super("as",e,t)}eval(e,t){return b.ofType(e,this.left.eval(e,t),this.right)}},v=class extends j{},R=class extends v{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=E(s)?s.value:s,d=E(a)?a.value:a,f=this.impl(u,d);return typeof f=="boolean"?l(f):E(s)?[{type:c.Quantity,value:{...s,value:f}}]:[T(f)]}},Ve=class extends j{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:c.string,value:o.map(s=>s.value).join("")}]:o}},De=class extends v{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return l(n.some(o=>o.value===i[0].value))}},Ne=class extends v{constructor(e,t){super("in",e,t)}eval(e,t){let n=N(this.left.eval(e,t)),i=this.right.eval(e,t);return n?l(i.some(o=>o.value===n.value)):[]}},H=class extends j{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},te=class extends j{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return be([...n,...i])}},Fe=class extends v{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return at(n,i)}},_e=class extends v{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(at(n,i))}},Ue=class extends v{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ct(n,i)}},Le=class extends v{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(ct(n,i))}},X=class extends v{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return l(Re(n[0],i))}},Me=class extends v{constructor(e,t){super("and",e,t)}eval(e,t){let n=N(this.left.eval(e,t),"boolean"),i=N(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?l(!0):n?.value===!1||i?.value===!1?l(!1):[]}},Be=class extends v{constructor(e,t){super("or",e,t)}eval(e,t){let n=N(this.left.eval(e,t),"boolean"),i=N(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?l(!1):n?.value||i?.value?l(!0):[]}},qe=class extends v{constructor(e,t){super("xor",e,t)}eval(e,t){let n=N(this.left.eval(e,t),"boolean"),i=N(this.right.eval(e,t),"boolean");return!n||!i?[]:l(n.value!==i.value)}},$e=class extends v{constructor(e,t){super("implies",e,t)}eval(e,t){let n=N(this.left.eval(e,t),"boolean"),i=N(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?l(!0):!n||!i?[]:l(!1)}},q=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(", ")})`}},Z=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var Po=["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()===" "&&Ao(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
|
|
3
|
-
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function Ao(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Po.includes(r.value)))}var je=["true","false"],Qe=["!=","!~","<=",">=","{}","->"];function dn(r){return new K(r,je,Qe).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},Co={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},wo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:m.Indexer},Io={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 q(e.name,t)},precedence:m.FunctionCall};function ko(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 le(){return new ye().registerPrefix("String",{parse:(r,e)=>new D({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new D({type:c.dateTime,value:ue(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new D({type:c.Quantity,value:ko(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new D({type:c.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new D({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new D({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new B(e.value)}).registerPrefix("{}",{parse:()=>new ke}).registerPrefix("(",Co).registerInfix("[",wo).registerInfix("(",Io).prefix("+",m.UnaryAdd,(r,e)=>new Oe("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new R("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new H(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new R("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new R("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new R("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new R("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new te(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new Fe(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new _e(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Ue(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new Le(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new R("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new R("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new R(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new R(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new Ve(r,t)).infixLeft("and",m.And,(r,e,t)=>new Me(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new De(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new R("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Ne(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new R("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Be(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new qe(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new $e(r,t))}var Oo=le();function yt(r){return new Ie(r,Oo.construct(dn(r)).consumeAndParse())}function re(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]=T(t[n]))}return de(r,t).map(n=>n.value)}function de(r,e,t){let n=t??{};return yt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var ir=(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))(ir||{});function or(r,e){let t=O.types[r]?.searchParamsDetails?.[e.code];return t||(t=Do(r,e)),t}function Vo(r,e,t){let n=O.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Do(r,e){let t=e.code,n=_o(t),i=sr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=He(a);u.length===1&&u[0]instanceof v?o.propertyTypes.add("boolean"):pn(o,He(a),r,1)}let s={columnName:n,type:Uo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Vo(r,t,s),s}function pn(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof q){No(r,i);return}let o=i.toString(),s=Pe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof Z&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let d of s.type)r.propertyTypes.add(d.code);return}for(let d of s.type){let f=d.code;Fo(f)&&(f=s.type[0].code),pn(r,e,f,u)}}function No(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Fo(r){return r==="Element"||r==="BackboneElement"}function _o(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function Uo(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 sr(r,e){let t=[],n=yt(e);return nr(r,n.child,t),t}function Lo(r,e){let t=sr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function nr(r,e,t){e instanceof te?(nr(r,e.left,t),nr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function He(r){if(r instanceof Y||r instanceof Z)return[He(r.left),r].flat();if(r instanceof v)return[r];if(r instanceof H)return[He(r.left),He(r.right)].flat();if(r instanceof q){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var Mo=20,hn=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(hn||{}),yn={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"},cr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Bo(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 gn(r,t)}function ur(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return gn(e,r.searchParams.entries())}function qo(r){return ur(new URL(r,"https://example.com/"))}function gt(r){return ur(new URL(r,"https://api.medplum.com/"))}function gn(r,e){let t={resourceType:r};for(let[n,i]of e)$o(t,n,i);return t}function $o(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(".")){ar(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":jo(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=fn(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=fn(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=O.types[r.resourceType]?.searchParams?.[n];s?ar(r,xn(s,i,t)):ar(r,Ko(n,i,t))}}}function jo(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function xn(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Qo(r,t);case"reference":case"string":case"token":case"uri":return Ho(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Qo(r,e){let{operator:t,value:n}=Wo(e);return{code:r.code,operator:t,value:n}}function Ho(r,e,t){return{code:r.code,operator:Go(e),value:t}}function Ko(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in cr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Wo(r){let e=r.substring(0,2),t=cr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Go(r){return yn[r]??"eq"}function fn(r){let e=r.split(":");if(e.includes("*"))throw new p(C("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(C(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new p(C(`Invalid include value '${r}'`))}function ar(r,e){r.filters?r.filters.push(e):r.filters=[e]}var zo=/{{([^{}]+)}}/g;function Jo(r,e){return r=r.replaceAll(zo,(t,n)=>{let i=de(n,[],e);return i.length!==1?"":rr(i[0])}),gt(r)}function Yo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Xo(t))),r.sortRules&&r.sortRules.length>0&&e.push(Zo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(mn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(mn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Xo(r){let e=r.operator in yn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in cr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Zo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function mn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function dr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!es(r,e,t))return!1}return!0}function es(r,e,t){let n=O.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=re(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return ts(r,t,n);case"string":case"uri":return Tn(r,t,n);case"token":return rs(r,t,n);case"date":return is(r,t,n);default:return!1}}function ts(r,e,t){let n=re(t.expression,r),i=xt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(u=>u?.endsWith("/"+s))),a)return!i}return i}function rs(r,e,t){return or(r.resourceType,t).type==="BOOLEAN"?ns(r,e,t):Tn(r,e,t,!0)}function ns(r,e,t){let n=re(t.expression,r),i=e.value==="true",o=n.includes(i);return xt(e.operator)?!o:o}function Tn(r,e,t,n){let i=re(t.expression,r),o=e.value.split(","),s=xt(e.operator);for(let a of i)for(let u of o)if(lr(a,e.operator,u,n))return!s;return s}function lr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return lr(r,e,o,!1)&&(!s||lr(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 is(r,e,t){let n=re(t.expression,r),i=e.value.split(","),o=xt(e.operator);for(let s of n)for(let a of i)if(os(s,e.operator,a))return!o;return o}function os(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function xt(r){return r==="ne"||r==="not"}var ss={resourceType:"*"},vn=["DomainConfiguration","JsonWebKey","Login"],Sn=["PasswordChangeRequest","Project","ProjectMembership","User"],En=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(En||{}),as=["read","vread","history","history-instance"];function cs(r,e){if(r.resource){for(let t of r.resource)if(pr(t.resourceType,e))return!0}return!1}function bn(r,e){if(vn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(pr(t.resourceType,e)&&!t.readonly)return!0}return!1}function us(r,e){let t=e.resourceType;return bn(r,t)?Rn(r,e,!1):!1}function Rn(r,e,t){if(r.resource){for(let n of r.resource)if(Pn(e,t?"read":"update",n))return!0}return!1}function ls(r,e,t){if(!t)return ss;if(t.resource){for(let n of t.resource)if(Pn(r,e,n))return n}}function Pn(r,e,t){let n=r.resourceType;return!(!pr(t.resourceType,n)||t.readonly&&!as.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!dr(r,gt(t.criteria)))}function pr(r,e){return r===e||r==="*"&&!Sn.includes(e)}function fr(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 mr(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 Tt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Dt(r.buffer)}async function hr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function pe(){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 An(r){let e={};r=rt(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=pe(),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)=>ds(i,o,e),2);return Cn(JSON.parse(n))}function ds(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 Cn(r){let e=fs(r),{sorted:t,cycles:n}=ps(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],d={...u,request:{...u.request,method:"PUT"}};o.push(d)}return{...r,entry:o}}function ps(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 wn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(se(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else wn(n,e)}}function fs(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&&wn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ms(r){r=rt(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=pe());return An(e)}var Ke=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 w={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 fe=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},We=class{constructor(){this.emitter=new fe}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var vt={"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"},kn=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],St=["DiagnosticReport-update"];function yr(r){return St.includes(r)}function gr(r){if(St.includes(r))throw new p(h(`'context.version' is required for '${r}'.`))}var On={"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 Vn(r){return kn.includes(r)}function xr(r){return!!r.endpoint}function Et(r){if(!ze(r))throw new p(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return xr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function ze(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(!vt[o])return!1;return!(xr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function In(r,e,t,n){if(typeof e!="object")throw new p(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new p(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Vn(e.resourceType))throw new p(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function hs(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)In(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)In(r,s,t,n)}}function ys(r,e){let t=new Map,n=On[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));hs(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function bt(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(h("Must provide a topic."));if(!vt[e])throw new p(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(vt).join(", ")}`));if(typeof t!="object")throw new p(h("context must be a context object or array of context objects."));if(St.includes(e)&&!n)throw new p(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return ys(e,i),{timestamp:new Date().toISOString(),id:pe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ge=class extends We{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new p(h("Subscription request should contain an endpoint."));if(!ze(t))throw new p(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function gs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=fr(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 Tr(r){return r.split(".").length===3}function Rt(r){let[e,t,n]=r.split(".");return gs(t)}function vr(r){try{return typeof Rt(r).login_id=="string"}catch{return!1}}var xs,I=class{constructor(e){this[xs]="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)}};xs=Symbol.toStringTag;var Je=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Pt)}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?Ot(t):void 0)}},Pt=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]}};var Ts="2.2.1-545c34fc",Mn=w.FHIR_JSON+", */*; q=0.1",vs="https://api.medplum.com/",Ss=1e3,Es=6e4,Dn="Binary/",Nn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Bn=(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))(Bn||{}),qn=(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))(qn||{}),$n=(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))($n||{}),jn=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(jn||{}),Sr=class extends fe{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??bs(),this.storage=t?.storage??new Je,this.createPdfImpl=t?.createPdf,this.baseUrl=_n(t?.baseUrl??vs),this.fhirBaseUrl=_n(At(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=At(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=At(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=At(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??Es,this.cacheTime>0?this.requestCache=new Ke(t?.resourceCacheSize??Ss):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new I(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,w.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope","openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:d}=o;if(!d)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",d),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new I((async()=>{let d=await this.get(o,i);if(d.entry)for(let f of d.entry)this.cacheResource(f.resource);return d})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new I(this.search(t,o.searchParams,i).then(d=>d.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new I(this.search(t,n,i).then(Ln));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(d=>d.relation==="next");if(!a.entry?.length&&!u)break;yield Ln(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Nn;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 I(Promise.reject(new Error("Missing reference")));if(i==="system")return new I(Promise.resolve(Nn));let[o,s]=i.split("/");return!o||!s?new I(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Zt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new I((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 Ao(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Po.includes(r.value)))}var je=["true","false"],Qe=["!=","!~","<=",">=","{}","->"];function dn(r){return new K(r,je,Qe).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},Co={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},wo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:m.Indexer},Io={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 q(e.name,t)},precedence:m.FunctionCall};function ko(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 le(){return new ye().registerPrefix("String",{parse:(r,e)=>new D({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new D({type:c.dateTime,value:ue(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new D({type:c.Quantity,value:ko(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new D({type:c.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new D({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new D({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new B(e.value)}).registerPrefix("{}",{parse:()=>new ke}).registerPrefix("(",Co).registerInfix("[",wo).registerInfix("(",Io).prefix("+",m.UnaryAdd,(r,e)=>new Oe("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new R("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new H(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new R("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new R("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new R("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new R("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new te(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new Fe(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new _e(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Ue(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new Le(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new R("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new R("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new R(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new R(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new Ve(r,t)).infixLeft("and",m.And,(r,e,t)=>new Me(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new De(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new R("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Ne(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new R("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Be(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new qe(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new $e(r,t))}var Oo=le();function yt(r){return new Ie(r,Oo.construct(dn(r)).consumeAndParse())}function re(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]=T(t[n]))}return de(r,t).map(n=>n.value)}function de(r,e,t){let n=t??{};return yt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var ir=(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))(ir||{});function or(r,e){let t=O.types[r]?.searchParamsDetails?.[e.code];return t||(t=Do(r,e)),t}function Vo(r,e,t){let n=O.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Do(r,e){let t=e.code,n=_o(t),i=sr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=He(a);u.length===1&&u[0]instanceof v?o.propertyTypes.add("boolean"):pn(o,He(a),r,1)}let s={columnName:n,type:Uo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Vo(r,t,s),s}function pn(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof q){No(r,i);return}let o=i.toString(),s=Pe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof Z&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let d of s.type)r.propertyTypes.add(d.code);return}for(let d of s.type){let f=d.code;Fo(f)&&(f=s.type[0].code),pn(r,e,f,u)}}function No(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Fo(r){return r==="Element"||r==="BackboneElement"}function _o(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function Uo(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 sr(r,e){let t=[],n=yt(e);return nr(r,n.child,t),t}function Lo(r,e){let t=sr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function nr(r,e,t){e instanceof te?(nr(r,e.left,t),nr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function He(r){if(r instanceof Y||r instanceof Z)return[He(r.left),r].flat();if(r instanceof v)return[r];if(r instanceof H)return[He(r.left),He(r.right)].flat();if(r instanceof q){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var Mo=20,hn=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(hn||{}),yn={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"},cr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Bo(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 gn(r,t)}function ur(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return gn(e,r.searchParams.entries())}function qo(r){return ur(new URL(r,"https://example.com/"))}function gt(r){return ur(new URL(r,"https://api.medplum.com/"))}function gn(r,e){let t={resourceType:r};for(let[n,i]of e)$o(t,n,i);return t}function $o(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(".")){ar(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":jo(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=fn(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=fn(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=O.types[r.resourceType]?.searchParams?.[n];s?ar(r,xn(s,i,t)):ar(r,Ko(n,i,t))}}}function jo(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function xn(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Qo(r,t);case"reference":case"string":case"token":case"uri":return Ho(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Qo(r,e){let{operator:t,value:n}=Wo(e);return{code:r.code,operator:t,value:n}}function Ho(r,e,t){return{code:r.code,operator:Go(e),value:t}}function Ko(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in cr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Wo(r){let e=r.substring(0,2),t=cr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Go(r){return yn[r]??"eq"}function fn(r){let e=r.split(":");if(e.includes("*"))throw new p(C("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(C(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new p(C(`Invalid include value '${r}'`))}function ar(r,e){r.filters?r.filters.push(e):r.filters=[e]}var zo=/{{([^{}]+)}}/g;function Jo(r,e){return r=r.replaceAll(zo,(t,n)=>{let i=de(n,[],e);return i.length!==1?"":rr(i[0])}),gt(r)}function Yo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Xo(t))),r.sortRules&&r.sortRules.length>0&&e.push(Zo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(mn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(mn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Xo(r){let e=r.operator in yn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in cr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Zo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function mn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function dr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!es(r,e,t))return!1}return!0}function es(r,e,t){let n=O.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=re(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return ts(r,t,n);case"string":case"uri":return Tn(r,t,n);case"token":return rs(r,t,n);case"date":return is(r,t,n);default:return!1}}function ts(r,e,t){let n=re(t.expression,r),i=xt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(u=>u?.endsWith("/"+s))),a)return!i}return i}function rs(r,e,t){return or(r.resourceType,t).type==="BOOLEAN"?ns(r,e,t):Tn(r,e,t,!0)}function ns(r,e,t){let n=re(t.expression,r),i=e.value==="true",o=n.includes(i);return xt(e.operator)?!o:o}function Tn(r,e,t,n){let i=re(t.expression,r),o=e.value.split(","),s=xt(e.operator);for(let a of i)for(let u of o)if(lr(a,e.operator,u,n))return!s;return s}function lr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return lr(r,e,o,!1)&&(!s||lr(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 is(r,e,t){let n=re(t.expression,r),i=e.value.split(","),o=xt(e.operator);for(let s of n)for(let a of i)if(os(s,e.operator,a))return!o;return o}function os(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function xt(r){return r==="ne"||r==="not"}var ss={resourceType:"*"},vn=["DomainConfiguration","JsonWebKey","Login"],Sn=["PasswordChangeRequest","Project","ProjectMembership","User"],En=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(En||{}),as=["read","vread","history","history-instance"];function cs(r,e){if(r.resource){for(let t of r.resource)if(pr(t.resourceType,e))return!0}return!1}function bn(r,e){if(vn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(pr(t.resourceType,e)&&!t.readonly)return!0}return!1}function us(r,e){let t=e.resourceType;return bn(r,t)?Rn(r,e,!1):!1}function Rn(r,e,t){if(r.resource){for(let n of r.resource)if(Pn(e,t?"read":"update",n))return!0}return!1}function ls(r,e,t){if(!t)return ss;if(t.resource){for(let n of t.resource)if(Pn(r,e,n))return n}}function Pn(r,e,t){let n=r.resourceType;return!(!pr(t.resourceType,n)||t.readonly&&!as.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!dr(r,gt(t.criteria)))}function pr(r,e){return r===e||r==="*"&&!Sn.includes(e)}function fr(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 mr(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 Tt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Dt(r.buffer)}async function hr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function pe(){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 An(r){let e={};r=rt(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=pe(),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)=>ds(i,o,e),2);return Cn(JSON.parse(n))}function ds(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 Cn(r){let e=fs(r),{sorted:t,cycles:n}=ps(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],d={...u,request:{...u.request,method:"PUT"}};o.push(d)}return{...r,entry:o}}function ps(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 wn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(se(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else wn(n,e)}}function fs(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&&wn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ms(r){r=rt(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=pe());return An(e)}var Ke=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 w={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 fe=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},We=class{constructor(){this.emitter=new fe}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var vt={"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"},kn=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],St=["DiagnosticReport-update"];function yr(r){return St.includes(r)}function gr(r){if(St.includes(r))throw new p(h(`'context.version' is required for '${r}'.`))}var On={"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 Vn(r){return kn.includes(r)}function xr(r){return!!r.endpoint}function Et(r){if(!ze(r))throw new p(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return xr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function ze(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(!vt[o])return!1;return!(xr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function In(r,e,t,n){if(typeof e!="object")throw new p(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new p(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Vn(e.resourceType))throw new p(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function hs(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)In(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)In(r,s,t,n)}}function ys(r,e){let t=new Map,n=On[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));hs(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function bt(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(h("Must provide a topic."));if(!vt[e])throw new p(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(vt).join(", ")}`));if(typeof t!="object")throw new p(h("context must be a context object or array of context objects."));if(St.includes(e)&&!n)throw new p(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return ys(e,i),{timestamp:new Date().toISOString(),id:pe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ge=class extends We{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new p(h("Subscription request should contain an endpoint."));if(!ze(t))throw new p(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function gs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=fr(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 Tr(r){return r.split(".").length===3}function Rt(r){let[e,t,n]=r.split(".");return gs(t)}function vr(r){try{return typeof Rt(r).login_id=="string"}catch{return!1}}var xs,I=class{constructor(e){this[xs]="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)}};xs=Symbol.toStringTag;var Je=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Pt)}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?Ot(t):void 0)}},Pt=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]}};var Ts="2.2.2-e9617926",Mn=w.FHIR_JSON+", */*; q=0.1",vs="https://api.medplum.com/",Ss=1e3,Es=6e4,Dn="Binary/",Nn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Bn=(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))(Bn||{}),qn=(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))(qn||{}),$n=(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))($n||{}),jn=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(jn||{}),Sr=class extends fe{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??bs(),this.storage=t?.storage??new Je,this.createPdfImpl=t?.createPdf,this.baseUrl=_n(t?.baseUrl??vs),this.fhirBaseUrl=_n(At(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=At(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=At(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=At(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??Es,this.cacheTime>0?this.requestCache=new Ke(t?.resourceCacheSize??Ss):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new I(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,w.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope","openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:d}=o;if(!d)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",d),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new I((async()=>{let d=await this.get(o,i);if(d.entry)for(let f of d.entry)this.cacheResource(f.resource);return d})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new I(this.search(t,o.searchParams,i).then(d=>d.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new I(this.search(t,n,i).then(Ln));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(d=>d.relation==="next");if(!a.entry?.length&&!u)break;yield Ln(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Nn;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 I(Promise.reject(new Error("Missing reference")));if(i==="system")return new I(Promise.resolve(Nn));let[o,s]=i.split("/");return!o||!s?new I(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Zt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new I((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var Te=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},j=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},ve=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 it(e,this.prefixParselets,this.infixParselets)}},it=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}" at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};function z(r){let e=ce(r),t=hn(r);return t===e?{reference:e}:{reference:e,display:t}}function ce(r){return ue(r)?r.reference:`${r.resourceType}/${r.id}`}function Gt(r){if(r)return ue(r)?r.reference.split("/")[1]:r.id}function wo(r){if(r?.reference===void 0)return;let[e,t]=r.reference.split("/");if(!(e===""||t===""||t===void 0))return[e,t]}function mn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function hn(r){if(mn(r)){let e=yn(r);if(e)return e}if(r.resourceType==="Device"){let e=gn(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:ce(r)}function yn(r){let e=r.name;if(e&&e.length>0)return Ae(e[0])}function gn(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Io(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Wt(t);if(n)return n}else return Wt(e)}function Wt(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function ko(r){return r?new Date(r):void 0}function Se(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let P=a*12+u-(i*12+o);l<s&&P--;let M=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:P,days:M}}function Oo(r,e){let{years:t,months:n,days:i}=Se(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 Vo(r){let e={};return zt(r.item,e),e}function zt(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),zt(t.item,e)}function Do(r){let e={};return Jt(r.item,e),e}function Jt(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Jt(t.item,e)}function No(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 Fo(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 _o(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 Uo(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 Yt(r,e){return JSON.stringify(r,xn,e?2:void 0)}function xn(r,e){return!Tn(r)&&E(e)?void 0:e}function Tn(r){return!!/\d+$/.exec(r)}function E(r){if(r==null)return!0;let e=typeof r;return e==="string"&&r===""||e==="object"&&Object.keys(r).length===0}function Ee(r,e,t){return r===e||E(r)&&E(e)?!0:E(r)||E(e)?!1:Array.isArray(r)&&Array.isArray(e)?vn(r,e):Array.isArray(r)||Array.isArray(e)?!1:Q(r)&&Q(e)?Sn(r,e,t):(Q(r)||Q(e),!1)}function vn(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Ee(r[t],e[t]))return!1;return!0}function Sn(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(!Ee(o,s,i))return!1}return!0}function be(r,e){return E(r)?!0:E(e)?!1:Array.isArray(r)&&Array.isArray(e)?En(r,e):Array.isArray(r)||Array.isArray(e)?!1:Q(r)&&Q(e)?bn(r,e):Q(r)||Q(e)?!1:r===e}function En(r,e){return e.every(t=>r.some(n=>be(n,t)))}function bn(r,e){return Object.entries(e).every(([t,n])=>t in r&&be(r[t],n))}function st(r){return JSON.parse(JSON.stringify(r))}function Lo(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function Q(r){return r!==null&&typeof r=="object"}function Xt(r){return r.every(e=>typeof e=="string")}var Zt=[];for(let r=0;r<256;r++)Zt.push(r.toString(16).padStart(2,"0"));function er(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Zt[e[n]];return t.join("")}function tr(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 A(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Re(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function ot(r,e){return r.coding?.find(t=>t.system===e)?.code}function Mo(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 Bo(r,e,t,n){return r.qualifiedInterval?.find(i=>rr(i,e)&&An(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function qo(r,e,t){return r.qualifiedInterval?.find(n=>rr(n,e)&&t.includes(n.condition))}function rr(r,e){return Rn(r,e)&&Pn(r,e)}function Rn(r,e){return!r.gender||r.gender===e.gender}function Pn(r,e){return!r.age||nr(Se(e.birthDate).years,r.age)}function An(r,e,t){return!!r.range&&nr(e,r.range,t)}function nr(r,e,t){return(e.low?.value===void 0||wn(r,e.low.value,t))&&(e.high?.value===void 0||Cn(r,e.high.value,t))}function $o(r,e){return parseFloat(r.toFixed(e))}function jo(r,e,t){return N(r,t)===N(e,t)}function Qo(r,e,t){return N(r,t)<N(e,t)}function Ho(r,e,t){return N(r,t)>N(e,t)}function Cn(r,e,t){return N(r,t)<=N(e,t)}function wn(r,e,t){return N(r,t)>=N(e,t)}function N(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Ko(r,e,t){return r.find(n=>typeof e=="string"?ot(n.code||{},t)===e:ot(n.code||{},t)===ot(e,t))}function Pe(r){if(r)return Array.isArray(r)?r:[r]}var at=r=>new Promise(e=>{setTimeout(e,r)});function Wo(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 Go(){let r,e;return{promise:new Promise((n,i)=>{r=n,e=i}),resolve:r,reject:e}}function Yo(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 Ae(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=te(r.text);if(n)return n}return t.join(" ").trim()}function Xo(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Zo(r){return te(r.family)??""}function ut(r){return r instanceof Date&&!isNaN(r.getTime())}function es(r,e,t){if(!r)return"";let n=new Date(r);return ut(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function In(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return ut(n)?n.toLocaleTimeString(e,t):""}function ct(r,e,t){if(!r)return"";let n=new Date(r);return ut(n)?n.toLocaleString(e,t):""}function ts(r,e,t){return!r||!r.start&&!r.end?"":ct(r.start,e,t)+" - "+ct(r.end,e,t)}var kn={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},On={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Vn={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function rs(r){if(!r)return"";let e=[];return Dn(e,r.repeat),r.event&&e.push(r.event.map(t=>ct(t)).join(", ")),A(e.join(" ").trim())}function Dn(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(kn[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+On[i]):r.push("per "+n+" "+Vn[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(A).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>In(o)).join(", "))}function ns(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=Ln(n.value,e),`> ${J(n,e)}`):`>= ${J(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Un(i.value,e),`< ${J(i,e)}`):`<= ${J(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${J(n,e)} - ${J(i,e)}`)}function J(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function is(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Nn(r){if(!r)return"";let e=te(r.text);return e||(r.coding?r.coding.map(t=>Fn(t)).join(", "):"")}function Fn(r){return te(r?.display)??te(r?.code)??""}function _n(r){if(!r)return"";if("component"in r)return r.component.map(t=>_n(t)).join(" / ");if(r.valueQuantity)return J(r.valueQuantity);if(r.valueCodeableConcept)return Nn(r.valueCodeableConcept);let e=te(r.valueString);return e||""}function te(r){return typeof r=="string"?r:void 0}function Un(r,e,t=1){return(ir(r,e)+t)*Math.pow(10,-e)}function Ln(r,e,t=1){return(ir(r,e)-t)*Math.pow(10,-e)}function ir(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Mn={"http://hl7.org/fhirpath/System.String":"string"};function ss(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:Mn[t.code]??t.code})),e}function Bn(r){let e=r.max&&r.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:r.max;return{path:"",description:"",type:r.type??[],min:r.min??0,max:e??1,isArray:!!e&&e>1,constraints:[]}}function or(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,Bn(o)])),constraints:[],innerTypes:[]};return e}var sr={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity"}]},maxDosePerLifetime:{type:[{code:"Quantity"}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity"}]},high:{type:[{code:"Quantity"}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity"}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function d(r){return[{type:c.boolean,value:r}]}function T(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:b(r)?{type:c.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function B(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 O(r,e){if(!r.value)return;let t=Ie(r.type,e);return t?$n(r,e,t):jn(r,e)}function $n(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let a of n){let u=e.replace("[x]","")+A(a.code);if(u in r.value){i=r.value[u],o=a.code;break}}let s=r.value["_"+e];if(s&&(Array.isArray(i)?i=i.map((a,u)=>s[u]?lr(a??{},s[u]):a):i=lr(i??{},s)),!E(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>ar(a,o)):ar(i,o)}function ar(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function jn(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+A(i);if(o in t){n=t[o];break}}if(!E(n))return Array.isArray(n)?n.map(T):T(n)}function Ce(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(B(dr(t,i))){n=!0;break}n||e.push(t)}return e}function lt(r){return d(!B(r))}function dt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>B(dr(t,e[n]))))}function dr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):b(t)&&b(n)?d(pr(t,n)):d(typeof t=="object"&&typeof n=="object"?ft(r,e):t===n)}function pt(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(cr),e.sort(cr),d(r.every((t,n)=>B(Qn(t,e[n])))))}function Qn(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?d(Math.abs(s-a)<.01):b(s)&&b(a)?d(pr(s,a)):d(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?ft({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function cr(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 we(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 Hn(t);case"Quantity":return b(t);default:return typeof t=="object"&&t?.resourceType===e}}function Hn(r){return!!(r&&typeof r=="object"&&"start"in r)}function b(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function pr(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 ft(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(ur(o)&&ur(s)){if(!ft(o,s))return!1}else if(o!==s)return!1}return!0}function ur(r){return r!==null&&typeof r=="object"}function lr(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}var mt="ok",ke="created",ht="gone",yt="not-modified",gt="not-found",fr="unauthorized",mr="forbidden",hr="too-many-requests",Oe="accepted",fs={resourceType:"OperationOutcome",id:mt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ms={resourceType:"OperationOutcome",id:ke,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},hs={resourceType:"OperationOutcome",id:yt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},yr={resourceType:"OperationOutcome",id:gt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},ys={resourceType:"OperationOutcome",id:fr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},gs={resourceType:"OperationOutcome",id:mr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},xs={resourceType:"OperationOutcome",id:ht,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ts={resourceType:"OperationOutcome",id:hr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function vs(r){return{resourceType:"OperationOutcome",id:Oe,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function C(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 Ss(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Ve(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function xt(r){return r.id===mt||r.id===ke||r.id===yt||r.id===Oe}function Es(r){return r.id===ke}function bs(r){return r.id===Oe}function Rs(r){return r.id===gt}function Ps(r){return r.id===ht}function As(r){switch(r.id){case mt:return 200;case ke:return 201;case Oe:return 202;case yt:return 304;case fr:return 401;case mr:return 403;case gt:return 404;case ht:return 410;case hr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Cs(r,e){if(!xt(r)||e===void 0)throw new p(r)}var p=class extends Error{constructor(t,n){super(gr(t));this.outcome=t,this.cause=n}};function De(r){return r instanceof p?r.outcome:Ve(r)?r:C(Kn(r))}function Kn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:Ve(r)?gr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function gr(r){let e=r.issue?.map(Wn)??[];return e.length>0?e.join("; "):"Unknown error"}function Wn(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 Tt(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function y(r,e){return Tt("structure",e,r)}function xr(r,e){return Tt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Tr(r,e,t,n){return Tt("processing",e,r,{...n,error:t})}function bt(r){return new St(r).parse()}var H=or(sr);function br(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)Gn(t)}function Gn(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=bt(r);H[r.name]=e;for(let t of e.innerTypes)t.parentType=e,H[t.name]=t}function Rr(){return H}function Pr(r){return!!H[r]}function Ar(r){return H[r]}function ne(r){let e=H[r];if(!e)throw new p(C("Unknown data type: "+r));return e}function Cr(r){let e=H[r];return e&&Rt(e)}var St=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,url:e.url,kind:e.kind,description:Xn(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=vt(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[vt(e,n.path)]=t;break}n=n.parent}if(!n){let i=vt(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&&!re(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Et(e),description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:re(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Yn(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&&!re(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!re(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!re(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!!(re(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??"",type:e.type?.map(t=>({code:t.code??"",targetProfile:t.targetProfile})),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinition(e){let t=Sr(e.max),n=e.base?.max?Sr(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:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?Et(e):o.code??"",targetProfile:o.targetProfile})),fixed:Er(O(i,"fixed")),pattern:Er(O(i,"pattern")),binding:e.binding}}};function _s(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=H[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+A(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!zn.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(vr):[vr]},r}var vr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},zn=["resourceType","id","meta"];function Sr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function vt(r,e=""){return Jn(r.path,e)}function Jn(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function re(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Er(r){return Array.isArray(r)&&r.length>0?r[0]:E(r)?void 0:r}function Yn(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 Xn(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 js(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Pt(t)}}function Pt(r){for(let e of r.base??[]){let t=V.types[e];t||(t={searchParamsDetails:{}},V.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function Et(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Zn((r.base?.path??r.path)?.split(".")):e}function Zn(r){return r.length===1?r[0]:r.map(A).join("")}function Rt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Qs(){return Object.values(Rr()).filter(Rt).map(r=>r.name)}function Hs(r){return V.types[r]?.searchParams}function Ks(r,e){return V.types[r]?.searchParams?.[e]}function Ws(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(ti).join(" ").replace("_"," ").replace(/\s+/g," ")}var ei=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function ti(r){let e=r.toUpperCase();return ei.has(e)?e:e.charAt(0)+r.slice(1)}function Ie(r,e){let t=Ar(r);if(t)return t.elements[e]??t.elements[e+"[x]"]}function _(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ue(r){return!!(r&&typeof r=="object"&&"reference"in r)}var V={types:{}};function Ir(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 wr(r.value);case c.CodeableConcept:return r.value.coding?.map(wr).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ae(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)?z(r.value).reference:JSON.stringify(r)}}function wr(r){return r?`${r.system??""}|${r.code}`:""}function ie(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 le=()=>[],S={empty:(r,e)=>d(e.length===0),exists:(r,e,t)=>t?d(e.filter(n=>B(t.eval(r,[n]))).length>0):d(e.length>0),all:(r,e,t)=>d(e.every(n=>B(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:le,supersetOf:le,count:(r,e)=>[{type:c.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===S.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>B(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:le,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 Ce([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[T(!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 B(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(S.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(S.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:ie(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(S.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:ie(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(S.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(S.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return b(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(S.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return t==null?[]:b(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(S.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:ie("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(S.toTime(r,e).length===1),indexOf:(r,e,t)=>w((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>w((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)=>w((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>w((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>w((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>w(t=>t.toUpperCase(),r,e),lower:(r,e)=>w(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>w((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>w((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>w((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>w(t=>t.length,r,e),toChars:(r,e)=>w(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>U(Math.abs,r,e),ceiling:(r,e)=>U(Math.ceil,r,e),exp:(r,e)=>U(Math.exp,r,e),floor:(r,e)=>U(Math.floor,r,e),ln:(r,e)=>U(Math.log,r,e),log:(r,e,t)=>U((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>U(Math.pow,r,e,t),round:(r,e)=>U(Math.round,r,e),sqrt:(r,e)=>U(Math.sqrt,r,e),truncate:(r,e)=>U(t=>t|0,r,e),children:le,descendants:le,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=S.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=S.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Se(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof q?n=t.name:t instanceof K&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:we(i,n)})):[]},not:(r,e)=>S.toBoolean(r,e).map(t=>({type:c.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return T(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 w(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=L(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(T):[T(o)]}function U(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=L(t,1),o=b(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function L(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Ne=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},D=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},q=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return _(t)&&t.resourceType===this.name?e:O(e,this.name)}toString(){return this.name}},Fe=class{eval(){return[]}toString(){return"{}"}},_e=class extends Te{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},Y=class extends j{constructor(e,t){super("as",e,t)}eval(e,t){return S.ofType(e,this.left.eval(e,t),this.right)}},v=class extends j{},R=class extends v{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=b(s)?s.value:s,l=b(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?d(f):b(s)?[{type:c.Quantity,value:{...s,value:f}}]:[T(f)]}},Ue=class extends j{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:c.string,value:o.map(s=>s.value).join("")}]:o}},Le=class extends v{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},Me=class extends v{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?d(i.some(o=>o.value===n.value)):[]}},K=class extends j{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},oe=class extends j{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ce([...n,...i])}},Be=class extends v{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return dt(n,i)}},qe=class extends v{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return lt(dt(n,i))}},$e=class extends v{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return pt(n,i)}},je=class extends v{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return lt(pt(n,i))}},X=class extends v{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(we(n[0],i))}},Qe=class extends v{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?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},He=class extends v{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?d(!1):n?.value||i?.value?d(!0):[]}},Ke=class extends v{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?[]:d(n.value!==i.value)}},We=class extends v{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?d(!0):!n||!i?[]:d(!1)}},$=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=S[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},Z=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var ri=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],W=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()===" "&&ni(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 ni(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&ri.includes(r.value)))}var de=["true","false"],pe=["!=","!~","<=",">=","{}","->"];function kr(r){return new W(r,de,pe).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},ii={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},oi={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:m.Indexer},si={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:m.FunctionCall};function ai(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 fe(){return new ve().registerPrefix("String",{parse:(r,e)=>new D({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new D({type:c.dateTime,value:ie(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new D({type:c.Quantity,value:ai(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new D({type:c.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new D({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new D({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new Fe}).registerPrefix("(",ii).registerInfix("[",oi).registerInfix("(",si).prefix("+",m.UnaryAdd,(r,e)=>new _e("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new R("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new R("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new R("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new R("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new R("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new oe(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new Be(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new qe(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new $e(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new je(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new R("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new R("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new R(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new R(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new Ue(r,t)).infixLeft("and",m.And,(r,e,t)=>new Qe(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Le(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new R("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Me(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new R("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new He(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Ke(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new We(r,t))}var ci=fe();function At(r){return new Ne(r,ci.construct(kr(r)).consumeAndParse())}function se(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]=T(t[n]))}return me(r,t).map(n=>n.value)}function me(r,e,t){let n=t??{};return At(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Or=(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))(Or||{});function Vr(r,e){let t=V.types[r]?.searchParamsDetails?.[e.code];return t||(t=li(r,e)),t}function ui(r,e,t){let n=V.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function li(r,e){let t=e.code,n=fi(t),i=Nr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=he(a);u.length===1&&u[0]instanceof v?o.propertyTypes.add("boolean"):Dr(o,he(a),r,1)}let s={columnName:n,type:mi(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ui(r,t,s),s}function Dr(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){di(r,i);return}let o=i.toString(),s=Ie(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof Z&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;pi(f)&&(f=s.type[0].code),Dr(r,e,f,u)}}function di(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function pi(r){return r==="Element"||r==="BackboneElement"}function fi(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function mi(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 Nr(r,e){let t=[],n=At(e);return Ct(r,n.child,t),t}function Oa(r,e){let t=Nr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Ct(r,e,t){e instanceof oe?(Ct(r,e.left,t),Ct(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function he(r){if(r instanceof Y||r instanceof Z)return[he(r.left),r].flat();if(r instanceof v)return[r];if(r instanceof K)return[he(r.left),he(r.right)].flat();if(r instanceof $){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var Ua=20,hi=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(hi||{}),Ur={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"},It={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function La(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 Mr(r,t)}function Lr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Mr(e,r.searchParams.entries())}function Ma(r){return Lr(new URL(r,"https://example.com/"))}function kt(r){return Lr(new URL(r,"https://api.medplum.com/"))}function Mr(r,e){let t={resourceType:r};for(let[n,i]of e)yi(t,n,i);return t}function yi(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(".")){wt(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":gi(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=Fr(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=Fr(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=V.types[r.resourceType]?.searchParams?.[n];s?wt(r,xi(s,i,t)):wt(r,Si(n,i,t))}}}function gi(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 xi(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Ti(r,t);case"reference":case"string":case"token":case"uri":return vi(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Ti(r,e){let{operator:t,value:n}=Ei(e);return{code:r.code,operator:t,value:n}}function vi(r,e,t){return{code:r.code,operator:bi(e),value:t}}function Si(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in It&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ei(r){let e=r.substring(0,2),t=It[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function bi(r){return Ur[r]??"eq"}function Fr(r){let e=r.split(":");if(e.includes("*"))throw new p(C("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(C(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new p(C(`Invalid include value '${r}'`))}function wt(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Ri=/{{([^{}]+)}}/g;function Ba(r,e){return r=r.replaceAll(Ri,(t,n)=>{let i=me(n,[],e);return i.length!==1?"":Ir(i[0])}),kt(r)}function qa(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Pi(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ai(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(_r("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(_r("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Pi(r){let e=r.operator in Ur?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in It?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ai(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function _r(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Br(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Ci(r,e,t))return!1}return!0}function Ci(r,e,t){let n=V.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=se(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return wi(r,t,n);case"string":case"uri":return qr(r,t,n);case"token":return Ii(r,t,n);case"date":return Oi(r,t,n);default:return!1}}function wi(r,e,t){let n=se(t.expression,r),i=Ge(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 Ii(r,e,t){return Vr(r.resourceType,t).type==="BOOLEAN"?ki(r,e,t):qr(r,e,t,!0)}function ki(r,e,t){let n=se(t.expression,r),i=e.value==="true",o=n.includes(i);return Ge(e.operator)?!o:o}function qr(r,e,t,n){let i=se(t.expression,r),o=e.value.split(","),s=Ge(e.operator);for(let a of i)for(let u of o)if(Ot(a,e.operator,u,n))return!s;return s}function Ot(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Ot(r,e,o,!1)&&(!s||Ot(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 Oi(r,e,t){let n=se(t.expression,r),i=e.value.split(","),o=Ge(e.operator);for(let s of n)for(let a of i)if(Vi(s,e.operator,a))return!o;return o}function Vi(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 Ge(r){return r==="ne"||r==="not"}var Di={resourceType:"*"},Ni=["DomainConfiguration","JsonWebKey","Login"],Fi=["PasswordChangeRequest","Project","ProjectMembership","User"],_i=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(_i||{}),Ui=["read","vread","history","history-instance"];function za(r,e){if(r.resource){for(let t of r.resource)if(Vt(t.resourceType,e))return!0}return!1}function Li(r,e){if(Ni.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Vt(t.resourceType,e)&&!t.readonly)return!0}return!1}function Ja(r,e){let t=e.resourceType;return Li(r,t)?Mi(r,e,!1):!1}function Mi(r,e,t){if(r.resource){for(let n of r.resource)if($r(e,t?"read":"update",n))return!0}return!1}function Ya(r,e,t){if(!t)return Di;if(t.resource){for(let n of t.resource)if($r(r,e,n))return n}}function $r(r,e,t){let n=r.resourceType;return!(!Vt(t.resourceType,n)||t.readonly&&!Ui.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!Br(r,kt(t.criteria)))}function Vt(r,e){return r===e||r==="*"&&!Fi.includes(e)}function jr(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 Qr(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 Dt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),er(r.buffer)}async function Hr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ye(){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 Bi(r){let e={};r=st(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=ye(),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)=>qi(i,o,e),2);return $i(JSON.parse(n))}function qi(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 $i(r){let e=Qi(r),{sorted:t,cycles:n}=ji(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 ji(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 Kr(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ue(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Kr(n,e)}}function Qi(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&&Kr(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function oc(r){r=st(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=ye());return Bi(e)}var ze=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 I={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 ge=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}},Je=class{constructor(){this.emitter=new ge}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var Nt={"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"},Hi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Ft=["DiagnosticReport-update"];function Gr(r){return Ft.includes(r)}function zr(r){if(Ft.includes(r))throw new p(h(`'context.version' is required for '${r}'.`))}var Ki={"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 Wi(r){return Hi.includes(r)}function Jr(r){return!!r.endpoint}function _t(r){if(!Xe(r))throw new p(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return Jr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Xe(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(!Nt[o])return!1;return!(Jr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Wr(r,e,t,n){if(typeof e!="object")throw new p(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new p(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Wi(e.resourceType))throw new p(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Gi(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Wr(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Wr(r,s,t,n)}}function zi(r,e){let t=new Map,n=Ki[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Gi(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Ut(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(h("Must provide a topic."));if(!Nt[e])throw new p(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Nt).join(", ")}`));if(typeof t!="object")throw new p(h("context must be a context object or array of context objects."));if(Ft.includes(e)&&!n)throw new p(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return zi(e,i),{timestamp:new Date().toISOString(),id:ye(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ye=class extends Je{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new p(h("Subscription request should contain an endpoint."));if(!Xe(t))throw new p(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function Ji(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=jr(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 Yr(r){return r.split(".").length===3}function Lt(r){let[e,t,n]=r.split(".");return Ji(t)}function Xr(r){try{return typeof Lt(r).login_id=="string"}catch{return!1}}var Yi,k=class{constructor(e){this[Yi]="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)}};Yi=Symbol.toStringTag;var Ze=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Mt)}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?Yt(t):void 0)}},Mt=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]}};var $c="2.2.1-545c34fc",Xi=I.FHIR_JSON+", */*; q=0.1",Zi="https://api.medplum.com/",eo=1e3,to=6e4,Zr="Binary/",en={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},ro=(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))(ro||{}),no=(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))(no||{}),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||{}),oo=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(oo||{}),tn=class extends ge{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??so(),this.storage=t?.storage??new Ze,this.createPdfImpl=t?.createPdf,this.baseUrl=nn(t?.baseUrl??Zi),this.fhirBaseUrl=nn(et(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=et(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=et(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=et(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??to,this.cacheTime>0?this.requestCache=new ze(t?.resourceCacheSize??eo):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new k(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,I.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope","openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new k((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new k(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new k(this.search(t,n,i).then(sn));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 sn(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return en;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new k(Promise.reject(new Error("Missing reference")));if(i==="system")return new k(Promise.resolve(en));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Pr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new k((async()=>{let s=`{
|
|
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 ni(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&ri.includes(r.value)))}var de=["true","false"],pe=["!=","!~","<=",">=","{}","->"];function kr(r){return new W(r,de,pe).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},ii={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},oi={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:m.Indexer},si={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:m.FunctionCall};function ai(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 fe(){return new ve().registerPrefix("String",{parse:(r,e)=>new D({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new D({type:c.dateTime,value:ie(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new D({type:c.Quantity,value:ai(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new D({type:c.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new D({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new D({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new Fe}).registerPrefix("(",ii).registerInfix("[",oi).registerInfix("(",si).prefix("+",m.UnaryAdd,(r,e)=>new _e("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new R("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new R("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new R("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new R("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new R("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new oe(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new Be(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new qe(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new $e(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new je(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new R("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new R("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new R(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new R(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new Ue(r,t)).infixLeft("and",m.And,(r,e,t)=>new Qe(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Le(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new R("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Me(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new R("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new He(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Ke(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new We(r,t))}var ci=fe();function At(r){return new Ne(r,ci.construct(kr(r)).consumeAndParse())}function se(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]=T(t[n]))}return me(r,t).map(n=>n.value)}function me(r,e,t){let n=t??{};return At(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Or=(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))(Or||{});function Vr(r,e){let t=V.types[r]?.searchParamsDetails?.[e.code];return t||(t=li(r,e)),t}function ui(r,e,t){let n=V.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function li(r,e){let t=e.code,n=fi(t),i=Nr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=he(a);u.length===1&&u[0]instanceof v?o.propertyTypes.add("boolean"):Dr(o,he(a),r,1)}let s={columnName:n,type:mi(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ui(r,t,s),s}function Dr(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){di(r,i);return}let o=i.toString(),s=Ie(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof Z&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;pi(f)&&(f=s.type[0].code),Dr(r,e,f,u)}}function di(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function pi(r){return r==="Element"||r==="BackboneElement"}function fi(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function mi(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 Nr(r,e){let t=[],n=At(e);return Ct(r,n.child,t),t}function Oa(r,e){let t=Nr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Ct(r,e,t){e instanceof oe?(Ct(r,e.left,t),Ct(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function he(r){if(r instanceof Y||r instanceof Z)return[he(r.left),r].flat();if(r instanceof v)return[r];if(r instanceof K)return[he(r.left),he(r.right)].flat();if(r instanceof $){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var Ua=20,hi=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(hi||{}),Ur={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"},It={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function La(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 Mr(r,t)}function Lr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Mr(e,r.searchParams.entries())}function Ma(r){return Lr(new URL(r,"https://example.com/"))}function kt(r){return Lr(new URL(r,"https://api.medplum.com/"))}function Mr(r,e){let t={resourceType:r};for(let[n,i]of e)yi(t,n,i);return t}function yi(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(".")){wt(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":gi(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=Fr(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=Fr(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=V.types[r.resourceType]?.searchParams?.[n];s?wt(r,xi(s,i,t)):wt(r,Si(n,i,t))}}}function gi(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 xi(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Ti(r,t);case"reference":case"string":case"token":case"uri":return vi(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Ti(r,e){let{operator:t,value:n}=Ei(e);return{code:r.code,operator:t,value:n}}function vi(r,e,t){return{code:r.code,operator:bi(e),value:t}}function Si(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in It&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ei(r){let e=r.substring(0,2),t=It[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function bi(r){return Ur[r]??"eq"}function Fr(r){let e=r.split(":");if(e.includes("*"))throw new p(C("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(C(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new p(C(`Invalid include value '${r}'`))}function wt(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Ri=/{{([^{}]+)}}/g;function Ba(r,e){return r=r.replaceAll(Ri,(t,n)=>{let i=me(n,[],e);return i.length!==1?"":Ir(i[0])}),kt(r)}function qa(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Pi(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ai(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(_r("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(_r("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Pi(r){let e=r.operator in Ur?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in It?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ai(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function _r(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Br(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Ci(r,e,t))return!1}return!0}function Ci(r,e,t){let n=V.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=se(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return wi(r,t,n);case"string":case"uri":return qr(r,t,n);case"token":return Ii(r,t,n);case"date":return Oi(r,t,n);default:return!1}}function wi(r,e,t){let n=se(t.expression,r),i=Ge(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 Ii(r,e,t){return Vr(r.resourceType,t).type==="BOOLEAN"?ki(r,e,t):qr(r,e,t,!0)}function ki(r,e,t){let n=se(t.expression,r),i=e.value==="true",o=n.includes(i);return Ge(e.operator)?!o:o}function qr(r,e,t,n){let i=se(t.expression,r),o=e.value.split(","),s=Ge(e.operator);for(let a of i)for(let u of o)if(Ot(a,e.operator,u,n))return!s;return s}function Ot(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Ot(r,e,o,!1)&&(!s||Ot(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 Oi(r,e,t){let n=se(t.expression,r),i=e.value.split(","),o=Ge(e.operator);for(let s of n)for(let a of i)if(Vi(s,e.operator,a))return!o;return o}function Vi(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 Ge(r){return r==="ne"||r==="not"}var Di={resourceType:"*"},Ni=["DomainConfiguration","JsonWebKey","Login"],Fi=["PasswordChangeRequest","Project","ProjectMembership","User"],_i=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(_i||{}),Ui=["read","vread","history","history-instance"];function za(r,e){if(r.resource){for(let t of r.resource)if(Vt(t.resourceType,e))return!0}return!1}function Li(r,e){if(Ni.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Vt(t.resourceType,e)&&!t.readonly)return!0}return!1}function Ja(r,e){let t=e.resourceType;return Li(r,t)?Mi(r,e,!1):!1}function Mi(r,e,t){if(r.resource){for(let n of r.resource)if($r(e,t?"read":"update",n))return!0}return!1}function Ya(r,e,t){if(!t)return Di;if(t.resource){for(let n of t.resource)if($r(r,e,n))return n}}function $r(r,e,t){let n=r.resourceType;return!(!Vt(t.resourceType,n)||t.readonly&&!Ui.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!Br(r,kt(t.criteria)))}function Vt(r,e){return r===e||r==="*"&&!Fi.includes(e)}function jr(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 Qr(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 Dt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),er(r.buffer)}async function Hr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ye(){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 Bi(r){let e={};r=st(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=ye(),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)=>qi(i,o,e),2);return $i(JSON.parse(n))}function qi(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 $i(r){let e=Qi(r),{sorted:t,cycles:n}=ji(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 ji(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 Kr(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ue(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Kr(n,e)}}function Qi(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&&Kr(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function oc(r){r=st(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=ye());return Bi(e)}var ze=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 I={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 ge=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}},Je=class{constructor(){this.emitter=new ge}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var Nt={"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"},Hi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Ft=["DiagnosticReport-update"];function Gr(r){return Ft.includes(r)}function zr(r){if(Ft.includes(r))throw new p(h(`'context.version' is required for '${r}'.`))}var Ki={"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 Wi(r){return Hi.includes(r)}function Jr(r){return!!r.endpoint}function _t(r){if(!Xe(r))throw new p(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return Jr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Xe(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(!Nt[o])return!1;return!(Jr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Wr(r,e,t,n){if(typeof e!="object")throw new p(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new p(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Wi(e.resourceType))throw new p(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Gi(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Wr(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Wr(r,s,t,n)}}function zi(r,e){let t=new Map,n=Ki[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Gi(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Ut(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(h("Must provide a topic."));if(!Nt[e])throw new p(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Nt).join(", ")}`));if(typeof t!="object")throw new p(h("context must be a context object or array of context objects."));if(Ft.includes(e)&&!n)throw new p(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return zi(e,i),{timestamp:new Date().toISOString(),id:ye(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ye=class extends Je{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new p(h("Subscription request should contain an endpoint."));if(!Xe(t))throw new p(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function Ji(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=jr(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 Yr(r){return r.split(".").length===3}function Lt(r){let[e,t,n]=r.split(".");return Ji(t)}function Xr(r){try{return typeof Lt(r).login_id=="string"}catch{return!1}}var Yi,k=class{constructor(e){this[Yi]="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)}};Yi=Symbol.toStringTag;var Ze=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Mt)}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?Yt(t):void 0)}},Mt=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]}};var $c="2.2.2-e9617926",Xi=I.FHIR_JSON+", */*; q=0.1",Zi="https://api.medplum.com/",eo=1e3,to=6e4,Zr="Binary/",en={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},ro=(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))(ro||{}),no=(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))(no||{}),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||{}),oo=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(oo||{}),tn=class extends ge{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??so(),this.storage=t?.storage??new Ze,this.createPdfImpl=t?.createPdf,this.baseUrl=nn(t?.baseUrl??Zi),this.fhirBaseUrl=nn(et(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=et(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=et(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=et(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??to,this.cacheTime>0?this.requestCache=new ze(t?.resourceCacheSize??eo):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new k(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,I.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope","openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new k((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new k(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let u=new k(this.search(t,n,i).then(sn));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 sn(a),o=u?.url?new URL(u.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return en;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new k(Promise.reject(new Error("Missing reference")));if(i==="system")return new k(Promise.resolve(en));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Pr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new k((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|