@medplum/core 2.1.15 → 2.1.17
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.d.mts +4630 -0
- package/dist/esm/index.mjs +1 -1
- package/package.json +2 -4
- package/api-extractor.json +0 -7
- package/babel.config.cjs +0 -20
- package/test.setup.cjs +0 -7
- package/tsdoc.json +0 -4
- /package/dist/{types.d.ts → cjs/index.d.cts} +0 -0
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";var Ct=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var Jn=Object.prototype.hasOwnProperty;var Yn=(r,e)=>{for(var t in e)Ct(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&&Ct(r,i,{get:()=>e[i],enumerable:!(n=Gn(e,i))||n.enumerable});return r};var Zn=r=>Xn(Ct({},"__esModule",{value:!0}),r);var Js={};Yn(Js,{AccessPolicyInteraction:()=>Sn,AndAtom:()=>Ue,ArithemticOperatorAtom:()=>b,AsAtom:()=>J,BooleanInfixOperatorAtom:()=>v,CPT:()=>As,ClientStorage:()=>Ge,ConcatAtom:()=>ke,ContainsAtom:()=>Oe,ContentType:()=>A,DEFAULT_ACCEPT:()=>Ln,DEFAULT_SEARCH_COUNT:()=>Uo,DotAtom:()=>j,EmptySetAtom:()=>we,EqualsAtom:()=>De,EquivalentAtom:()=>Fe,EventTarget:()=>de,ExternalSecretSystems:()=>Es,FHIRCAST_EVENT_NAMES:()=>xt,FHIRCAST_EVENT_RESOURCES:()=>kn,FHIRCAST_EVENT_VERSION_REQUIRED:()=>Tt,FHIRCAST_RESOURCE_TYPES:()=>In,FhirFilterComparison:()=>ze,FhirFilterConnective:()=>Ye,FhirFilterNegation:()=>Je,FhirPathAtom:()=>Ce,FhircastConnection:()=>Ke,FunctionAtom:()=>B,Hl7Context:()=>H,Hl7Field:()=>ne,Hl7Message:()=>br,Hl7Segment:()=>pe,ICD10:()=>Cs,ImpliesAtom:()=>Be,InAtom:()=>Ve,IndexerAtom:()=>X,InfixOperatorAtom:()=>q,IsAtom:()=>Y,LOINC:()=>Rs,LRUCache:()=>Qe,LiteralAtom:()=>O,MEDPLUM_VERSION:()=>gs,MedplumClient:()=>vr,MemoryStorage:()=>Rt,NotEqualsAtom:()=>Ne,NotEquivalentAtom:()=>_e,OAuthClientAssertionType:()=>$n,OAuthGrantType:()=>Mn,OAuthTokenAuthMethod:()=>qn,OAuthTokenType:()=>Bn,OperationOutcomeError:()=>d,Operator:()=>mn,OperatorPrecedence:()=>m,OrAtom:()=>Le,Parser:()=>Xe,ParserBuilder:()=>me,PrefixOperatorAtom:()=>fe,PropertyType:()=>u,RXNORM:()=>Ps,ReadablePromise:()=>C,SNOMED:()=>bs,SearchParameterType:()=>nr,SymbolAtom:()=>M,Tokenizer:()=>Q,TypedEventTarget:()=>He,UCUM:()=>Sr,UnaryOperatorAtom:()=>Ie,UnionAtom:()=>ee,XorAtom:()=>Me,accepted:()=>no,allOk:()=>Ji,arrayBufferToBase64:()=>Vt,arrayBufferToHex:()=>Ot,arrayify:()=>Te,assertContextVersionOptional:()=>yr,assertOk:()=>uo,badRequest:()=>N,booleanToTypedValue:()=>l,buildTypeName:()=>un,calculateAge:()=>he,calculateAgeString:()=>oi,canReadResourceType:()=>ss,canWriteResource:()=>as,canWriteResourceType:()=>En,capitalize:()=>P,checkForNull:()=>Pr,compressElement:()=>Ki,convertContainedResourcesToBundle:()=>ps,convertToTransactionBundle:()=>Pn,crawlResource:()=>Pt,createConstraintIssue:()=>Kt,createFhircastMessagePayload:()=>St,createProcessingIssue:()=>Wt,createReference:()=>W,createStructureIssue:()=>y,created:()=>Yi,decodeBase64:()=>pr,deepClone:()=>et,deepEquals:()=>ye,deepIncludes:()=>ge,encodeBase64:()=>fr,encryptSHA256:()=>mr,evalFhirPath:()=>te,evalFhirPathTyped:()=>ue,fhirPathArrayEquals:()=>ot,fhirPathArrayEquivalent:()=>st,fhirPathEquals:()=>Ft,fhirPathEquivalent:()=>Jr,fhirPathIs:()=>Ee,fhirPathNot:()=>it,fhirTypeToJsType:()=>Cr,findObservationInterval:()=>vi,findObservationReferenceRange:()=>Si,findResourceByCode:()=>Ii,forbidden:()=>eo,formatAddress:()=>Oi,formatCodeableConcept:()=>Br,formatCoding:()=>qr,formatDate:()=>Ni,formatDateTime:()=>rt,formatFamilyName:()=>Di,formatGivenName:()=>Vi,formatHl7DateTime:()=>Hn,formatHumanName:()=>ve,formatMoney:()=>$i,formatObservationValue:()=>$r,formatPeriod:()=>Fi,formatQuantity:()=>G,formatRange:()=>qi,formatSearchQuery:()=>zo,formatTime:()=>Mr,formatTiming:()=>Mi,generateId:()=>le,getAllDataTypes:()=>Yt,getAllQuestionnaireAnswers:()=>ai,getCodeBySystem:()=>Ze,getDataType:()=>Z,getDateProperty:()=>ii,getDisplayString:()=>Vr,getElementDefinition:()=>Re,getElementDefinitionTypeName:()=>lt,getExpressionForResourceType:()=>_o,getExpressionsForResourceType:()=>or,getExtension:()=>di,getExtensionValue:()=>li,getIdentifier:()=>ci,getImageSrc:()=>ni,getNestedProperty:()=>At,getPropertyDisplayName:()=>vo,getQuestionnaireAnswers:()=>si,getRandomString:()=>gt,getReferenceString:()=>ie,getResourceTypes:()=>go,getSearchParameter:()=>To,getSearchParameterDetails:()=>ir,getSearchParameters:()=>xo,getStatus:()=>co,getTypedPropertyValue:()=>w,globalSchema:()=>I,gone:()=>to,indexSearchParameter:()=>ft,indexSearchParameterBundle:()=>yo,indexStructureDefinitionBundle:()=>Jt,inflateBaseSchema:()=>Nt,inflateElement:()=>Qr,initFhirPathParserBuilder:()=>ce,isAccepted:()=>oo,isCompletedSubscriptionRequest:()=>gr,isContextVersionRequired:()=>hr,isCreated:()=>io,isDataTypeLoaded:()=>Xt,isEmpty:()=>S,isFhircastResourceType:()=>On,isGone:()=>ao,isJwt:()=>xr,isLowerCase:()=>xe,isMedplumAccessToken:()=>Tr,isNotFound:()=>so,isObject:()=>$,isOk:()=>ut,isOperationOutcome:()=>be,isPeriod:()=>Yr,isProfileResource:()=>Or,isQuantity:()=>E,isQuantityEquivalent:()=>_t,isReference:()=>oe,isResource:()=>D,isResourceType:()=>er,isResourceTypeSchema:()=>pt,isStringArray:()=>kt,isUUID:()=>xi,isValidDate:()=>nt,loadDataType:()=>an,matchesAccessPolicy:()=>Rn,matchesRange:()=>Dt,matchesSearchRequest:()=>lr,normalizeErrorString:()=>tn,normalizeOperationOutcome:()=>Pe,notFound:()=>$t,notModified:()=>Xi,operationOutcomeIssueToString:()=>rn,operationOutcomeToString:()=>Qt,parseCriteriaAsSearchRequest:()=>ht,parseFhirPath:()=>mt,parseFilterParameter:()=>Fs,parseHl7DateTime:()=>_s,parseJWTPayload:()=>Et,parseMappingLanguage:()=>ks,parseParameter:()=>gn,parseReference:()=>ei,parseSearchDefinition:()=>Mo,parseSearchRequest:()=>Lo,parseSearchUrl:()=>cr,parseStructureDefinition:()=>dt,parseXFhirQuery:()=>Go,preciseEquals:()=>Ai,preciseGreaterThan:()=>wi,preciseGreaterThanOrEquals:()=>Lr,preciseLessThan:()=>Ci,preciseLessThanOrEquals:()=>Ur,preciseRound:()=>Pi,projectAdminResourceTypes:()=>vn,protectedResourceTypes:()=>Tn,removeDuplicates:()=>Se,reorderBundle:()=>An,resolveId:()=>wt,satisfiedAccessPolicy:()=>cs,serializeFhircastSubscriptionRequest:()=>vt,serverError:()=>jt,setCodeBySystem:()=>Ti,setIdentifier:()=>ui,singleton:()=>V,sleep:()=>tt,splitN:()=>ki,streamToBuffer:()=>qs,stringify:()=>It,stringifyTypedValue:()=>tr,subsetResource:()=>lo,toJsBoolean:()=>_,toTypedValue:()=>T,tooManyRequests:()=>ro,tryGetDataType:()=>Zt,unauthorized:()=>Zi,validateFhircastSubscriptionRequest:()=>We,validateResource:()=>Qs,validateResourceType:()=>Ls,validationError:()=>h});module.exports=Zn(Js);var fe=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},me=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 Xe(e,this.prefixParselets,this.infixParselets)}},Xe=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 W(r){let e=ie(r),t=Vr(r);return t===e?{reference:e}:{reference:e,display:t}}function ie(r){return oe(r)?r.reference:`${r.resourceType}/${r.id}`}function wt(r){if(r)return oe(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 Or(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Vr(r){if(Or(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:ie(r)}function ti(r){let e=r.name;if(e&&e.length>0)return ve(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=kr(t);if(n)return n}else return kr(e)}function kr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function ii(r){return r?new Date(r):void 0}function he(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),f=n.getUTCDate(),p=a-i;(c<o||c===o&&f<s)&&p--;let K=a*12+c-(i*12+o);f<s&&K--;let Wn=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:K,days:Wn}}function oi(r,e){let{years:t,months:n,days:i}=he(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 Dr(r.item,e),e}function Dr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Dr(t.item,e)}function ai(r){let e={};return Nr(r.item,e),e}function Nr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Nr(t.item,e)}function 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 It(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 ye(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:$(r)&&$(e)?hi(r,e,t):($(r)||$(e),!1)}function mi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ye(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(!ye(o,s,i))return!1}return!0}function ge(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:$(r)&&$(e)?gi(r,e):$(r)||$(e)?!1:r===e}function yi(r,e){return r.every(t=>e.some(n=>ge(t,n)))}function gi(r,e){return Object.entries(r).every(([t,n])=>t in e&&ge(n,e[t]))}function et(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 $(r){return r!==null&&typeof r=="object"}function kt(r){return r.every(e=>typeof e=="string")}var Fr=[];for(let r=0;r<256;r++)Fr.push(r.toString(16).padStart(2,"0"));function Ot(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Fr[e[n]];return t.join("")}function Vt(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function P(r){return r.charAt(0).toUpperCase()+r.substring(1)}function xe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Ze(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=>_r(i,e)&&bi(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Si(r,e,t){return r.qualifiedInterval?.find(n=>_r(n,e)&&t.includes(n.condition))}function _r(r,e){return Ei(r,e)&&Ri(r,e)}function Ei(r,e){return!r.gender||r.gender===e.gender}function Ri(r,e){return!r.age||Dt(he(e.birthDate).years,r.age)}function bi(r,e,t){return!!r.range&&Dt(e,r.range,t)}function Dt(r,e,t){return(e.low?.value===void 0||Lr(r,e.low.value,t))&&(e.high?.value===void 0||Ur(r,e.high.value,t))}function Pi(r,e){return parseFloat(r.toFixed(e))}function Ai(r,e,t){return F(r,t)===F(e,t)}function Ci(r,e,t){return F(r,t)<F(e,t)}function wi(r,e,t){return F(r,t)>F(e,t)}function Ur(r,e,t){return F(r,t)<=F(e,t)}function Lr(r,e,t){return F(r,t)>=F(e,t)}function F(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Ii(r,e,t){return r.find(n=>typeof e=="string"?Ze(n.code||{},t)===e:Ze(n.code||{},t)===Ze(e,t))}function Te(r){if(r)return Array.isArray(r)?r:[r]}var tt=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(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 ve(r,e){let t=[];return 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&&r.text?r.text:t.join(" ").trim()}function Vi(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Di(r){return r.family??""}function nt(r){return r instanceof Date&&!isNaN(r.getTime())}function Ni(r,e,t){if(!r)return"";let n=new Date(r);return nt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Mr(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return nt(n)?n.toLocaleTimeString(e,t):""}function rt(r,e,t){if(!r)return"";let n=new Date(r);return nt(n)?n.toLocaleString(e,t):""}function Fi(r,e,t){return!r||!r.start&&!r.end?"":rt(r.start,e,t)+" - "+rt(r.end,e,t)}var _i={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Ui={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Li={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Mi(r){if(!r)return"";let e=[];return Bi(e,r.repeat),r.event&&e.push(r.event.map(t=>rt(t)).join(", ")),P(e.join(" ").trim())}function Bi(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(_i[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Ui[i]):r.push("per "+n+" "+Li[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(P).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Mr(o)).join(", "))}function qi(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=Qi(n.value,e),`> ${G(n,e)}`):`>= ${G(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ji(i.value,e),`< ${G(i,e)}`):`<= ${G(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${G(n,e)} - ${G(i,e)}`)}function G(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 $i(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Br(r){return r?r.text?r.text:r.coding?r.coding.map(e=>qr(e)).join(", "):"":""}function qr(r){return r?.display??r?.code??""}function $r(r){return r?"component"in r?r.component.map(e=>$r(e)).join(" / "):r.valueQuantity?G(r.valueQuantity):r.valueCodeableConcept?Br(r.valueCodeableConcept):r.valueString?r.valueString:"":""}function ji(r,e,t=1){return(jr(r,e)+t)*Math.pow(10,-e)}function Qi(r,e,t=1){return(jr(r,e)-t)*Math.pow(10,-e)}function jr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Hi={"http://hl7.org/fhirpath/System.String":"string"};function Ki(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:Hi[t.code]??t.code})),e}function Qr(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 Nt(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,Qr(o)])),constraints:[],innerTypes:[]};return e}var Hr={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:u.boolean,value:r}]}function T(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:u.integer,value:r}:typeof r=="number"?{type:u.decimal,value:r}:typeof r=="boolean"?{type:u.boolean,value:r}:typeof r=="string"?{type:u.string,value:r}:E(r)?{type:u.Quantity,value:r}:D(r)?{type:r.resourceType,value:r}:{type:u.BackboneElement,value:r}}function _(r){return r.length===0?!1:!!r[0].value}function V(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 w(r,e){if(!r.value)return;let t=Re(r.type,e);return t?Gi(r,e,t):zi(r,e)}function Gi(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 c=e.replace("[x]","")+P(a.code);if(c in r.value){i=r.value[c],o=a.code;break}}let s=r.value["_"+e];if(s&&(Array.isArray(i)?i=i.map((a,c)=>s[c]?zr(a??{},s[c]):a):i=zr(i??{},s)),!S(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>Kr(a,o)):Kr(i,o)}function Kr(r,e){return e==="Resource"&&D(r)&&(e=r.resourceType),{type:e,value:r}}function zi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in u){let o=e+P(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(T):T(n)}function Se(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(_(Ft(t,i))){n=!0;break}n||e.push(t)}return e}function it(r){return l(!_(r))}function ot(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?l(!1):l(r.every((t,n)=>_(Ft(t,e[n]))))}function Ft(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(_t(t,n)):l(typeof t=="object"&&typeof n=="object"?Ut(r,e):t===n)}function st(r,e){return r.length===0&&e.length===0?l(!0):r.length!==e.length?l(!1):(r.sort(Wr),e.sort(Wr),l(r.every((t,n)=>_(Jr(t,e[n])))))}function Jr(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(_t(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"?Ut({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Wr(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 Ee(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 Yr(t);case"Quantity":return E(t);default:return typeof t=="object"&&t?.resourceType===e}}function Yr(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 _t(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 Ut(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(Gr(o)&&Gr(s)){if(!Ut(o,s))return!1}else if(o!==s)return!1}return!0}function Gr(r){return r!==null&&typeof r=="object"}function zr(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}var Lt="ok",at="created",Mt="gone",Bt="not-modified",qt="not-found",Xr="unauthorized",Zr="forbidden",en="too-many-requests",ct="accepted",Ji={resourceType:"OperationOutcome",id:Lt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Yi={resourceType:"OperationOutcome",id:at,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Xi={resourceType:"OperationOutcome",id:Bt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},$t={resourceType:"OperationOutcome",id:qt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Zi={resourceType:"OperationOutcome",id:Xr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},eo={resourceType:"OperationOutcome",id:Zr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},to={resourceType:"OperationOutcome",id:Mt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},ro={resourceType:"OperationOutcome",id:en,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function no(r){return{resourceType:"OperationOutcome",id:ct,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function N(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 jt(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function be(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function ut(r){return r.id===Lt||r.id===at||r.id===Bt||r.id===ct}function io(r){return r.id===at}function oo(r){return r.id===ct}function so(r){return r.id===qt}function ao(r){return r.id===Mt}function co(r){return r.id===Lt?200:r.id===at?201:r.id===ct?202:r.id===Bt?304:r.id===Xr?401:r.id===Zr?403:r.id===qt?404:r.id===Mt?410:r.id===en?429:400}function uo(r,e){if(!ut(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(t,n){super(Qt(t));this.outcome=t,this.cause=n}};function Pe(r){return r instanceof d?r.outcome:be(r)?r:N(tn(r))}function tn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:be(r)?Qt(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Qt(r){let e=r.issue?.map(rn)??[];return e.length>0?e.join("; "):"Unknown error"}function rn(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function Ht(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function y(r,e){return Ht("structure",e,r)}function Kt(r,e){return Ht("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Wt(r,e,t,n){return Ht("processing",e,r,{...n,error:t})}function dt(r){return new zt(r).parse()}var z=Nt(Hr);function Jt(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)an(t)}function an(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=dt(r);z[r.name]=e;for(let t of e.innerTypes)t.parentType=e,z[t.name]=t}function Yt(){return z}function Xt(r){return!!z[r]}function Zt(r){return z[r]}function Z(r){let e=z[r];if(!e)throw new d(jt(Error("Unknown data type: "+r)));return e}function er(r){let e=z[r];return e&&pt(e)}var zt=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:ho(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=Gt(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[Gt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Gt(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!se(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:lt(e),description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:se(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){mo(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!se(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!se(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!se(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(se(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator: "+e.sliceName);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",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=on(e.max),n=e.base?.max?on(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)?lt(e):o.code??"",targetProfile:o.targetProfile})),fixed:sn(w(i,"fixed")),pattern:sn(w(i,"pattern")),binding:e.binding}}};function lo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=z[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+P(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!po.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(nn):[nn]},r}var nn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},po=["resourceType","id","meta"];function on(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Gt(r,e=""){return fo(r.path,e)}function fo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function se(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function sn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function mo(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 ho(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}var u={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function yo(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&ft(t)}}function ft(r){for(let e of r.base??[]){let t=I.types[e];t||(t={searchParamsDetails:{}},I.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 lt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?un((r.base?.path??r.path)?.split(".")):e}function un(r){return r.length===1?r[0]:r.map(P).join("")}function pt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function go(){return Object.values(Yt()).filter(pt).map(r=>r.name)}function xo(r){return I.types[r]?.searchParams}function To(r,e){return I.types[r]?.searchParams?.[e]}function vo(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(Eo).join(" ").replace("_"," ").replace(/\s+/g," ")}var So=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function Eo(r){let e=r.toUpperCase();return So.has(e)?e:e.charAt(0)+r.slice(1)}function Re(r,e){let t=Zt(r);if(t)return t.elements[e]??t.elements[e+"[x]"]}function D(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function oe(r){return!!(r&&typeof r=="object"&&"reference"in r)}var I={types:{}};function tr(r){switch(r.type){case u.uuid:case u.uri:case u.url:case u.string:case u.oid:case u.markdown:case u.id:case u.code:case u.canonical:case u.base64Binary:case u.SystemString:case u.date:case u.dateTime:case u.instant:return r.value;case u.Identifier:return`${r.value.system??""}|${r.value.value}`;case u.Coding:return cn(r.value);case u.CodeableConcept:return r.value.coding?.map(cn).join(",")??r.value.text;case u.HumanName:return r.value.text?r.value.text:ve(r.value);case u.unsignedInt:case u.positiveInt:case u.integer:case u.decimal:return r.value.toString();case u.boolean:return r.value?"true":"false";case u.Extension:return r.value.url;case u.ContactPoint:return r.value.value;case u.Quantity:case u.Age:case u.Count:case u.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case u.Reference:return r.value.reference;default:return D(r.value)?W(r.value).reference:JSON.stringify(r)}}function cn(r){return r?`${r.system??""}|${r.code}`:""}function ae(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var Ae=()=>[],R={empty:(r,e)=>l(e.length===0),exists:(r,e,t)=>t?l(e.filter(n=>_(t.eval(r,[n]))).length>0):l(e.length>0),all:(r,e,t)=>l(e.every(n=>_(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:Ae,supersetOf:Ae,count:(r,e)=>[{type:u.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>l(e.length===R.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>_(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Ae,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Se([...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 _(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);if(typeof t=="boolean")return[{type:u.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return 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(R.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="number"?[{type:u.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:u.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:u.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:l(R.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.date,value:ae(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:l(R.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.dateTime,value:ae(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:l(R.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return typeof t=="number"?[{type:u.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:u.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:u.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:l(R.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return E(t)?[{type:u.Quantity,value:t}]:typeof t=="number"?[{type:u.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:u.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:u.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:l(R.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);return t==null?[]:E(t)?[{type:u.string,value:`${t.value} '${t.unit}'`}]:[{type:u.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:l(R.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=L(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:u.time,value:ae("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:l(R.toTime(r,e).length===1),indexOf:(r,e,t)=>k((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>k((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>k((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>k((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>k((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>k(t=>t.toUpperCase(),r,e),lower:(r,e)=>k(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>k((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>k((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>k(t=>t.length,r,e),toChars:(r,e)=>k(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>U(Math.abs,r,e),ceiling:(r,e)=>U(Math.ceil,r,e),exp:(r,e)=>U(Math.exp,r,e),floor:(r,e)=>U(Math.floor,r,e),ln:(r,e)=>U(Math.log,r,e),log:(r,e,t)=>U((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>U(Math.pow,r,e,t),round:(r,e)=>U(Math.round,r,e),sqrt:(r,e)=>U(Math.sqrt,r,e),truncate:(r,e)=>U(t=>t|0,r,e),children:Ae,descendants:Ae,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:u.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:u.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:u.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=R.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=R.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=he(o[0].value,s[0].value);return[{type:u.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof M?n=t.name:t instanceof j&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:u.boolean,value:Ee(i,n)})):[]},not:(r,e)=>R.toBoolean(r,e).map(t=>({type:u.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return 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:u.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:u.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:u.BackboneElement,value:{namespace:"System",name:"Integer"}}:D(t)?{type:u.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:u.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:u.boolean,value:o.value?.resourceType===i}))}};function k(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=L(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(T):[T(o)]}function U(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=L(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(p=>p.eval(e,t)[0]?.value)),c=o?u.Quantity:t[0].type,f=o?{...i,value:a}:a;return[{type:c,value:f}]}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 Ce=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},O=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},M=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 D(t)&&t.resourceType===this.name?e:w(e,this.name)}toString(){return this.name}},we=class{eval(){return[]}toString(){return"{}"}},Ie=class extends fe{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()}},J=class extends q{constructor(e,t){super("as",e,t)}eval(e,t){return R.ofType(e,this.left.eval(e,t),this.right)}},v=class extends q{},b=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,c=E(s)?s.value:s,f=E(a)?a.value:a,p=this.impl(c,f);return typeof p=="boolean"?l(p):E(s)?[{type:u.Quantity,value:{...s,value:p}}]:[T(p)]}},ke=class extends q{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:u.string,value:o.map(s=>s.value).join("")}]:o}},Oe=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))}},Ve=class extends v{constructor(e,t){super("in",e,t)}eval(e,t){let n=V(this.left.eval(e,t)),i=this.right.eval(e,t);return n?l(i.some(o=>o.value===n.value)):[]}},j=class extends q{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},ee=class extends q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Se([...n,...i])}},De=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 ot(n,i)}},Ne=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 it(ot(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 st(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 it(st(n,i))}},Y=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(Ee(n[0],i))}},Ue=class extends v{constructor(e,t){super("and",e,t)}eval(e,t){let n=V(this.left.eval(e,t),"boolean"),i=V(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?l(!0):n?.value===!1||i?.value===!1?l(!1):[]}},Le=class extends v{constructor(e,t){super("or",e,t)}eval(e,t){let n=V(this.left.eval(e,t),"boolean"),i=V(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?l(!1):n?.value||i?.value?l(!0):[]}},Me=class extends v{constructor(e,t){super("xor",e,t)}eval(e,t){let n=V(this.left.eval(e,t),"boolean"),i=V(this.right.eval(e,t),"boolean");return!n||!i?[]:l(n.value!==i.value)}},Be=class extends v{constructor(e,t){super("implies",e,t)}eval(e,t){let n=V(this.left.eval(e,t),"boolean"),i=V(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?l(!0):!n||!i?[]:l(!1)}},B=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=R[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},X=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 Ro=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Q=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()===" "&&bo(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 bo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ro.includes(r.value)))}var qe=["true","false"],$e=["!=","!~","<=",">=","{}","->"];function ln(r){return new Q(r,qe,$e).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},Po={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ao={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new X(e,t)},precedence:m.Indexer},Co={parse(r,e){if(!(e instanceof M))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new B(e.name,t)},precedence:m.FunctionCall};function wo(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 ce(){return new me().registerPrefix("String",{parse:(r,e)=>new O({type:u.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new O({type:u.dateTime,value:ae(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new O({type:u.Quantity,value:wo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new O({type:u.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new O({type:u.boolean,value:!0})}).registerPrefix("false",{parse:()=>new O({type:u.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new M(e.value)}).registerPrefix("{}",{parse:()=>new we}).registerPrefix("(",Po).registerInfix("[",Ao).registerInfix("(",Co).prefix("+",m.UnaryAdd,(r,e)=>new Ie("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new b("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new j(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new b("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new b("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new b("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new b("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new ee(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new De(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new Ne(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Fe(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new _e(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new b("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new b("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new b(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new b(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new ke(r,t)).infixLeft("and",m.And,(r,e,t)=>new Ue(r,t)).infixLeft("as",m.As,(r,e,t)=>new J(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Oe(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new b("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Ve(r,t)).infixLeft("is",m.Is,(r,e,t)=>new Y(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new b("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Le(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Me(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Be(r,t))}var Io=ce();function mt(r){return new Ce(r,Io.construct(ln(r)).consumeAndParse())}function te(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 ue(r,t).map(n=>n.value)}function ue(r,e,t){let n=t??{};return mt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var nr=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(nr||{});function ir(r,e){let t=I.types[r]?.searchParamsDetails?.[e.code];return t||(t=Oo(r,e)),t}function ko(r,e,t){let n=I.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Oo(r,e){let t=e.code,n=No(t),i=or(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=je(a);c.length===1&&c[0]instanceof v?o.propertyTypes.add("boolean"):dn(o,je(a),r,1)}let s={columnName:n,type:Fo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ko(r,t,s),s}function dn(r,e,t,n){let i=e[n];if(i instanceof J){r.propertyTypes.add(i.right.toString());return}if(i instanceof B){Vo(r,i);return}let o=i.toString(),s=Re(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof X&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let f of s.type)r.propertyTypes.add(f.code);return}for(let f of s.type){let p=f.code;Do(p)&&(p=s.type[0].code),dn(r,e,p,c)}}function Vo(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 Y){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Do(r){return r==="Element"||r==="BackboneElement"}function No(r){return r.split("-").reduce((e,t,n)=>e+(n?P(t):t),"")}function Fo(r,e){switch(r.type){case"date":return e.size===1&&e.has(u.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(u.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(u.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function or(r,e){let t=[],n=mt(e);return rr(r,n.child,t),t}function _o(r,e){let t=or(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function rr(r,e,t){e instanceof ee?(rr(r,e.left,t),rr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function je(r){return r instanceof J||r instanceof X?[je(r.left),r].flat():r instanceof v?[r]:r instanceof j?[je(r.left),je(r.right)].flat():r instanceof B&&r.name==="where"&&!(r.args[0]instanceof Y)?[]:[r]}var Uo=20,mn=(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))(mn||{}),hn={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"},ar={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Lo(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 yn(r,t)}function cr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return yn(e,r.searchParams.entries())}function Mo(r){return cr(new URL(r,"https://example.com/"))}function ht(r){return cr(new URL(r,"https://api.medplum.com/"))}function yn(r,e){let t={resourceType:r};for(let[n,i]of e)Bo(t,n,i);return t}function Bo(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(".")){sr(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":qo(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=pn(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=pn(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=I.types[r.resourceType]?.searchParams?.[n];s?sr(r,gn(s,i,t)):sr(r,Qo(n,i,t))}}}function qo(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 gn(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return $o(r,t);case"reference":case"string":case"token":case"uri":return jo(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function $o(r,e){let{operator:t,value:n}=Ho(e);return{code:r.code,operator:t,value:n}}function jo(r,e,t){return{code:r.code,operator:Ko(e),value:t}}function Qo(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in ar&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ho(r){let e=r.substring(0,2),t=ar[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ko(r){return hn[r]??"eq"}function pn(r){let e=r.split(":");if(e.includes("*"))throw new d(N("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(N(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new d(N(`Invalid include value '${r}'`))}function sr(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Wo=/{{([^{}]+)}}/g;function Go(r,e){return r=r.replaceAll(Wo,(t,n)=>{let i=ue(n,[],e);return i.length!==1?"":tr(i[0])}),ht(r)}function zo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Jo(t))),r.sortRules&&r.sortRules.length>0&&e.push(Yo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(fn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(fn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Jo(r){let e=r.operator in hn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in ar?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Yo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function fn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function lr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Xo(r,e,t))return!1}return!0}function Xo(r,e,t){let n=I.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=te(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Zo(r,t,n);case"string":case"uri":return xn(r,t,n);case"token":return es(r,t,n);case"date":return rs(r,t,n);default:return!1}}function Zo(r,e,t){let n=te(t.expression,r),i=yt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function es(r,e,t){return ir(r.resourceType,t).type==="BOOLEAN"?ts(r,e,t):xn(r,e,t,!0)}function ts(r,e,t){let n=te(t.expression,r),i=e.value==="true",o=n.includes(i);return yt(e.operator)?!o:o}function xn(r,e,t,n){let i=te(t.expression,r),o=e.value.split(","),s=yt(e.operator);for(let a of i)for(let c of o)if(ur(a,e.operator,c,n))return!s;return s}function ur(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ur(r,e,o,!1)&&(!s||ur(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 rs(r,e,t){let n=te(t.expression,r),i=e.value.split(","),o=yt(e.operator);for(let s of n)for(let a of i)if(ns(s,e.operator,a))return!o;return o}function ns(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 yt(r){return r==="ne"||r==="not"}var is={resourceType:"*"},Tn=["DomainConfiguration","JsonWebKey","Login"],vn=["PasswordChangeRequest","Project","ProjectMembership","User"],Sn=(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))(Sn||{}),os=["read","vread","history","history-instance"];function ss(r,e){if(r.resource){for(let t of r.resource)if(dr(t.resourceType,e))return!0}return!1}function En(r,e){if(Tn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(dr(t.resourceType,e)&&!t.readonly)return!0}return!1}function as(r,e){let t=e.resourceType;return En(r,t)?Rn(r,e,!1):!1}function Rn(r,e,t){if(r.resource){for(let n of r.resource)if(bn(e,t?"read":"update",n))return!0}return!1}function cs(r,e,t){if(!t)return is;if(t.resource){for(let n of t.resource)if(bn(r,e,n))return n}}function bn(r,e,t){let n=r.resourceType;return!(!dr(t.resourceType,n)||t.readonly&&!os.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!lr(r,ht(t.criteria)))}function dr(r,e){return r===e||r==="*"&&!vn.includes(e)}function pr(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 fr(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 gt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Ot(r.buffer)}async function mr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function le(){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 Pn(r){let e={};r=et(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=le(),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)=>us(i,o,e),2);return An(JSON.parse(n))}function us(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 An(r){let e=ds(r),{sorted:t,cycles:n}=ls(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],f={...c,request:{...c.request,method:"PUT"}};o.push(f)}return{...r,entry:o}}function ls(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Cn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(oe(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Cn(n,e)}}function ds(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&&Cn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ps(r){r=et(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=le());return Pn(e)}var Qe=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 A={CSS:"text/css",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 de=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},He=class{constructor(){this.emitter=new de}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var xt={"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"},In=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Tt=["DiagnosticReport-update"];function hr(r){return Tt.includes(r)}function yr(r){if(Tt.includes(r))throw new d(h(`'context.version' is required for '${r}'.`))}var kn={"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 On(r){return In.includes(r)}function gr(r){return!!r.endpoint}function vt(r){if(!We(r))throw new d(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return gr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function We(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(!xt[o])return!1;return!(gr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function wn(r,e,t,n){if(typeof e!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!On(e.resourceType))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function fs(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)wn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)wn(r,s,t,n)}}function ms(r,e){let t=new Map,n=kn[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));fs(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function St(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!xt[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(xt).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if(Tt.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return ms(e,i),{timestamp:new Date().toISOString(),id:le(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ke=class extends He{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!We(t))throw new d(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;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 hs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=pr(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 xr(r){return r.split(".").length===3}function Et(r){let[e,t,n]=r.split(".");return hs(t)}function Tr(r){try{return typeof Et(r).login_id=="string"}catch{return!1}}var ys,C=class{constructor(e){this[ys]="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)}};ys=Symbol.toStringTag;var Ge=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Rt)}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?It(t):void 0)}},Rt=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 gs="2.1.15-ab33abfb",Ln=A.FHIR_JSON+", */*; q=0.1",xs="https://api.medplum.com/",Ts=1e3,vs=6e4,Vn="Binary/",Dn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Mn=(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))(Mn||{}),Bn=(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))(Bn||{}),qn=(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))(qn||{}),$n=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))($n||{}),vr=class extends de{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??Ss(),this.storage=t?.storage??new Ge,this.createPdfImpl=t?.createPdf,this.baseUrl=Fn(t?.baseUrl??xs),this.fhirBaseUrl=Fn(bt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=bt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=bt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=bt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??vs,this.cacheTime>0?this.requestCache=new Qe(t?.resourceCacheSize??Ts):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.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,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new C(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,A.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:c,codeChallengeMethod:f}=o;if(!f)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",f),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C((async()=>{let f=await this.get(o,i);if(f.entry)for(let p of f.entry)this.cacheResource(p.resource);return f})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,o.searchParams,i).then(f=>f.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,n,i).then(Un));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(f=>f.relation==="next");if(!a.entry?.length&&!c)break;yield Un(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Dn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new C(Promise.reject(new Error("Missing reference")));if(i==="system")return new C(Promise.resolve(Dn));let[o,s]=i.split("/");return!o||!s?new C(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Xt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=`{
|
|
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 bo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ro.includes(r.value)))}var qe=["true","false"],$e=["!=","!~","<=",">=","{}","->"];function ln(r){return new Q(r,qe,$e).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},Po={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ao={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new X(e,t)},precedence:m.Indexer},Co={parse(r,e){if(!(e instanceof M))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new B(e.name,t)},precedence:m.FunctionCall};function wo(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 ce(){return new me().registerPrefix("String",{parse:(r,e)=>new O({type:u.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new O({type:u.dateTime,value:ae(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new O({type:u.Quantity,value:wo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new O({type:u.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new O({type:u.boolean,value:!0})}).registerPrefix("false",{parse:()=>new O({type:u.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new M(e.value)}).registerPrefix("{}",{parse:()=>new we}).registerPrefix("(",Po).registerInfix("[",Ao).registerInfix("(",Co).prefix("+",m.UnaryAdd,(r,e)=>new Ie("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new b("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new j(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new b("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new b("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new b("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new b("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new ee(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new De(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new Ne(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Fe(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new _e(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new b("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new b("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new b(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new b(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new ke(r,t)).infixLeft("and",m.And,(r,e,t)=>new Ue(r,t)).infixLeft("as",m.As,(r,e,t)=>new J(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Oe(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new b("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Ve(r,t)).infixLeft("is",m.Is,(r,e,t)=>new Y(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new b("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Le(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Me(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Be(r,t))}var Io=ce();function mt(r){return new Ce(r,Io.construct(ln(r)).consumeAndParse())}function te(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 ue(r,t).map(n=>n.value)}function ue(r,e,t){let n=t??{};return mt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var nr=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(nr||{});function ir(r,e){let t=I.types[r]?.searchParamsDetails?.[e.code];return t||(t=Oo(r,e)),t}function ko(r,e,t){let n=I.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Oo(r,e){let t=e.code,n=No(t),i=or(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=je(a);c.length===1&&c[0]instanceof v?o.propertyTypes.add("boolean"):dn(o,je(a),r,1)}let s={columnName:n,type:Fo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ko(r,t,s),s}function dn(r,e,t,n){let i=e[n];if(i instanceof J){r.propertyTypes.add(i.right.toString());return}if(i instanceof B){Vo(r,i);return}let o=i.toString(),s=Re(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof X&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let f of s.type)r.propertyTypes.add(f.code);return}for(let f of s.type){let p=f.code;Do(p)&&(p=s.type[0].code),dn(r,e,p,c)}}function Vo(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 Y){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Do(r){return r==="Element"||r==="BackboneElement"}function No(r){return r.split("-").reduce((e,t,n)=>e+(n?P(t):t),"")}function Fo(r,e){switch(r.type){case"date":return e.size===1&&e.has(u.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(u.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(u.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function or(r,e){let t=[],n=mt(e);return rr(r,n.child,t),t}function _o(r,e){let t=or(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function rr(r,e,t){e instanceof ee?(rr(r,e.left,t),rr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function je(r){return r instanceof J||r instanceof X?[je(r.left),r].flat():r instanceof v?[r]:r instanceof j?[je(r.left),je(r.right)].flat():r instanceof B&&r.name==="where"&&!(r.args[0]instanceof Y)?[]:[r]}var Uo=20,mn=(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))(mn||{}),hn={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"},ar={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Lo(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 yn(r,t)}function cr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return yn(e,r.searchParams.entries())}function Mo(r){return cr(new URL(r,"https://example.com/"))}function ht(r){return cr(new URL(r,"https://api.medplum.com/"))}function yn(r,e){let t={resourceType:r};for(let[n,i]of e)Bo(t,n,i);return t}function Bo(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(".")){sr(r,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":qo(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=pn(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=pn(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=I.types[r.resourceType]?.searchParams?.[n];s?sr(r,gn(s,i,t)):sr(r,Qo(n,i,t))}}}function qo(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 gn(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return $o(r,t);case"reference":case"string":case"token":case"uri":return jo(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function $o(r,e){let{operator:t,value:n}=Ho(e);return{code:r.code,operator:t,value:n}}function jo(r,e,t){return{code:r.code,operator:Ko(e),value:t}}function Qo(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in ar&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ho(r){let e=r.substring(0,2),t=ar[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ko(r){return hn[r]??"eq"}function pn(r){let e=r.split(":");if(e.includes("*"))throw new d(N("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(N(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new d(N(`Invalid include value '${r}'`))}function sr(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Wo=/{{([^{}]+)}}/g;function Go(r,e){return r=r.replaceAll(Wo,(t,n)=>{let i=ue(n,[],e);return i.length!==1?"":tr(i[0])}),ht(r)}function zo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Jo(t))),r.sortRules&&r.sortRules.length>0&&e.push(Yo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(fn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(fn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Jo(r){let e=r.operator in hn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in ar?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Yo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function fn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function lr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Xo(r,e,t))return!1}return!0}function Xo(r,e,t){let n=I.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=te(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Zo(r,t,n);case"string":case"uri":return xn(r,t,n);case"token":return es(r,t,n);case"date":return rs(r,t,n);default:return!1}}function Zo(r,e,t){let n=te(t.expression,r),i=yt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function es(r,e,t){return ir(r.resourceType,t).type==="BOOLEAN"?ts(r,e,t):xn(r,e,t,!0)}function ts(r,e,t){let n=te(t.expression,r),i=e.value==="true",o=n.includes(i);return yt(e.operator)?!o:o}function xn(r,e,t,n){let i=te(t.expression,r),o=e.value.split(","),s=yt(e.operator);for(let a of i)for(let c of o)if(ur(a,e.operator,c,n))return!s;return s}function ur(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ur(r,e,o,!1)&&(!s||ur(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 rs(r,e,t){let n=te(t.expression,r),i=e.value.split(","),o=yt(e.operator);for(let s of n)for(let a of i)if(ns(s,e.operator,a))return!o;return o}function ns(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 yt(r){return r==="ne"||r==="not"}var is={resourceType:"*"},Tn=["DomainConfiguration","JsonWebKey","Login"],vn=["PasswordChangeRequest","Project","ProjectMembership","User"],Sn=(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))(Sn||{}),os=["read","vread","history","history-instance"];function ss(r,e){if(r.resource){for(let t of r.resource)if(dr(t.resourceType,e))return!0}return!1}function En(r,e){if(Tn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(dr(t.resourceType,e)&&!t.readonly)return!0}return!1}function as(r,e){let t=e.resourceType;return En(r,t)?Rn(r,e,!1):!1}function Rn(r,e,t){if(r.resource){for(let n of r.resource)if(bn(e,t?"read":"update",n))return!0}return!1}function cs(r,e,t){if(!t)return is;if(t.resource){for(let n of t.resource)if(bn(r,e,n))return n}}function bn(r,e,t){let n=r.resourceType;return!(!dr(t.resourceType,n)||t.readonly&&!os.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!lr(r,ht(t.criteria)))}function dr(r,e){return r===e||r==="*"&&!vn.includes(e)}function pr(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 fr(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 gt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Ot(r.buffer)}async function mr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function le(){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 Pn(r){let e={};r=et(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=le(),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)=>us(i,o,e),2);return An(JSON.parse(n))}function us(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 An(r){let e=ds(r),{sorted:t,cycles:n}=ls(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],f={...c,request:{...c.request,method:"PUT"}};o.push(f)}return{...r,entry:o}}function ls(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Cn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(oe(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Cn(n,e)}}function ds(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&&Cn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ps(r){r=et(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=le());return Pn(e)}var Qe=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 A={CSS:"text/css",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 de=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},He=class{constructor(){this.emitter=new de}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var xt={"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"},In=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Tt=["DiagnosticReport-update"];function hr(r){return Tt.includes(r)}function yr(r){if(Tt.includes(r))throw new d(h(`'context.version' is required for '${r}'.`))}var kn={"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 On(r){return In.includes(r)}function gr(r){return!!r.endpoint}function vt(r){if(!We(r))throw new d(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return gr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function We(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(!xt[o])return!1;return!(gr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function wn(r,e,t,n){if(typeof e!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!On(e.resourceType))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function fs(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)wn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)wn(r,s,t,n)}}function ms(r,e){let t=new Map,n=kn[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));fs(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function St(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!xt[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(xt).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if(Tt.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return ms(e,i),{timestamp:new Date().toISOString(),id:le(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ke=class extends He{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!We(t))throw new d(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;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 hs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=pr(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 xr(r){return r.split(".").length===3}function Et(r){let[e,t,n]=r.split(".");return hs(t)}function Tr(r){try{return typeof Et(r).login_id=="string"}catch{return!1}}var ys,C=class{constructor(e){this[ys]="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)}};ys=Symbol.toStringTag;var Ge=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Rt)}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?It(t):void 0)}},Rt=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 gs="2.1.17-bc1bf0d7",Ln=A.FHIR_JSON+", */*; q=0.1",xs="https://api.medplum.com/",Ts=1e3,vs=6e4,Vn="Binary/",Dn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Mn=(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))(Mn||{}),Bn=(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))(Bn||{}),qn=(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))(qn||{}),$n=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))($n||{}),vr=class extends de{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??Ss(),this.storage=t?.storage??new Ge,this.createPdfImpl=t?.createPdf,this.baseUrl=Fn(t?.baseUrl??xs),this.fhirBaseUrl=Fn(bt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=bt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=bt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=bt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??vs,this.cacheTime>0?this.requestCache=new Qe(t?.resourceCacheSize??Ts):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.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,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new C(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,A.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:c,codeChallengeMethod:f}=o;if(!f)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",f),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C((async()=>{let f=await this.get(o,i);if(f.entry)for(let p of f.entry)this.cacheResource(p.resource);return f})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,o.searchParams,i).then(f=>f.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,n,i).then(Un));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(f=>f.relation==="next");if(!a.entry?.length&&!c)break;yield Un(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Dn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new C(Promise.reject(new Error("Missing reference")));if(i==="system")return new C(Promise.resolve(Dn));let[o,s]=i.split("/");return!o||!s?new C(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Xt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|