@medplum/core 5.0.10 → 5.0.12
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 +8 -8
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/index.d.ts +73 -9
- package/dist/esm/index.d.ts +73 -9
- package/dist/esm/index.mjs +8 -8
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +4 -4
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var Kt=Object.defineProperty;var ys=Object.getOwnPropertyDescriptor;var gs=Object.getOwnPropertyNames;var xs=Object.prototype.hasOwnProperty;var vs=(r,e,t)=>e in r?Kt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Ts=(r,e)=>{for(var t in e)Kt(r,t,{get:e[t],enumerable:!0})},Ss=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of gs(e))!xs.call(r,i)&&i!==t&&Kt(r,i,{get:()=>e[i],enumerable:!(n=ys(e,i))||n.enumerable});return r};var bs=r=>Ss(Kt({},"__esModule",{value:!0}),r);var c=(r,e,t)=>vs(r,typeof e!="symbol"?e+"":e,t);var mp={};Ts(mp,{AccessPolicyInteraction:()=>Re,AckCode:()=>jl,AndAtom:()=>wt,ArithemticOperatorAtom:()=>M,AsAtom:()=>he,BooleanInfixOperatorAtom:()=>P,CPT:()=>Ps,ClientStorage:()=>et,ConcatAtom:()=>Tt,ContainsAtom:()=>St,ContentType:()=>w,DEFAULT_ACCEPT:()=>$o,DEFAULT_MAX_SEARCH_COUNT:()=>jc,DEFAULT_SEARCH_COUNT:()=>qc,DataSampler:()=>_r,DotAtom:()=>z,EmptySetAtom:()=>xt,EqualsAtom:()=>Et,EquivalentAtom:()=>Ct,EventTarget:()=>wr,ExternalSecretSystems:()=>Yu,FHIRCAST_EVENT_NAMES:()=>Ar,FHIRCAST_EVENT_RESOURCES:()=>Mo,FHIRCAST_EVENT_VERSION_REQUIRED:()=>Or,FHIRCAST_RESOURCE_TYPES:()=>Do,FhirFilterComparison:()=>Gt,FhirFilterConnective:()=>zt,FhirFilterNegation:()=>Qt,FhirPathAtom:()=>fe,FhircastConnection:()=>Lt,FileBuilder:()=>hi,FunctionAtom:()=>re,HTTP_HL7_ORG:()=>zr,HTTP_TERMINOLOGY_HL7_ORG:()=>Os,Hl7Context:()=>ye,Hl7Field:()=>K,Hl7Message:()=>yi,Hl7Segment:()=>nt,ICD10:()=>ws,ImpliesAtom:()=>It,InAtom:()=>bt,IndexerAtom:()=>Ee,InfixOperatorAtom:()=>se,IsAtom:()=>be,LOINC:()=>Es,LRUCache:()=>Pe,LiteralAtom:()=>U,LogLevel:()=>Be,LogLevelNames:()=>ps,Logger:()=>gi,MEDPLUM_CLI_CLIENT_ID:()=>Uu,MEDPLUM_RELEASES_URL:()=>fs,MEDPLUM_VERSION:()=>Mr,MedplumClient:()=>qt,MedplumKeyValueClient:()=>Ut,MemoryStorage:()=>Vr,MockAsyncClientStorage:()=>ri,NDC:()=>As,NotEqualsAtom:()=>Rt,NotEquivalentAtom:()=>Pt,OAuthClientAssertionType:()=>Go,OAuthGrantType:()=>Ne,OAuthSigningAlgorithm:()=>Qu,OAuthTokenAuthMethod:()=>Gu,OAuthTokenType:()=>Ho,OperationOutcomeError:()=>f,Operator:()=>h,OperatorPrecedence:()=>x,OrAtom:()=>At,Parser:()=>Xt,ParserBuilder:()=>ot,PrefixOperatorAtom:()=>it,PropertyType:()=>d,RXNORM:()=>Cs,ReadablePromise:()=>L,ReconnectingWebSocket:()=>Bt,SNOMED:()=>Rs,SearchParameterType:()=>oe,SubscriptionEmitter:()=>rt,SubscriptionManager:()=>Wt,SymbolAtom:()=>_,Tokenizer:()=>me,TransformMapCollection:()=>Br,TypedEventTarget:()=>J,UCUM:()=>Qr,UnaryOperatorAtom:()=>vt,UnionAtom:()=>Se,VALID_HOSTNAME_REGEX:()=>oo,XorAtom:()=>Ot,accepted:()=>Us,accessPolicySupportsInteraction:()=>Qn,addProfileToResource:()=>ec,allOk:()=>Is,append:()=>G,applyDefaultValuesToElement:()=>ul,applyDefaultValuesToResource:()=>cl,applyFixedOrPatternValue:()=>$t,arrayBufferToBase64:()=>Vn,arrayBufferToHex:()=>kn,arrayify:()=>ke,assert:()=>Uo,assertContextVersionOptional:()=>Xn,assertOk:()=>Ys,assertReleaseManifest:()=>hs,badRequest:()=>b,booleanToTypedValue:()=>m,buildCdsRequest:()=>Pu,buildElementsContext:()=>Fr,buildTypeName:()=>ho,businessRule:()=>js,calculateAge:()=>mt,calculateAgeString:()=>Pa,canReadResourceType:()=>hu,canWriteResource:()=>yu,canWriteResourceType:()=>mu,capitalize:()=>k,checkForNull:()=>xi,checkIfValidMedplumVersion:()=>dp,clearReleaseCache:()=>pp,compressElement:()=>ea,concatUrls:()=>j,conceptMapTranslate:()=>li,conflict:()=>Bs,convertContainedResourcesToBundle:()=>Ru,convertToSearchableDates:()=>Wn,convertToSearchableNumbers:()=>_c,convertToSearchableQuantities:()=>Lc,convertToSearchableReferences:()=>jn,convertToSearchableStrings:()=>qn,convertToSearchableTokens:()=>$n,convertToSearchableUris:()=>Fc,convertToTransactionBundle:()=>Oo,crawlTypedValue:()=>cr,crawlTypedValueAsync:()=>ca,createConstraintIssue:()=>sn,createFhircastMessagePayload:()=>kr,createOperationOutcomeIssue:()=>ge,createProcessingIssue:()=>an,createReference:()=>xe,createStructureIssue:()=>S,created:()=>ks,decodeBase64:()=>Ao,decodeBase64Url:()=>zn,deepClone:()=>Te,deepEquals:()=>ue,deepIncludes:()=>je,deriveIdentifierSearchParameter:()=>Xl,encodeBase64:()=>_t,encodeBase64Url:()=>Tu,encryptSHA256:()=>Jn,ensureNoLeadingSlash:()=>io,ensureTrailingSlash:()=>Tr,escapeHtml:()=>ic,evalFhirPath:()=>Mc,evalFhirPathTyped:()=>C,evalSqlOnFhir:()=>sp,expandSampledData:()=>oi,expandSampledObservation:()=>rl,extractAccountReferences:()=>gr,fetchLatestVersionString:()=>fp,fetchVersionManifest:()=>Gr,fhirPathArrayEquals:()=>En,fhirPathArrayEquivalent:()=>fr,fhirPathArrayNotEquals:()=>Rn,fhirPathEquals:()=>$e,fhirPathEquivalent:()=>Hi,fhirPathIs:()=>dt,fhirPathNot:()=>bn,fhirTypeToJsType:()=>lr,findCodeBySystem:()=>Ua,findObservationInterval:()=>qa,findObservationReferenceRange:()=>ja,findObservationReferenceRanges:()=>eo,findResourceByCode:()=>Xa,findResourceInBundle:()=>Cu,flatMapFilter:()=>nc,forbidden:()=>Ds,formatAddress:()=>ao,formatCodeableConcept:()=>He,formatCoding:()=>Un,formatDate:()=>ac,formatDateTime:()=>Sr,formatFamilyName:()=>sc,formatGivenName:()=>oc,formatHl7DateTime:()=>ls,formatHumanName:()=>ze,formatMoney:()=>mc,formatObservationValue:()=>uo,formatPeriod:()=>cc,formatQuantity:()=>pe,formatRange:()=>hc,formatReferenceString:()=>so,formatSearchQuery:()=>Zc,formatTime:()=>co,formatTiming:()=>dc,generateId:()=>ie,getAllDataTypes:()=>dn,getAllQuestionnaireAnswers:()=>Aa,getBuffer:()=>Cr,getCodeBySystem:()=>yr,getDataType:()=>ae,getDateProperty:()=>Ca,getDefaultValuesForNewSliceEntry:()=>ll,getDisplayString:()=>zi,getElementDefinition:()=>ht,getElementDefinitionFromElements:()=>yo,getElementDefinitionTypeName:()=>nr,getExpressionForResourceType:()=>ip,getExpressionsForResourceType:()=>bi,getExtension:()=>ce,getExtensionValue:()=>Ia,getIdentifier:()=>Xi,getImageSrc:()=>Ra,getInnerDerivedIdentifierExpression:()=>vi,getNestedProperty:()=>Ie,getParsedDerivedIdentifierExpression:()=>Ti,getParsedExpressionForResourceType:()=>Si,getPathDifference:()=>le,getPathDisplayName:()=>bc,getPropertyDisplayName:()=>mo,getQueryString:()=>Fn,getQuestionnaireAnswers:()=>wa,getRandomString:()=>Pr,getReferenceString:()=>V,getResourceTypes:()=>vc,getSearchParameter:()=>Sc,getSearchParameterDetails:()=>Yl,getSearchParameters:()=>Tc,getStatus:()=>Xs,getTypedPropertyValue:()=>I,getTypedPropertyValueWithPath:()=>ur,getTypedPropertyValueWithSchema:()=>ji,getTypedPropertyValueWithoutSchema:()=>$i,getValueSliceName:()=>ai,getWebSocketUrl:()=>Ln,getWindow:()=>vu,globalSchema:()=>N,gone:()=>Ms,indexConceptMapCodings:()=>Ko,indexDefaultSearchParameters:()=>yn,indexSearchParameter:()=>Er,indexSearchParameterBundle:()=>xc,indexStructureDefinitionBundle:()=>or,inflateBaseSchema:()=>cn,inflateElement:()=>Vi,initFhirPathParserBuilder:()=>Ke,invalidSearchOperator:()=>nu,isAccepted:()=>Hs,isBrowserEnvironment:()=>B,isCodeableConcept:()=>mr,isCoding:()=>hr,isCompletedSubscriptionRequest:()=>Yn,isComplexTypeCode:()=>xr,isConflict:()=>zs,isContextVersionRequired:()=>Kn,isCreated:()=>$s,isDataTypeLoaded:()=>fn,isDateString:()=>Cn,isDateTimeString:()=>Ve,isEmpty:()=>E,isError:()=>tr,isFhirCriteriaMet:()=>Bo,isFhircastResourceType:()=>_o,isGone:()=>Js,isJwt:()=>Zn,isLowerCase:()=>Ba,isMedplumAccessToken:()=>ei,isNodeEnvironment:()=>xu,isNotFound:()=>Qs,isObject:()=>R,isOk:()=>rr,isOperationOutcome:()=>st,isPeriod:()=>Pn,isPopulated:()=>Z,isPrimitiveType:()=>ut,isProfileLoaded:()=>hn,isProfileResource:()=>Qi,isQuantity:()=>A,isQuantityEquivalent:()=>wn,isRedirect:()=>Gs,isReference:()=>q,isResource:()=>O,isResourceType:()=>ct,isResourceTypeSchema:()=>ar,isResourceWithId:()=>Ge,isSliceDefinitionWithTypes:()=>si,isString:()=>De,isStringArray:()=>In,isTextObject:()=>Yi,isTypedValue:()=>Cc,isUUID:()=>Na,isUnauthenticated:()=>Ks,isValidDate:()=>br,isValidHostname:()=>Za,isValidMedplumSemver:()=>ms,lazy:()=>_n,loadDataType:()=>sr,locationUtils:()=>ne,mapByIdentifier:()=>tc,matchDiscriminant:()=>pr,matchesRange:()=>Mn,matchesSearchRequest:()=>Mt,multipleMatches:()=>Fs,normalizeArrayBufferView:()=>Dn,normalizeCreateBinaryOptions:()=>ii,normalizeCreatePdfOptions:()=>Qo,normalizeErrorString:()=>Ae,normalizeOperationOutcome:()=>at,notFound:()=>tn,notModified:()=>Vs,operationOutcomeIssueToString:()=>ki,operationOutcomeToString:()=>on,parseFhirPath:()=>Dt,parseFilterParameter:()=>ql,parseHl7DateTime:()=>Hl,parseJWTPayload:()=>Nt,parseLogLevel:()=>Ql,parseMappingLanguage:()=>xl,parseParameter:()=>bo,parseReference:()=>Sa,parseSearchRequest:()=>Xe,parseStructureDefinition:()=>ir,parseXFhirQuery:()=>Yc,pathToJSONPointer:()=>la,preciseEquals:()=>za,preciseGreaterThan:()=>Ka,preciseGreaterThanOrEquals:()=>no,preciseLessThan:()=>Ja,preciseLessThanOrEquals:()=>ro,preciseRound:()=>Qa,preconditionFailed:()=>_s,projectAdminResourceTypes:()=>Ro,protectedResourceTypes:()=>Eo,readInteractions:()=>Co,redirect:()=>qs,removeDuplicates:()=>pt,removeProfileFromResource:()=>rc,reorderBundle:()=>Io,replaceQueryVariables:()=>Vo,resolveId:()=>ve,resourceMatchesSubscriptionCriteria:()=>Fu,satisfiedAccessPolicy:()=>Po,serializeError:()=>Jt,serializeFhircastSubscriptionRequest:()=>Ir,serverError:()=>nn,serverTimeout:()=>Ws,setCodeBySystem:()=>Wa,setIdentifier:()=>Oa,singleton:()=>Q,singularize:()=>Ya,sleep:()=>vr,sortStringArray:()=>gt,splitN:()=>Qe,splitSearchOnComma:()=>Ye,streamToBuffer:()=>op,stringify:()=>yt,stringifyTypedValue:()=>Bn,structureMapTransform:()=>vl,subsetResource:()=>na,summarizeObservations:()=>Zu,toJsBoolean:()=>F,toPeriod:()=>ft,toTypedValue:()=>T,tooManyRequests:()=>Ns,trimTrailingEmptyElements:()=>Da,tryGetDataType:()=>qe,tryGetJwtExpiration:()=>ti,tryGetProfile:()=>mn,typedValueToString:()=>Nn,unauthorized:()=>we,unauthorizedTokenAudience:()=>er,unauthorizedTokenExpired:()=>rn,unsupportedMediaType:()=>Ls,validateFhircastSubscriptionRequest:()=>Ft,validateResource:()=>fa,validateResourceType:()=>zl,validateTypedValue:()=>Ui,validationError:()=>g,validationRegexes:()=>lt,warnIfNewerVersionAvailable:()=>hp,wordWrap:()=>cs});module.exports=bs(mp);var it=class{constructor(e,t){c(this,"operator");c(this,"child");this.operator=e,this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},se=class{constructor(e,t,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=t,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},ot=class{constructor(){c(this,"prefixParselets",{});c(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 Xt(e,this.prefixParselets,this.infixParselets)}},Xt=class{constructor(e,t,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");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 new 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 new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw new Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var Pe=class{constructor(e=10){c(this,"max");c(this,"cache");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 Qr="http://unitsofmeasure.org",Es="http://loinc.org",Rs="http://snomed.info/sct",Cs="http://www.nlm.nih.gov/research/umls/rxnorm",Ps="http://www.ama-assn.org/go/cpt",ws="http://hl7.org/fhir/sid/icd-10",As="http://hl7.org/fhir/sid/ndc",zr="http://hl7.org",Os="http://terminology.hl7.org";var Yt="created",Jr="gone",Kr="not-modified",Xr="found",Yr="not-found",Zr="conflict",en="unauthorized",Ri="forbidden",Ci="precondition-failed",Pi="unsupported-media-type",wi="multiple-matches",Ai="too-many-requests",Zt="accepted",Oi="server-timeout",Ii="business-rule",Is={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ks={resourceType:"OperationOutcome",id:Yt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Vs={resourceType:"OperationOutcome",id:Kr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},tn={resourceType:"OperationOutcome",id:Yr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},we={resourceType:"OperationOutcome",id:en,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},rn={...we,issue:[...we.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},er={...we,issue:[...we.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},Ds={resourceType:"OperationOutcome",id:Ri,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ms={resourceType:"OperationOutcome",id:Jr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},_s={resourceType:"OperationOutcome",id:Ci,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Ls={resourceType:"OperationOutcome",id:Pi,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Fs={resourceType:"OperationOutcome",id:wi,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Ns={resourceType:"OperationOutcome",id:Ai,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Us(r){return{resourceType:"OperationOutcome",id:Zt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function b(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function Bs(r,e){return{resourceType:"OperationOutcome",id:Zr,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:r}}]}}function g(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function nn(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Ws(r){return{resourceType:"OperationOutcome",id:Oi,issue:[{severity:"error",code:"timeout",details:{text:r??"Server timeout"}}]}}function qs(r){let e=r.toString();return{resourceType:"OperationOutcome",id:Xr,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function js(r,e){return{resourceType:"OperationOutcome",id:Ii,issue:[{severity:"error",code:"business-rule",details:{id:r,text:e}}]}}function tr(r){return!r||typeof r!="object"?!1:r instanceof Error||typeof DOMException<"u"&&r instanceof DOMException?!0:Object.prototype.toString.call(r)==="[object Error]"}function st(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function rr(r){return r.id==="ok"||r.id===Yt||r.id===Kr||r.id===Zt}function $s(r){return r.id===Yt}function Hs(r){return r.id===Zt}function Gs(r){return r.id===Xr}function Qs(r){return r.id===Yr}function zs(r){return r.id===Zr}function Js(r){return r.id===Jr}function Ks(r){return r.id===en}function Xs(r){switch(r.id){case"ok":return 200;case Yt:return 201;case Zt:return 202;case Xr:return 302;case Kr:return 304;case en:return 401;case Ri:return 403;case Yr:return 404;case Zr:return 409;case Jr:return 410;case Ci:case wi:return 412;case Pi:return 415;case Ii:return 422;case Ai:return 429;case Oi:return 504;default:return r.issue?.[0]?.code==="exception"?500:400}}function Ys(r,e){if(!rr(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(t,n){super(on(t),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=t}};function at(r){return r instanceof f?r.outcome:st(r)?r:b(Ae(r))}function Ae(r){return r?typeof r=="string"?r:tr(r)?r.message:st(r)?on(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function on(r){let e=r.issue?.map(ki)??[];return e.length>0?e.join("; "):"Unknown error"}function ki(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 ge(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function S(r,e){return ge("error","structure",e,r)}function sn(r,e){return ge("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function an(r,e,t,n){return ge("error","processing",e,r,{...n,error:t})}var Zs={"http://hl7.org/fhirpath/System.String":"string"};function ea(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:Zs[t.code]??t.code})),e}function Vi(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function cn(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,type:t,path:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Vi(i,o)])),constraints:[],innerTypes:[]};return e}var Di={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"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},DosageDoseAndRate:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{type:[{code:"CodeableConcept"}]},"dose[x]":{type:[{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},"rate[x]":{type:[{code:"Ratio"},{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},label:{min:1,type:[{code:"string"}]},"value[x]":{min:1,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"}]}}},ElementDefinitionConstraint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},key:{min:1,type:[{code:"id"}]},requirements:{type:[{code:"string"}]},severity:{min:1,type:[{code:"code"}]},human:{min:1,type:[{code:"string"}]},expression:{type:[{code:"string"}]},xpath:{type:[{code:"string"}]},source:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},ElementDefinitionBinding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},strength:{min:1,type:[{code:"code"}]},description:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]}}},ElementDefinitionMapping:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},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"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"bounds[x]":{type:[{code:"Duration"},{code:"Range"},{code:"Period"}]},count:{type:[{code:"positiveInt"}]},countMax:{type:[{code:"positiveInt"}]},duration:{type:[{code:"decimal"}]},durationMax:{type:[{code:"decimal"}]},durationUnit:{type:[{code:"code"}]},frequency:{type:[{code:"positiveInt"}]},frequencyMax:{type:[{code:"positiveInt"}]},period:{type:[{code:"decimal"}]},periodMax:{type:[{code:"decimal"}]},periodUnit:{type:[{code:"code"}]},dayOfWeek:{max:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},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"}]}}},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 ir(r){return new ln(r).parse()}var Oe=cn(Di),pn=Object.create(null),Mi=Object.create(null),ra={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function Ni(r){let e;return e=Mi[r],e||(e=Mi[r]=Object.create(null)),e}function or(r){let t=(Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");yn(t);for(let n of t)sr(n)}function sr(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=ir(r),t=ra[r.url],n,i;t?(n=Oe,i=t):r.url===`http://hl7.org/fhir/StructureDefinition/${r.type}`||r.url===`https://medplum.com/fhir/StructureDefinition/${r.type}`||r.type?.startsWith("http://")||r.type?.startsWith("https://")?(n=Oe,i=r.type):(n=Ni(r.url),i=r.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;pn[r.url]=e}function dn(){return Oe}function fn(r){return!!Oe[r]}function qe(r,e){if(e){let t=Ni(e)[r];if(t)return t}return Oe[r]}function ae(r,e){let t=qe(r,e);if(!t)throw new f(b("Unknown data type: "+r));return t}function ct(r){let e=Oe[r];return e&&ar(e)}function hn(r){return!!pn[r]}function mn(r){return pn[r]}var ln=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");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,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:aa(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=un(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[un(e,n.path)]=t;break}n=n.parent}if(!n){let i=un(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),this.slicingContext&&!We(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!We(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let t=nr(e);this.backboneContext={type:{name:t,type:t,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:We(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){sa(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&&!We(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!We(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}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=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(We(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=nr(e)),n||(n=ce(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Li(e.max),n=e.base?.max?Li(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:Fi(I(i,"fixed[x]")),pattern:Fi(I(i,"pattern[x]")),binding:e.binding}}};function na(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Oe[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+k(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!ia.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(_i):[_i]},r}var _i={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},ia=["resourceType","id","meta"];function Li(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function un(r,e=""){return oa(r.path,e)}function oa(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function We(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Fi(r){return Array.isArray(r)&&r.length>0?r[0]:E(r)?void 0:r}function sa(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 aa(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}function cr(r,e,t){new gn(r,e,t).crawl()}function ca(r,e,t){return new xn(r,e,t).crawl()}var gn=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??ae(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=Ie(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)for(let a of ke(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!ut(e.type)){let n=ae(e.type);this.crawlObject(e,n,t)}}},xn=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??ae(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=Ie(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)for(let a of ke(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!ut(e.type)){let n=ae(e.type);await this.crawlObject(e,n,t)}}};function Ie(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?ur:I,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let u=[];for(let l of s)if(Array.isArray(l))for(let p of l)u.push(n(p,a,t));else(t?.withPath&&l?.value!==void 0||!t?.withPath&&l!==void 0)&&u.push(n(l,a,t));s=u}return s}function ur(r,e,t){let n=r.path;return ua(I(r,e,t),n,e)}function ua(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}function la(r){return`.${r}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,t)=>`/${t}`)}var lr={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},pa=new Pe(1e3);function ut(r){return r==="undefined"||r in lr}var lt={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},da={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function fa(r,e){if(!ct(r.resourceType))throw new f(g("Invalid resource type"));return Ui(T(r),e)}function Ui(r,e){return new vn(r,e).validate()}var vn=class{constructor(e,t){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],O(e.value)&&this.resourceStack.push(e.value),t?.profile?this.schema=ir(t.profile):this.schema=ae(e.type),this.collect=t?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){Tn(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),cr(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new f({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,t.path)}onEnterResource(e,t){this.resourceStack.push(t.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(S(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(S(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(S(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),ya(a,s)||this.issues.push(S(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of u){this.constraintsCheck(p,s),this.referenceTypeCheck(p,s),this.checkPropertyValue(p),this.collectValue(p,s);let y=ga(p,s.slicing);y&&l&&(l[y]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(S(e.path,"Missing required property")),!1):E(e)?(this.issues.push(S(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){ut(e.type)?this.validatePrimitiveType(e):E(e.value)&&this.issues.push(S(e.path,"Invalid empty non-primitive value"))}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(S(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=ma(e,s,t);if(a){let u,l;a.startsWith("_")?(u=a.slice(1),l=s.slice(1)):(u="_"+a,l="_"+s),u in o&&o[u]!==l&&this.issues.push(ge("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(ge("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(S(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t){let n=t.constraints;if(n){for(let i of n)if(i.severity==="error"&&!(i.key in da)&&!this.isExpressionTrue(i,e)){this.issues.push(sn(e.path,i));return}}}referenceTypeCheck(e,t){if(e.type!=="Reference")return;let n=e.value;if(!q(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=t.type.find(y=>y.code==="Reference")?.targetProfile;if(!o)return;let s=zr+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,l="https://medplum.com/fhir/StructureDefinition/",p=l+i;for(let y of o)if(y===a||y===u||y===p||!y.startsWith(s)&&!y.startsWith(l))return;this.issues.push(ge("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,t){t.binding?.valueSet&&t.binding.strength==="required"&&va(e.type)&&this.appendToken(t.binding.valueSet,e)}appendToken(e,t){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}if(n?.length){for(let i of n)if(i.path===t.path)return}this.collect.tokens[e]=G(n,t)}isExpressionTrue(e,t){let n={"%context":t,"%ucum":T(Qr)},i=this.currentResource();i&&(n["%resource"]=T(i)),O(this.root.value)&&(n["%rootResource"]=this.root);try{let o=C(e.expression,[t],n,pa);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(an(t.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[t,n]=xa(e),i=e.path;if(t){let{type:o,value:s}=t;if(!(o in lr)){this.issues.push(S(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=lr[o];if(typeof s!==a){s!==null&&this.issues.push(S(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&cr(n,this,{schema:ae("Element"),initialPath:i})}validateString(e,t,n){if(!e.trim()){this.issues.push(S(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(S(n,"String cannot be larger than 1 MB"));return}let i=lt[t];i&&!i.exec(e)&&this.issues.push(S(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(S(n,"Invalid numeric value")):ha(t)&&!Number.isInteger(e)?this.issues.push(S(n,"Expected number to be an integer")):t===d.positiveInt&&e<=0?this.issues.push(S(n,"Expected number to be positive")):t===d.unsignedInt&&e<0&&this.issues.push(S(n,"Expected number to be non-negative"))}};function ha(r){return r===d.integer||r===d.positiveInt||r===d.unsignedInt}function ma(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return I(r,o)?n+a:void 0}}function Tn(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(S(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(S(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(S(`${o}[${a}]`,"Invalid null value")):i[a]&&Tn(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Tn(i,o,t)}}function ya(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!je(t,e.pattern)||e.fixed&&!ue(t,e.fixed))}function pr(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return je(r,i.pattern);if(i.fixed)return ue(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ga(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>ke(Ie(r,n.path))?.some(i=>pr(i,n,t))))return t.name}}function xa(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function va(r){switch(r){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function m(r){return[{type:d.boolean,value:r}]}function T(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:d.integer,value:r}:typeof r=="number"?{type:d.decimal,value:r}:typeof r=="boolean"?{type:d.boolean,value:r}:typeof r=="string"?{type:d.string,value:r}:A(r)?{type:d.Quantity,value:r}:O(r)?{type:r.resourceType,value:r}:mr(r)?{type:d.CodeableConcept,value:r}:hr(r)?{type:d.Coding,value:r}:{type:d.BackboneElement,value:r}}function F(r){return r.length===0?!1:!!r[0].value}function Q(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function I(r,e,t){if(!r.value)return;let n=ht(r.type,e,t?.profileUrl);return n?ji(r,e,n):$i(r,e)}function ji(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a,u=t.path.lastIndexOf("."),l=t.path.substring(u+1);for(let p of i){let y=l.replace("[x]",k(p.code));if(o=n[y],a=n["_"+y],o!==void 0||a!==void 0){s=p.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let p=0;p<Math.max(o.length,a.length);p++)o[p]=Sn(o[p],a[p])}else if(!o&&Array.isArray(a)){o=a.slice();for(let p=0;p<a.length;p++)o[p]=Sn(void 0,a[p])}else o=Sn(o,a);if(!E(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(p=>Bi(p,s)):Bi(o,s)}function Bi(r,e){return e==="Resource"&&O(r)&&(e=r.resourceType),{type:e,value:r}}function $i(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t){let i=t[e];Array.isArray(i)?n=i.map(T):n=T(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(d)){let s=i+k(o);if(s in t){let a=t[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||E(n[0]))return}else if(E(n))return;return n}function pt(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(F($e(t,i))){n=!0;break}n||e.push(t)}return e}function bn(r){return m(!F(r))}function En(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?m(!1):m(r.every((t,n)=>F($e(t,e[n]))))}function Rn(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?m(!0):m(r.some((t,n)=>!F($e(t,e[n]))))}function $e(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?m(Math.abs(t-n)<1e-8):A(t)&&A(n)?m(wn(t,n)):m(typeof t=="object"&&typeof n=="object"?An(r,e):t===n)}function fr(r,e){return r.length===0&&e.length===0?m(!0):r.length!==e.length?m(!1):(r.sort(Wi),e.sort(Wi),m(r.every((t,n)=>F(Hi(t,e[n])))))}function Hi(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"?m(Math.abs(s-a)<.01):A(s)&&A(a)?m(wn(s,a)):m(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"?An({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Wi(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 dt(r,e){let{value:t}=r;if(t==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return Cn(t);case"DateTime":return Ve(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Pn(t);case"Quantity":return A(t);default:return r.type===n||typeof t=="object"&&t?.resourceType===n}}function Cn(r){return typeof r=="string"&&!!lt.date.exec(r)}function Ve(r){return typeof r=="string"&&!!lt.dateTime.exec(r)}function Pn(r){return!!(r&&typeof r=="object"&&("start"in r&&Ve(r.start)||"end"in r&&Ve(r.end)))}function ft(r){if(r){if(Cn(r)||Ve(r))return{start:dr(r,"0000-01-01T00:00:00.000"),end:dr(r,"xxxx-12-31T23:59:59.999")};if(Pn(r))return{start:r.start?dr(r.start,"0000-01-01T00:00:00.000"):void 0,end:r.end?dr(r.end,"xxxx-12-31T23:59:59.999"):void 0}}}function dr(r,e){let t="Z",n=Math.max(r.indexOf("+",10),r.indexOf("-",10));n>-1?(t=r.substring(n),r=r.substring(0,n)):r.endsWith("Z")&&(r=r.substring(0,r.length-1));let i=r+e.substring(r.length)+t;return new Date(i).toISOString()}function A(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function wn(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 An(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(qi(o)&&qi(s)){if(!An(o,s))return!1}else if(o!==s)return!1}return!0}function qi(r){return r!==null&&typeof r=="object"}function Sn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Ta(r??{},e)}return r}function Ta(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Ge(r,e){return O(r,e)&&"id"in r&&typeof r.id=="string"}function xe(r){let e=V(r)??"undefined/undefined",t=zi(r);return t===e?{reference:e}:{reference:e,display:t}}function V(r){if(q(r))return r.reference;if(Ge(r))return`${r.resourceType}/${r.id}`}function ve(r){if(r)return q(r)?r.reference.split("/")[1]:r.id}function Sa(r){if(r?.reference===void 0)throw new f(g("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(g("Unable to parse reference string."));return[e,t]}function gr(r){if(r)if(r.accounts&&r.account){let e=r.accounts;return e.some(t=>t.reference===r.account?.reference)?e:[r.account,...e]}else return ke(r.accounts??r.account)}function Qi(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function zi(r){if(Qi(r)){let e=ba(r);if(e)return e}if(r.resourceType==="Device"){let e=Ea(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return He(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),mr(e))return He(e);if(Yi(e))return e.text}return V(r)??""}function ba(r){let e=r.name;if(e&&e.length>0)return ze(e[0])}function Ea(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ra(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Gi(t);if(n)return n}else return Gi(e)}function Gi(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Ca(r){return r?new Date(r):void 0}function mt(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),p=a-i;(u<o||u===o&&l<s)&&p--;let y=a*12+u-(i*12+o);l<s&&y--;let v=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:y,days:v}}function Pa(r,e){let{years:t,months:n,days:i}=mt(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 wa(r){let e={};return Ji(r.item,e),e}function Ji(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Ji(t.item,e)}function Aa(r){let e={};return Ki(r.item,e),e}function Ki(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),Ki(t.item,e)}function Xi(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 Oa(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 Ia(r,...e){let t=ce(r,...e);if(!t)return;let n=I({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function ce(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function yt(r,e){let t=On(r);return JSON.stringify(t,null,e?2:void 0)??""}function On(r){if(!(r==null||r===""))return typeof r=="object"?Array.isArray(r)?ka(r):Va(r):r}function ka(r){let e=r.length;if(e===0)return;let t,n=0;for(let i=0;i<e;i++){let o=r[i],s=On(o);s!==o&&!t&&(t=Array.from(r)),s===void 0?t&&(t[i]=null):(t&&(t[i]=s),n++)}if(n!==0)return t??r}function Va(r){let e,t=0;for(let n in r){let i=r[n],o=On(i);o!==i&&!e&&(e={...r}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),t++)}if(t!==0)return e??r}function E(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!Z(r):!1}function Z(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function Da(r){if(!r)return;let e=r.length-1;for(;e>=0&&E(r[e]);)e--;return e>=0?r.slice(0,e+1):void 0}function ue(r,e,t){return r===e||E(r)&&E(e)?!0:E(r)||E(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ma(r,e):Array.isArray(r)||Array.isArray(e)?!1:R(r)&&R(e)?_a(r,e,t):(R(r)||R(e),!1)}function Ma(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ue(r[t],e[t]))return!1;return!0}function _a(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(!ue(o,s,i))return!1}return!0}function je(r,e){return E(r)?!0:E(e)?!1:Array.isArray(r)&&Array.isArray(e)?La(r,e):Array.isArray(r)||Array.isArray(e)?!1:R(r)&&R(e)?Fa(r,e):R(r)||R(e)?!1:r===e}function La(r,e){return e.every(t=>r.some(n=>je(n,t)))}function Fa(r,e){return Object.entries(e).every(([t,n])=>t in r&&je(r[t],n))}function Te(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Na(r){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(r)}function R(r){return r!==null&&typeof r=="object"}function In(r){return r.every(De)}function De(r){return typeof r=="string"}function hr(r){return R(r)&&"code"in r&&typeof r.code=="string"}function mr(r){return R(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(hr)}function Ua(r,e){if(r){for(let t of r)if(t.coding){for(let n of t.coding)if(n.system===e)return n.code}}}function Yi(r){return R(r)&&"text"in r&&typeof r.text=="string"}var Zi=[];for(let r=0;r<256;r++)Zi.push(r.toString(16).padStart(2,"0"));function kn(r){let e=Dn(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=Zi[t[i]];return n.join("")}function Vn(r){let e=Dn(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=String.fromCodePoint(t[i]);return window.btoa(n.join(""))}function Dn(r){return ArrayBuffer.isView(r)?r.buffer:r}function k(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ba(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function xr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function le(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function yr(r,e){return r.coding?.find(t=>t.system===e)?.code}function Wa(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 qa(r,e,t,n){return r.qualifiedInterval?.find(i=>to(i,e)&&Ga(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function ja(r,e,t){return eo(r,e,t)[0]}function eo(r,e,t){return r.qualifiedInterval?.filter(n=>to(n,e)&&(!t||t.includes(n.condition)))??[]}function to(r,e){return $a(r,e)&&Ha(r,e)}function $a(r,e){return!r.gender||r.gender===e.gender}function Ha(r,e){return!r.age||Mn(mt(e.birthDate).years,r.age)}function Ga(r,e,t){return!!r.range&&Mn(e,r.range,t)}function Mn(r,e,t){return(e.low?.value===void 0||no(r,e.low.value,t))&&(e.high?.value===void 0||ro(r,e.high.value,t))}function Qa(r,e){return Number.parseFloat(r.toFixed(e))}function za(r,e,t){return Y(r,t)===Y(e,t)}function Ja(r,e,t){return Y(r,t)<Y(e,t)}function Ka(r,e,t){return Y(r,t)>Y(e,t)}function ro(r,e,t){return Y(r,t)<=Y(e,t)}function no(r,e,t){return Y(r,t)>=Y(e,t)}function Y(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Xa(r,e,t){return r.find(n=>typeof e=="string"?yr(n.code||{},t)===e:yr(n.code||{},t)===yr(e,t))}function ke(r){if(r!==void 0)return Array.isArray(r)?r:[r]}function Ya(r){return Array.isArray(r)?r[0]:r}var vr=r=>new Promise(e=>{setTimeout(e,r)});function Qe(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function _n(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function G(r,e){return r?(r.push(e),r):[e]}function gt(r){return r.sort((e,t)=>e.localeCompare(t))}function Tr(r){return r.endsWith("/")?r:r+"/"}function io(r){return r.startsWith("/")?r.slice(1):r}function j(r,e){return new URL(io(e),Tr(r.toString())).toString()}function Ln(r,e){return j(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Fn(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var oo=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function Za(r){return oo.test(r)}function ec(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function tc(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[Xi(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function rc(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function nc(r,e){let t=[];if(!r)return t;for(let n=0;n<r.length;n++){let i=e(r[n],n);Array.isArray(i)?t.push(...i):i!==void 0&&t.push(i)}return t}function ic(r){return r.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("\u201C","“").replaceAll("\u201D","”").replaceAll("\u2018","‘").replaceAll("\u2019","’").replaceAll("\u2026","…")}function Nn(r){if(!r)return"";switch(r.type){case"Address":return ao(r.value);case"CodeableConcept":return He(r.value);case"Coding":return Un(r.value);case"ContactPoint":return r.value.value;case"HumanName":return ze(r.value);case"Quantity":return pe(r.value);case"Reference":return so(r.value);default:return r.value?.toString()??""}}function so(r){return r?r.display??r.reference??yt(r):""}function ao(r,e){if(!r)return"";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 ze(r,e){if(!r)return"";let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=Me(r.text);if(n)return n}return t.join(" ").trim()}function oc(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function sc(r){return Me(r.family)??""}function br(r){return r instanceof Date&&!Number.isNaN(r.getTime())}function ac(r,e,t){if(!r)return"";let n=new Date(r);return br(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function co(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return br(n)?n.toLocaleTimeString(e,t):""}function Sr(r,e,t){if(!r)return"";let n=new Date(r);return br(n)?n.toLocaleString(e,t):""}function cc(r,e,t){return!r||!r.start&&!r.end?"":Sr(r.start,e,t)+" - "+Sr(r.end,e,t)}var uc={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},lc={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},pc={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function dc(r){if(!r)return"";let e=[];return fc(e,r.repeat),r.event&&e.push(r.event.map(t=>Sr(t)).join(", ")),k(e.join(" ").trim())}function fc(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(uc[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+lc[i]):r.push("per "+n+" "+pc[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(k).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>co(o)).join(", "))}function hc(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=gc(n.value,e),`> ${pe(n,e)}`):`>= ${pe(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=yc(i.value,e),`< ${pe(i,e)}`):`<= ${pe(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${pe(n,e)} - ${pe(i,e)}`)}function pe(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.at(-1)!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function mc(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function He(r){if(!r)return"";let e=Me(r.text);return e||(r.coding?r.coding.map(t=>Un(t)).join(", "):"")}function Un(r,e){let t=Me(r?.display);if(t){let n=e?Me(r?.code):void 0;return`${t}${n?" ("+n+")":""}`}return Me(r?.code)??""}function uo(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(pe(r.valueQuantity));else if(r.valueCodeableConcept)e.push(He(r.valueCodeableConcept));else{let t=Me(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>uo(t)).join(" / ")),e.join(" / ").trim()}function Me(r){return typeof r=="string"?r:void 0}function yc(r,e,t=1){return(lo(r,e)+t)*Math.pow(10,-e)}function gc(r,e,t=1){return(lo(r,e)-t)*Math.pow(10,-e)}function lo(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var d={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",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",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",SimpleQuantity:"SimpleQuantity",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",xhtml:"xhtml"};function xc(r){for(let e of r.entry??[]){let t=e.resource;t.resourceType==="SearchParameter"&&Er(t)}}function yn(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)t?.resourceType==="StructureDefinition"&&t.kind==="resource"&&fo(t.type)}function fo(r){let e=N.types[r];return e||(e={searchParamsDetails:{}},N.types[r]=e),!e.searchParams&&r!=="Binary"&&(e.searchParams={_id:{base:[r],code:"_id",type:"token",expression:r+".id"},_lastUpdated:{base:[r],code:"_lastUpdated",type:"date",expression:r+".meta.lastUpdated"},_compartment:{base:[r],code:"_compartment",type:"reference",expression:r+".meta.compartment"},_profile:{base:[r],code:"_profile",type:"uri",expression:r+".meta.profile"},_security:{base:[r],code:"_security",type:"token",expression:r+".meta.security"},_source:{base:[r],code:"_source",type:"uri",expression:r+".meta.source"},_tag:{base:[r],code:"_tag",type:"token",expression:r+".meta.tag"}}),e}function Er(r){for(let e of r.base??[]){let t=fo(e);t.searchParams||(t.searchParams={}),t.searchParams[r.code]=r}}function nr(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ho((r.base?.path??r.path)?.split(".")):e}function ho(r){return r.length===1?r[0]:r.map(k).join("")}function ar(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function vc(){return Object.values(dn()).filter(ar).map(r=>r.name)}function Tc(r){return N.types[r]?.searchParams}function Sc(r,e){return N.types[r]?.searchParams?.[e]}function bc(r){let e=r.replaceAll("[x]","").split(".").pop();return mo(e)}function mo(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(Rc).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Ec=new Set(["CDS","ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Rc(r){let e=r.toUpperCase();return r===e?r:Ec.has(e)?e:e.charAt(0)+r.slice(1)}function ht(r,e,t){let n=qe(r,t);if(n)return yo(n.elements,e)}function yo(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function Cc(r){return!!(r&&typeof r=="object"&&"type"in r&&"value"in r)}function O(r,e){return!(!r||typeof r!="object"||!("resourceType"in r)||e&&r.resourceType!==e)}function q(r,e){return r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string"?e?r.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var N={types:{}};function Bn(r){switch(r.type){case d.uuid:case d.uri:case d.url:case d.string:case d.oid:case d.markdown:case d.id:case d.code:case d.canonical:case d.base64Binary:case d.SystemString:case d.date:case d.dateTime:case d.instant:return r.value;case d.Identifier:return`${r.value.system??""}|${r.value.value}`;case d.Coding:return po(r.value);case d.CodeableConcept:return r.value.coding?.map(po).join(",")??r.value.text;case d.HumanName:return r.value.text?r.value.text:ze(r.value);case d.unsignedInt:case d.positiveInt:case d.integer:case d.decimal:return r.value.toString();case d.boolean:return r.value?"true":"false";case d.Extension:return r.value.url;case d.ContactPoint:return r.value.value;case d.Quantity:case d.Age:case d.Count:case d.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case d.Reference:return r.value.reference;default:return Ge(r.value)?V(r.value):JSON.stringify(r)}}function po(r){return r?`${r.system??""}|${r.code}`:""}function Je(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 de=()=>[],D={empty:(r,e)=>m(e.every(t=>E(t.value))),hasValue:(r,e)=>m(e.length!==0),exists:(r,e,t)=>t?m(e.some(n=>F(t.eval(r,[n])))):m(e.length>0&&e.every(n=>!E(n.value))),all:(r,e,t)=>m(e.every(n=>F(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return m(!1);return m(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return m(!0);return m(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return m(!1);return m(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return m(!0);return m(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return m(!0);let n=t.eval(r,_e(r));return n.length===0?m(!1):m(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,_e(r));return n.length===0?m(!0):e.length===0?m(!1):m(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:d.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)=>m(e.length===D.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>F(t.eval(r,[n]))),select:(r,e,t)=>e.flatMap(n=>t.eval({parent:r,variables:{$this:n}},[n])),repeat:de,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(-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 TypeError("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 TypeError("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(r)),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(r)),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(r));return pt([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,_e(r));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 F(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);if(typeof t=="boolean")return[{type:d.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return m(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return m(!0);if(["false","f","no","n","0","0.0"].includes(n))return m(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:m(D.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);return typeof t=="number"?[{type:d.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:d.integer,value:Number.parseInt(t,10)}]:typeof t=="boolean"?[{type:d.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:m(D.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:d.date,value:Je(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:m(D.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:d.dateTime,value:Je(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:m(D.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);return typeof t=="number"?[{type:d.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:d.decimal,value:Number.parseFloat(t)}]:typeof t=="boolean"?[{type:d.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:m(D.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);return A(t)?[{type:d.Quantity,value:t}]:typeof t=="number"?[{type:d.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:d.Quantity,value:{value:Number.parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:d.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:m(D.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);return t==null?[]:A(t)?[{type:d.string,value:`${t.value} '${t.unit}'`}]:[{type:d.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:m(D.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=te(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:d.time,value:Je("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:m(D.toTime(r,e).length===1),indexOf:(r,e,t)=>$((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>$((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>$((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>$((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>$((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>$(t=>t.toUpperCase(),r,e),lower:(r,e)=>$(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>$((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>$((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>$((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),r,e,t,n),length:(r,e)=>$(t=>t.length,r,e),toChars:(r,e)=>$(t=>t?t.split(""):void 0,r,e),encode:de,decode:de,escape:de,unescape:de,trim:de,split:de,join:(r,e,t)=>{let n=t?.eval(r,_e(r))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:d.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>ee(Math.abs,r,e),ceiling:(r,e)=>ee(Math.ceil,r,e),exp:(r,e)=>ee(Math.exp,r,e),floor:(r,e)=>ee(Math.floor,r,e),ln:(r,e)=>ee(Math.log,r,e),log:(r,e,t)=>ee((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>ee(Math.pow,r,e,t),round:(r,e,...t)=>ee((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},r,e,...t),sqrt:(r,e)=>ee(Math.sqrt,r,e),truncate:(r,e)=>ee(t=>Math.trunc(t),r,e),children:de,descendants:de,trace:(r,e,t)=>e,now:()=>[{type:d.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:d.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:d.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=D.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=D.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=mt(o[0].value,s[0].value);return[{type:d.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof _?n=t.name:t instanceof z&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:d.boolean,value:dt(i,n)})):[]},not:(r,e)=>D.toBoolean(r,e).map(t=>({type:d.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:d.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:d.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:d.BackboneElement,value:{namespace:"System",name:"Integer"}}:O(t)?{type:d.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:d.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:d.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:d.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof _&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:d.id,value:ve(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=ce(i,n);if(o)return[{type:d.Extension,value:o}]}return[]}};function $(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=te(t,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,t)[0]?.value),s=r(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(T):[T(s)]}function ee(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=te(t,1),o=A(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),u=o?d.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function te(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}function _e(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var fe=class{constructor(e,t){c(this,"original");c(this,"child");this.original=e,this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},U=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},_=class{constructor(e){c(this,"name");this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return O(t,this.name)?e:ur(e,this.name)}toString(){return this.name}},xt=class{eval(){return[]}toString(){return"{}"}},vt=class extends it{constructor(t,n,i){super(t,n);c(this,"impl");this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},he=class extends se{constructor(e,t){super("as",e,t)}eval(e,t){return D.ofType(e,this.left.eval(e,t),this.right)}},P=class extends se{},M=class extends P{constructor(t,n,i,o){super(t,n,i);c(this,"impl");this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=A(s)?s.value:s,l=A(a)?a.value:a,p=this.impl(u,l);return typeof p=="boolean"?m(p):A(s)?[{type:d.Quantity,value:{...s,value:p}}]:[T(p)]}},Tt=class extends se{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:d.string,value:o.map(s=>s.value).join("")}]:o}},St=class extends P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return m(n.some(o=>o.value===i[0].value))}},bt=class extends P{constructor(e,t){super("in",e,t)}eval(e,t){let n=Q(this.left.eval(e,t)),i=this.right.eval(e,t);return n?m(i.some(o=>$e(n,o)[0].value)):[]}},z=class extends se{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Se=class extends se{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return pt([...n,...i])}},Et=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return En(n,i)}},Rt=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Rn(n,i)}},Ct=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return fr(n,i)}},Pt=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return bn(fr(n,i))}},be=class extends P{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 m(dt(n[0],i))}},wt=class extends P{constructor(e,t){super("and",e,t)}eval(e,t){let n=Q(this.left.eval(e,t),"boolean"),i=Q(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?m(!0):n?.value===!1||i?.value===!1?m(!1):[]}},At=class extends P{constructor(e,t){super("or",e,t)}eval(e,t){let n=Q(this.left.eval(e,t),"boolean"),i=Q(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?m(!1):n?.value||i?.value?m(!0):[]}},Ot=class extends P{constructor(e,t){super("xor",e,t)}eval(e,t){let n=Q(this.left.eval(e,t),"boolean"),i=Q(this.right.eval(e,t),"boolean");return!n||!i?[]:m(n.value!==i.value)}},It=class extends P{constructor(e,t){super("implies",e,t)}eval(e,t){let n=Q(this.left.eval(e,t),"boolean"),i=Q(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?m(!0):!n||!i?[]:m(!1)}},re=class{constructor(e,t){c(this,"name");c(this,"args");this.name=e,this.args=t}eval(e,t){let n=D[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},Ee=class{constructor(e,t){c(this,"left");c(this,"expr");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 Pc=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],wc={"'":"'",'"':'"',"`":"`",r:"\r",n:`
|
|
2
|
-
`,t:" ",f:"\f","\\":"\\"},
|
|
3
|
-
`))}consumeString(e){this.advance();let t="",n;for(;n=this.consumeChar(e);)t+=n;let i=this.buildToken(e==="`"?"Symbol":"String",t);return this.advance(),i}consumeChar(e){let t=this.curr();if(t==="\\"){this.advance();let n=this.curr(),i=
|
|
4
|
-
`?(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 Ac(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Pc.includes(r.value)))}var kt=["true","false"],Vt=["!=","!~","<=",">=","{}","->"];function go(r){return new me(r,kt,Vt).tokenize()}var x={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},Oc={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ic={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Ee(e,t)},precedence:x.Indexer},kc={parse(r,e){if(!(e instanceof _))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new re(e.name,t)},precedence:x.FunctionCall};function Vc(r){let e=r.split(" "),t=Number.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 Ke(){return new ot().registerPrefix("String",{parse:(r,e)=>new U({type:d.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new U({type:d.dateTime,value:Je(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new U({type:d.Quantity,value:Vc(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new U({type:e.value.includes(".")?d.decimal:d.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new U({type:d.boolean,value:!0})}).registerPrefix("false",{parse:()=>new U({type:d.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new _(e.value)}).registerPrefix("{}",{parse:()=>new xt}).registerPrefix("(",Oc).registerInfix("[",Ic).registerInfix("(",kc).prefix("+",x.UnaryAdd,(r,e)=>new vt("+",e,t=>t)).prefix("-",x.UnarySubtract,(r,e)=>new M("-",e,e,(t,n)=>-n)).infixLeft(".",x.Dot,(r,e,t)=>new z(r,t)).infixLeft("/",x.Divide,(r,e,t)=>new M("/",r,t,(n,i)=>n/i)).infixLeft("*",x.Multiply,(r,e,t)=>new M("*",r,t,(n,i)=>n*i)).infixLeft("+",x.Add,(r,e,t)=>new M("+",r,t,(n,i)=>n+i)).infixLeft("-",x.Subtract,(r,e,t)=>new M("-",r,t,(n,i)=>n-i)).infixLeft("|",x.Union,(r,e,t)=>new Se(r,t)).infixLeft("=",x.Equals,(r,e,t)=>new Et(r,t)).infixLeft("!=",x.NotEquals,(r,e,t)=>new Rt(r,t)).infixLeft("~",x.Equivalent,(r,e,t)=>new Ct(r,t)).infixLeft("!~",x.NotEquivalent,(r,e,t)=>new Pt(r,t)).infixLeft("<",x.LessThan,(r,e,t)=>new M("<",r,t,(n,i)=>n<i)).infixLeft("<=",x.LessThanOrEquals,(r,e,t)=>new M("<=",r,t,(n,i)=>n<=i)).infixLeft(">",x.GreaterThan,(r,e,t)=>new M(">",r,t,(n,i)=>n>i)).infixLeft(">=",x.GreaterThanOrEquals,(r,e,t)=>new M(">=",r,t,(n,i)=>n>=i)).infixLeft("&",x.Ampersand,(r,e,t)=>new Tt(r,t)).infixLeft("and",x.And,(r,e,t)=>new wt(r,t)).infixLeft("as",x.As,(r,e,t)=>new he(r,t)).infixLeft("contains",x.Contains,(r,e,t)=>new St(r,t)).infixLeft("div",x.Divide,(r,e,t)=>new M("div",r,t,(n,i)=>Math.trunc(n/i))).infixLeft("in",x.In,(r,e,t)=>new bt(r,t)).infixLeft("is",x.Is,(r,e,t)=>new be(r,t)).infixLeft("mod",x.Modulo,(r,e,t)=>new M("mod",r,t,(n,i)=>n%i)).infixLeft("or",x.Or,(r,e,t)=>new At(r,t)).infixLeft("xor",x.Xor,(r,e,t)=>new Ot(r,t)).infixLeft("implies",x.Implies,(r,e,t)=>new It(r,t))}var Dc=Ke();function Dt(r){return new fe(r,Dc.construct(go(r)).consumeAndParse())}function Mc(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 C(r,t).map(n=>n.value)}function C(r,e,t={},n=void 0){let i;if(typeof r=="string"){let o=n?.get(r);i=o??Dt(r),n&&!o&&n.set(r,i)}else i=r;return i.eval({variables:t},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function _c(r){let e=[];for(let t of r)t.type===d.Range?e.push([t.value?.low?.value,t.value?.high?.value]):typeof t.value=="number"&&e.push([t.value,t.value]);return e}function Wn(r){let e=[];for(let t of r){let n=ft(t.value);n&&e.push(n)}return e}function qn(r){let e=new Set;for(let t of r){let n=Nn(t);n&&e.add(n)}return Array.from(e)}function jn(r){let e=new Set;for(let t of r){let{value:n}=t;n&&(De(n)?e.add(n):q(n)?e.add(n.reference):Ge(n)?e.add(V(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function Lc(r){let e=[];for(let t of r){let{value:n}=t;typeof n=="number"?e.push({value:n}):A(n)&&e.push(n)}return e}function Fc(r){let e=new Set;for(let t of r)De(t.value)&&e.add(t.value);return Array.from(e)}function $n(r,e={}){let t=[];for(let n of r)Nc(e,t,n);return t}function Nc(r,e,t){let{type:n,value:i}=t;switch(n){case d.Identifier:Uc(e,r,i);break;case d.CodeableConcept:Bc(e,r,i);break;case d.Coding:xo(e,r,i);break;case d.ContactPoint:Wc(e,r,i);break;default:Le(e,r,void 0,i?.toString())}}function Uc(r,e,t){t?.type?.text&&Le(r,e,e.textSearchSystem,t.type.text),Le(r,e,t?.system,t?.value)}function Bc(r,e,t){if(t?.text&&Le(r,e,e.textSearchSystem,t.text),t?.coding)for(let n of t.coding)xo(r,e,n)}function xo(r,e,t){t&&(t.display&&Le(r,e,e.textSearchSystem,t.display),Le(r,e,t.system,t.code))}function Wc(r,e,t){t&&Le(r,e,t.system,t.value?.toLocaleLowerCase())}function Le(r,e,t,n){(t||n)&&!r.some(i=>i.system===t&&i.value===n)&&r.push({system:t,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var qc=20,jc=1e3,h={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},Hn={contains:h.CONTAINS,exact:h.EXACT,above:h.ABOVE,below:h.BELOW,text:h.TEXT,not:h.NOT,in:h.IN,"not-in":h.NOT_IN,"of-type":h.OF_TYPE,missing:h.MISSING,identifier:h.IDENTIFIER,iterate:h.ITERATE},Gn={eq:h.EQUALS,ne:h.NOT_EQUALS,lt:h.LESS_THAN,le:h.LESS_THAN_OR_EQUALS,gt:h.GREATER_THAN,ge:h.GREATER_THAN_OR_EQUALS,sa:h.STARTS_AFTER,eb:h.ENDS_BEFORE,ap:h.APPROXIMATELY,sw:h.STARTS_WITH};function Xe(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return $c(i,o)}function $c(r,e){let t={resourceType:r};for(let[n,i]of e)Hc(t,n,i);return t}function Hc(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!=="_"){if(n==="_has"||e.includes(".")){r.filters=G(r.filters,{code:e,operator:h.EQUALS,value:t});return}switch(n){case"_sort":Gc(r,t);break;case"_cursor":r.cursor=t;break;case"_count":r.count=Number.parseInt(t,10);break;case"_offset":r.offset=Number.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=vo(t);i==="iterate"&&(s.modifier=h.ITERATE),r.include=G(r.include,s);break}case"_revinclude":{let s=vo(t);i==="iterate"&&(s.modifier=h.ITERATE),r.revInclude=G(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=N.types[r.resourceType]?.searchParams?.[n];s?r.filters=G(r.filters,bo(s,i,t)):r.filters=G(r.filters,zc(n,i,t))}}}}function Gc(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})}}var Qc=[h.MISSING,h.PRESENT];function bo(r,e,t){if(Qc.includes(e))return{code:r.code,operator:e,value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=Jc(t,e||h.EQUALS);if(!To(r,i))throw new f(b(`Invalid format for ${r.type} search parameter: ${i}`));return{code:r.code,operator:n,value:i}}case"reference":case"string":case"token":case"uri":if(!To(r,t))throw new f(b(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:Kc(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function zc(r,e,t){let n=h.EQUALS;if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Gn&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Jc(r,e){let t=r.substring(0,2),n=Gn[t];return n?{operator:n,value:r.substring(2)}:{operator:e,value:r}}function Kc(r){return Hn[r]??h.EQUALS}function vo(r){let e=r.split(":");if(e.includes("*"))throw new f(b("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(b(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new f(b(`Invalid include value '${r}'`))}function To(r,e){switch(r.type){case"date":return Ve(e);default:return!0}}var Xc=/{{([^{}]+)}}/g;function Yc(r,e){return r=r.replaceAll(Xc,(t,n)=>{let i=C(n,[],e);return i.length!==1?"":Bn(i[0])}),Xe(r)}function Zc(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(eu(t))),r.sortRules&&r.sortRules.length>0&&e.push(tu(r.sortRules)),r.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(r.cursor)),r.offset!==void 0&&r.offset!==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.types&&r.types.length>0&&e.push("_type="+r.types.join(",")),r.include&&r.include.forEach(t=>e.push(So("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(So("_revinclude",t))),e.length===0?"":(gt(e),"?"+e.join("&"))}function eu(r){let e=r.operator in Hn?":"+r.operator:"",t=r.operator!==h.EQUALS&&r.operator in Gn?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function tu(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function So(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Ye(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function ru(r,e){return b(`Invalid modifier :${r} for ${e}`)}function nu(r,e){return r in Hn?ru(r,e):b(`Invalid operator ${r} for ${e}`)}function Mt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!iu(r,e,t))return!1}return!0}function iu(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;let i=C(n.expression,[T(r)]);if(t.operator===h.MISSING||t.operator===h.PRESENT)return ou(i,t);switch(n.type){case"reference":return su(i,t);case"string":case"uri":return uu(i,t);case"token":return au(i,t);case"date":return pu(i,t);default:return!1}}function ou(r,e){let t=r.length>0;return(e.operator===h.MISSING&&e.value==="false"||e.operator===h.PRESENT&&e.value==="true")===t}function su(r,e){let t=Rr(e.operator);if(e.value===""&&r.length===0)return e.operator===h.EQUALS;let n=jn(r);for(let i of Ye(e.value)){let o=n.includes(i);if(!o&&e.code==="_compartment"&&(o=n.some(s=>s?.endsWith("/"+i))),o)return!t}return t}function au(r,e){let t=$n(r),n=Ye(e.value),i=Rr(e.operator);for(let o of t)for(let s of n)if(cu(o,s))return!i;return i}function cu(r,e){if(e.includes("|")){let[t,n]=e.split("|").map(i=>i.toLowerCase());return!t&&!n?!1:t?r.system?.toLowerCase()===t&&(!n||r.value?.toLowerCase()===n):!r.system&&r.value?.toLowerCase()===n}return r.value?.toLowerCase()===e.toLowerCase()}function uu(r,e){let t=qn(r),n=Ye(e.value),i=Rr(e.operator);for(let o of t)for(let s of n)if(lu(o,s))return!i;return i}function lu(r,e){return r.toLowerCase().includes(e.toLowerCase())}function pu(r,e){let t=Wn(r),n=Ye(e.value),i=Rr(e.operator);for(let o of t)for(let s of n)if(du(o,e.operator,s))return!i;return i}function du(r,e,t){if(!r)return!1;let n=ft(t);if(!n)return!1;let i=r.start??"0000",o=r.end??"9999",s=n.start,a=n.end;switch(e){case h.APPROXIMATELY:case h.EQUALS:case h.NOT_EQUALS:return i<a&&o>s;case h.LESS_THAN:return i<s;case h.GREATER_THAN:return o>a;case h.LESS_THAN_OR_EQUALS:return i<=a;case h.GREATER_THAN_OR_EQUALS:return o>=s;case h.STARTS_AFTER:return i>a;case h.ENDS_BEFORE:return o<s;default:return!1}}function Rr(r){return r===h.NOT_EQUALS||r===h.NOT}var fu={resourceType:"*"},Eo=["DomainConfiguration","JsonWebKey","Login"],Ro=["UserSecurityRequest","Project","ProjectMembership","User"],Re={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Co=[Re.READ,Re.VREAD,Re.HISTORY,Re.SEARCH];function hu(r,e){return Qn(r,Re.SEARCH,e)}function mu(r,e){return Eo.includes(e)?!1:Qn(r,Re.UPDATE,e)}function Qn(r,e,t){return!!r.resource?.some(n=>wo(n,t,e))}function yu(r,e){return!!Po(e,Re.UPDATE,r)}function Po(r,e,t){return t?t.resource?.find(n=>gu(r,e,n)):fu}function gu(r,e,t){let n=r.resourceType;return wo(t,n,e)?n==="Binary"?!0:!(t.compartment&&!r.meta?.compartment?.some(i=>i.reference===t.compartment?.reference)||t.criteria&&!Mt(r,Xe(t.criteria))):!1}function wo(r,e,t){return r.resourceType!==e&&(r.resourceType!=="*"||Ro.includes(e))?!1:r.interaction?r.interaction.includes(t):!r.readonly||Co.includes(t)}function B(){return typeof window<"u"}function xu(){return typeof Buffer<"u"}function vu(){return typeof window<"u"?window:void 0}function Cr(){return typeof Buffer<"u"?Buffer:void 0}var ne={assign(r){B()&&globalThis.location.assign(r)},reload(){B()&&globalThis.location.reload()},getSearch(){return B()?globalThis.location.search:""},getPathname(){return B()?globalThis.location.pathname:""},getLocation(){return B()?globalThis.location.toString():""},getOrigin(){return B()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function Ao(r){if(B()){let t=window.atob(r),n=Uint8Array.from(t,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Cr();if(e)return e.from(r,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function _t(r){if(B()){let t=new window.TextEncoder().encode(r),n=String.fromCodePoint.apply(null,t);return window.btoa(n)}let e=Cr();if(e)return e.from(r,"utf8").toString("base64");throw new Error("Unable to encode base64")}function Tu(r){return _t(r).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function zn(r){r=r.padEnd(r.length+(4-r.length%4)%4,"=");let e=r.replaceAll("-","+").replaceAll("_","/");return Ao(e)}function Pr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),kn(r.buffer)}async function Jn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ie(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,r=>{let e=Math.trunc(Math.random()*16);return(r==="x"?e:e&3|8).toString(16)})}function Oo(r){let e={};r=Te(r);for(let i of r.entry||[]){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;s&&(e[s]=ie(),i.fullUrl="urn:uuid:"+e[s],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)=>Su(i,o,e),2);return Io(JSON.parse(n))}function Su(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 Io(r){let e=Eu(r),{sorted:t,cycles:n}=bu(e),i={},o=[];for(let a of r.entry??[])a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=t.map(a=>i[a]);for(let a of n)for(let u of a){let l=i[u],p={...l,request:{...l.request,method:"PUT"}};s.push(p)}return s.push(...o),{...r,entry:s}}var Ze={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function bu(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=Ze.NotVisited;function i(o,s){if(t[o]===Ze.Visited)return!0;if(t[o]===Ze.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=Ze.Visiting,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=Ze.Visited,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===Ze.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function ko(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(q(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else ko(n,e)}}function Eu(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&&ko(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Ru(r){r=Te(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=ie());return Oo(e)}function Cu(r,e,t){return r.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===t)?.resource}async function Pu(r,e,t,n){return{hook:t.hook,hookInstance:ie(),context:n,prefetch:await wu(r,e,t,n)}}async function wu(r,e,t,n){if(!t.prefetch)return{};let i={};for(let[o,s]of Object.entries(t.prefetch)){let a=await Au(r,e,n,s);i[o]=a??null}return i}function Au(r,e,t,n){if(n=Vo(e,t,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return r.readResource(a,u)}let[o,s]=Qe(n,"?",2);return r.search(o,s)}var Ou=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Vo(r,e,t){return t.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Ou.has(i))return r.id;if(i.startsWith("context.")){let o=i.substring(8),s=Iu(e,o);if(De(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Iu(r,e){let t=e.split("."),n=r;for(let i of t)if(n&&R(n)&&i in n)n=n[i];else return;return n}var w={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var wr=class{constructor(){c(this,"listeners");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}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},J=class{constructor(){c(this,"emitter",new wr)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var Ar={"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"},Do=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Or=["DiagnosticReport-update"];function Kn(r){return Or.includes(r)}function Xn(r){if(Or.includes(r))throw new f(g(`'context.version' is required for '${r}'.`))}var Mo={"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",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function _o(r){return Do.includes(r)}function Yn(r){return!!r.endpoint}function Ir(r){if(!Ft(r))throw new f(g("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 Yn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Ft(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(!Ar[o])return!1;return!(Yn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function ku(r,e,t,n){if(typeof e!="object")throw new f(g(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(g(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(g(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!_o(e.resourceType))throw new f(g(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(g(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Vu(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!q(e.reference))throw new f(g(`context[${t}] is invalid. Expected key '${e.key}' to be a reference.`))}else ku(r,e.resource,t,n)}function Du(r,e){let t=new Map,n=Mo[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(g(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Vu(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(g(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)??0)>1)throw new f(g(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function kr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(g("Must provide a topic."));if(!Ar[e])throw new f(g(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Ar).join(", ")}`));if(typeof t!="object")throw new f(g("context must be a context object or array of context objects."));if(Or.includes(e)&&!n)throw new f(g(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return Du(e,i),{timestamp:new Date().toISOString(),id:ie(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Lt=class extends J{constructor(t){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=t,!t.endpoint)throw new f(g("Subscription request should contain an endpoint."));if(!Ft(t))throw new f(g("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function Mu(r){return JSON.parse(zn(r))}function Zn(r){return r.split(".").length===3}function Nt(r){let[e,t,n]=r.split(".");return Mu(t)}function ei(r){try{return typeof Nt(r).login_id=="string"}catch{return!1}}function ti(r){try{let t=Nt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Ut=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t,w.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Lo;Lo=Symbol.toStringTag;var L=class{constructor(e){c(this,Lo,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");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)}};var et=class{constructor(e,t=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new Vr,this.prefix=t}makeKey(e){return this.prefix+e}clear(){this.storage===globalThis.localStorage&&this.prefix?Object.keys(this.storage).filter(e=>e.startsWith(this.prefix)).forEach(e=>{this.storage.removeItem(e)}):this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,t){t?this.storage.setItem(this.makeKey(e),t):this.storage.removeItem(this.makeKey(e))}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?yt(t):void 0)}},Vr=class{constructor(){c(this,"data");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]}},ri=class extends et{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var tt={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Fo=!1;function _u(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");tt.Event=globalThis.Event,tt.ErrorEvent=class extends Event{constructor(t,n){super("error",n);c(this,"message");c(this,"error");this.message=t.message,this.error=t}},tt.CloseEvent=class extends Event{constructor(t=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=t,this.reason=n}}}function Uo(r,e){if(!r)throw new Error(e)}function Dr(r){return new r.constructor(r.type,r)}var Fe={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},No=!1,Bt=class r extends J{constructor(t,n,i={}){Fo||(_u(),Fo=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",t=>{this._debug("open event");let{minUptime:n=Fe.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),Uo(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(t),this.dispatchEvent(Dr(t))});c(this,"_handleMessage",t=>{this._debug("message event"),this.onmessage&&this.onmessage(t),this.dispatchEvent(Dr(t))});c(this,"_handleError",t=>{this._debug("error event",t.message),this._disconnect(void 0,t.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(t),this._debug("exec error listeners"),this.dispatchEvent(Dr(t)),this._connect()});c(this,"_handleClose",t=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(t),this.dispatchEvent(Dr(t))});this._url=t,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return r.CONNECTING}get OPEN(){return r.OPEN}get CLOSING(){return r.CLOSING}get CLOSED(){return r.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?r.CLOSED:r.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(t=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)}reconnect(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())}send(t){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{let{maxEnqueuedMessages:n=Fe.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",t),this._messageQueue.push(t))}}_debug(...t){this._options.debug&&this._debugLogger("RWS>",...t)}_getNextDelay(){let{reconnectionDelayGrowFactor:t=Fe.reconnectionDelayGrowFactor,minReconnectionDelay:n=Fe.minReconnectionDelay,maxReconnectionDelay:i=Fe.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(t,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(t=>{setTimeout(t,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:t=Fe.maxRetries,connectionTimeout:n=Fe.connectionTimeout}=this._options;if(this._retryCount>=t){this._debug("max retries reached",this._retryCount,">=",t);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!No&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),No=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new tt.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new tt.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(t=1e3,n){if(this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new tt.CloseEvent(t,n,this))}catch{}}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var Lu=5e3,rt=class extends J{constructor(...t){super();c(this,"criteria");this.criteria=new Set(t)}getCriteria(){return this.criteria}_addCriteria(t){this.criteria.add(t)}_removeCriteria(t){this.criteria.delete(t)}},ni=class{constructor(e,t){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"connecting",!1);this.criteria=e,this.emitter=new rt(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}clearAttachedSubscription(){this.subscriptionId=void 0,this.token=void 0}},Wt=class{constructor(e,t,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof qt))throw new f(g("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(g("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new Bt(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new rt,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??Lu,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=ve(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let l=this.criteriaEntriesBySubscriptionId.get(a);if(!l){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}l.connecting=!1,l.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(ve(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(nn(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t})}),e.addEventListener("close",()=>{let t={type:"close"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let t={type:"open"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.refreshAllSubscriptions().catch(console.error),this.pingTimer||(this.pingTimer=setInterval(()=>{if(this.waitingForPong){this.waitingForPong=!1,e.reconnect();return}e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0},this.pingIntervalMs))}),this.medplum.addEventListener("change",()=>{let t=this.medplum.getProfile();this.currentProfile&&t===void 0?this.ws.close():t&&this.currentProfile?.id!==t.id&&this.ws.reconnect(),this.currentProfile=t})}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${V(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new f(g("Failed to get token"));if(!o)throw new f(g("Failed to get URL from $get-ws-binding-token"));return[t,i]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(ue(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!ue(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}async subscribeToCriteria(e){if(!(this.ws.readyState!==WebSocket.OPEN||e.connecting)){e.connecting=!0;try{let[t,n]=await this.getTokenForCriteria(e);e.subscriptionId=t,e.token=n,this.criteriaEntriesBySubscriptionId.set(t,e),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:n}}))}catch(t){console.error(Ae(t)),this.emitError(e,t),this.removeCriteriaEntry(e)}}}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();for(let e of this.criteriaEntries.values())for(let t of[...e.bareCriteria?[e.bareCriteria]:[],...e.criteriaWithProps])t.clearAttachedSubscription(),await this.subscribeToCriteria(t)}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new ni(e,t);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}getWebSocket(){return this.ws}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new rt(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function Fu({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(!Nu(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=Xe(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Bo(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=ce(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");if(u&&u.valueCode!==t.interaction)return i?.debug(`Ignore rest hook for different interaction (wanted "${u.valueCode}", received "${t.interaction}")`),!1;if(!Mt(r,s))return!1;let l=gr(e.meta)??[],p=gr(r.meta)??[];return l.length&&!l.some(y=>p.some(v=>v.reference===y.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:V(r)}),!1):!0}function Nu(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function Bo(r,e,t){let n=ce(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":T(e),"%previous":T(i??{})};return C(n.valueString,[T(e)],o)?.[0]?.value===!0}var Mr="5.0.10-6a4145c",Uu="medplum-cli",$o=w.FHIR_JSON+", */*; q=0.1",Bu="https://api.medplum.com/",Wu=1e3,qu=6e4,ju=0,$u=3e5,Hu="Binary/",Wo={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ne={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange"},Ho={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},Gu={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Go={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},Qu={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},qt=class extends J{constructor(t){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??zu(),this.storage=t?.storage??new et(void 0,t?.storagePrefix),this.createPdfImpl=t?.createPdf,this.baseUrl=Tr(t?.baseUrl??Bu),this.fhirBaseUrl=j(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=j(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=j(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=j(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=j(this.baseUrl,t?.fhircastHubUrl??"fhircast/STU3"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.credentialsInHeader=t?.authCredentialsMethod==="header",this.defaultHeaders=t?.defaultHeaders??{},this.onUnauthenticated=t?.onUnauthenticated,this.refreshGracePeriod=t?.refreshGracePeriod??$u,this.logLevel=this.initializeLogLevel(t),this.cacheTime=t?.cacheTime??(B()?qu:ju),this.cacheTime>0?this.requestCache=new Pe(t?.resourceCacheSize??Wu):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.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(t){return t?.logLevel?t.logLevel:t?.verbose!==void 0&&t.verbose?"verbose":"none"}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}getFhircastHubUrl(){return this.fhircastHubUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),B()&&sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=j(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&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new L(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,w.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(ne.getSearch()).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){ne.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),ne.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");return this.fetchTokens({grant_type:Ne.TokenExchange,subject_token_type:Ho.AccessToken,client_id:n,subject_token:t})}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(j(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=Fn(n)),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new L(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new L(this.search(t,n,i).then(jo));return this.setCacheEntry(s,u),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield jo(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Wo;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new L(Promise.reject(new Error("Missing reference")));if(i==="system")return new L(Promise.resolve(Wo));let[o,s]=i.split("/");return!o||!s?new L(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(t,n,i){return Array.isArray(t)?this.searchOne("",{_type:t.join(","),url:n},i):this.searchOne(t,"url="+n,i)}requestSchema(t){if(fn(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new L((async()=>{let s=`{
|
|
1
|
+
"use strict";var Xt=Object.defineProperty;var gs=Object.getOwnPropertyDescriptor;var xs=Object.getOwnPropertyNames;var vs=Object.prototype.hasOwnProperty;var Ts=(r,e,t)=>e in r?Xt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Ss=(r,e)=>{for(var t in e)Xt(r,t,{get:e[t],enumerable:!0})},bs=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of xs(e))!vs.call(r,i)&&i!==t&&Xt(r,i,{get:()=>e[i],enumerable:!(n=gs(e,i))||n.enumerable});return r};var Es=r=>bs(Xt({},"__esModule",{value:!0}),r);var c=(r,e,t)=>Ts(r,typeof e!="symbol"?e+"":e,t);var gp={};Ss(gp,{AccessPolicyInteraction:()=>Ce,AckCode:()=>Hl,AndAtom:()=>Ot,ArithemticOperatorAtom:()=>_,AsAtom:()=>me,BooleanInfixOperatorAtom:()=>w,CPT:()=>ws,ClientStorage:()=>nt,ConcatAtom:()=>bt,ContainsAtom:()=>Et,ContentType:()=>A,DEFAULT_ACCEPT:()=>Ho,DEFAULT_MAX_SEARCH_COUNT:()=>Hc,DEFAULT_SEARCH_COUNT:()=>$c,DataSampler:()=>Lr,DotAtom:()=>J,EMPTY:()=>g,EmptySetAtom:()=>Tt,EqualsAtom:()=>Ct,EquivalentAtom:()=>wt,EventTarget:()=>Ar,ExternalSecretSystems:()=>el,FHIRCAST_EVENT_NAMES:()=>Or,FHIRCAST_EVENT_RESOURCES:()=>_o,FHIRCAST_EVENT_VERSION_REQUIRED:()=>Ir,FHIRCAST_RESOURCE_TYPES:()=>Mo,FhirFilterComparison:()=>zt,FhirFilterConnective:()=>Kt,FhirFilterNegation:()=>Jt,FhirPathAtom:()=>he,FhircastConnection:()=>Nt,FileBuilder:()=>mi,FunctionAtom:()=>ne,HTTP_HL7_ORG:()=>Jr,HTTP_TERMINOLOGY_HL7_ORG:()=>Is,Hl7Context:()=>ge,Hl7Field:()=>Y,Hl7Message:()=>gi,Hl7Segment:()=>st,ICD10:()=>As,ImpliesAtom:()=>Vt,InAtom:()=>Rt,IndexerAtom:()=>Re,InfixOperatorAtom:()=>ae,IsAtom:()=>Ee,LOINC:()=>Rs,LRUCache:()=>we,LiteralAtom:()=>B,LogLevel:()=>We,LogLevelNames:()=>ds,Logger:()=>xi,MEDPLUM_CLI_CLIENT_ID:()=>Wu,MEDPLUM_RELEASES_URL:()=>hs,MEDPLUM_VERSION:()=>_r,MedplumClient:()=>$t,MedplumKeyValueClient:()=>Wt,MemoryStorage:()=>Dr,MockAsyncClientStorage:()=>ni,NDC:()=>Os,NotEqualsAtom:()=>Pt,NotEquivalentAtom:()=>At,OAuthClientAssertionType:()=>Qo,OAuthGrantType:()=>Ue,OAuthSigningAlgorithm:()=>Ju,OAuthTokenAuthMethod:()=>zu,OAuthTokenType:()=>Go,OperationOutcomeError:()=>f,Operator:()=>h,OperatorPrecedence:()=>v,OrAtom:()=>It,Parser:()=>Zt,ParserBuilder:()=>ct,PrefixOperatorAtom:()=>at,PropertyType:()=>d,RXNORM:()=>Ps,ReadablePromise:()=>F,ReconnectingWebSocket:()=>qt,SNOMED:()=>Cs,SearchParameterType:()=>se,SubscriptionEmitter:()=>ot,SubscriptionManager:()=>jt,SymbolAtom:()=>L,Tokenizer:()=>ye,TransformMapCollection:()=>Wr,TypedEventTarget:()=>K,UCUM:()=>zr,UnaryOperatorAtom:()=>St,UnionAtom:()=>be,VALID_HOSTNAME_REGEX:()=>so,XorAtom:()=>kt,accepted:()=>Bs,accessPolicySupportsInteraction:()=>zn,addProfileToResource:()=>tc,allOk:()=>ks,append:()=>Q,applyDefaultValuesToElement:()=>pl,applyDefaultValuesToResource:()=>ll,applyFixedOrPatternValue:()=>Gt,arrayBufferToBase64:()=>Dn,arrayBufferToHex:()=>Vn,arrayify:()=>Ve,assert:()=>Bo,assertContextVersionOptional:()=>Xn,assertOk:()=>Zs,assertReleaseManifest:()=>ms,badRequest:()=>R,booleanToTypedValue:()=>m,buildCdsRequest:()=>Au,buildElementsContext:()=>Nr,buildTypeName:()=>mo,businessRule:()=>$s,calculateAge:()=>yt,calculateAgeString:()=>wa,canReadResourceType:()=>yu,canWriteResource:()=>xu,canWriteResourceType:()=>gu,capitalize:()=>V,checkForNull:()=>vi,checkIfValidMedplumVersion:()=>hp,clearReleaseCache:()=>fp,compressElement:()=>ta,concatUrls:()=>$,conceptMapTranslate:()=>pi,conflict:()=>Ws,convertContainedResourcesToBundle:()=>Pu,convertToSearchableDates:()=>qn,convertToSearchableNumbers:()=>Fc,convertToSearchableQuantities:()=>Nc,convertToSearchableReferences:()=>$n,convertToSearchableStrings:()=>jn,convertToSearchableTokens:()=>Hn,convertToSearchableUris:()=>Uc,convertToTransactionBundle:()=>Io,crawlTypedValue:()=>lr,crawlTypedValueAsync:()=>ua,createConstraintIssue:()=>an,createFhircastMessagePayload:()=>Vr,createOperationOutcomeIssue:()=>xe,createProcessingIssue:()=>cn,createReference:()=>ve,createStructureIssue:()=>b,created:()=>Vs,decodeBase64:()=>Oo,decodeBase64Url:()=>Jn,deepClone:()=>Se,deepEquals:()=>le,deepIncludes:()=>Ge,deriveIdentifierSearchParameter:()=>Zl,encodeBase64:()=>Ft,encodeBase64Url:()=>bu,encryptSHA256:()=>Kn,ensureNoLeadingSlash:()=>oo,ensureTrailingSlash:()=>br,escapeHtml:()=>oc,evalFhirPath:()=>Lc,evalFhirPathTyped:()=>P,evalSqlOnFhir:()=>cp,expandSampledData:()=>si,expandSampledObservation:()=>il,extractAccountReferences:()=>vr,fetchLatestVersionString:()=>mp,fetchVersionManifest:()=>Qr,fhirPathArrayEquals:()=>Rn,fhirPathArrayEquivalent:()=>mr,fhirPathArrayNotEquals:()=>Cn,fhirPathEquals:()=>Qe,fhirPathEquivalent:()=>Gi,fhirPathIs:()=>ft,fhirPathNot:()=>En,fhirTypeToJsType:()=>dr,findCodeBySystem:()=>Ba,findObservationInterval:()=>ja,findObservationReferenceRange:()=>$a,findObservationReferenceRanges:()=>to,findResourceByCode:()=>Xa,findResourceInBundle:()=>wu,flatMapFilter:()=>ic,forbidden:()=>Ms,formatAddress:()=>co,formatCodeableConcept:()=>ze,formatCoding:()=>Bn,formatDate:()=>cc,formatDateTime:()=>Er,formatFamilyName:()=>ac,formatGivenName:()=>sc,formatHl7DateTime:()=>ps,formatHumanName:()=>Ye,formatMoney:()=>gc,formatObservationValue:()=>lo,formatPeriod:()=>lc,formatQuantity:()=>de,formatRange:()=>yc,formatReferenceString:()=>ao,formatSearchQuery:()=>tu,formatTime:()=>uc,formatTiming:()=>hc,formatWallTime:()=>uo,generateId:()=>oe,getAllDataTypes:()=>fn,getAllQuestionnaireAnswers:()=>Oa,getBuffer:()=>Pr,getCodeBySystem:()=>xr,getDataType:()=>ce,getDateProperty:()=>Pa,getDefaultValuesForNewSliceEntry:()=>dl,getDisplayString:()=>Ji,getElementDefinition:()=>mt,getElementDefinitionFromElements:()=>go,getElementDefinitionTypeName:()=>or,getExpressionForResourceType:()=>sp,getExpressionsForResourceType:()=>Ei,getExtension:()=>ue,getExtensionValue:()=>ka,getIdentifier:()=>Xi,getImageSrc:()=>Ca,getInnerDerivedIdentifierExpression:()=>Ti,getNestedProperty:()=>ke,getParsedDerivedIdentifierExpression:()=>Si,getParsedExpressionForResourceType:()=>bi,getPathDifference:()=>pe,getPathDisplayName:()=>Rc,getPropertyDisplayName:()=>yo,getQueryString:()=>Nn,getQuestionnaireAnswers:()=>Aa,getRandomString:()=>wr,getReferenceString:()=>D,getResourceTypes:()=>Sc,getSearchParameter:()=>Ec,getSearchParameterDetails:()=>ep,getSearchParameters:()=>bc,getStatus:()=>Xs,getTypedPropertyValue:()=>k,getTypedPropertyValueWithPath:()=>pr,getTypedPropertyValueWithSchema:()=>$i,getTypedPropertyValueWithoutSchema:()=>Hi,getValueSliceName:()=>ci,getWebSocketUrl:()=>Fn,getWindow:()=>Su,globalSchema:()=>U,gone:()=>_s,indexConceptMapCodings:()=>Yo,indexDefaultSearchParameters:()=>gn,indexSearchParameter:()=>Rr,indexSearchParameterBundle:()=>Tc,indexStructureDefinitionBundle:()=>ar,inflateBaseSchema:()=>un,inflateElement:()=>Di,initFhirPathParserBuilder:()=>Ze,invalidSearchOperator:()=>ou,isAccepted:()=>Gs,isBrowserEnvironment:()=>W,isCodeableConcept:()=>gr,isCoding:()=>yr,isCompletedSubscriptionRequest:()=>Zn,isComplexTypeCode:()=>Tr,isConflict:()=>Js,isContextVersionRequired:()=>Yn,isCreated:()=>Hs,isDataTypeLoaded:()=>hn,isDateString:()=>Pn,isDateTimeString:()=>De,isEmpty:()=>C,isError:()=>nr,isFhirCriteriaMet:()=>Wo,isFhircastResourceType:()=>Lo,isGone:()=>Ks,isJwt:()=>ei,isLowerCase:()=>Wa,isMedplumAccessToken:()=>ti,isNodeEnvironment:()=>Tu,isNotFound:()=>zs,isObject:()=>E,isOk:()=>ir,isOperationOutcome:()=>qe,isPeriod:()=>wn,isPopulated:()=>ee,isPrimitiveType:()=>pt,isProfileLoaded:()=>mn,isProfileResource:()=>zi,isQuantity:()=>O,isQuantityEquivalent:()=>An,isRedirect:()=>Qs,isReference:()=>j,isResource:()=>I,isResourceType:()=>lt,isResourceTypeSchema:()=>ur,isResourceWithId:()=>Je,isSliceDefinitionWithTypes:()=>ai,isString:()=>Me,isStringArray:()=>kn,isTextObject:()=>Zi,isTypedValue:()=>wc,isUUID:()=>Ua,isUnauthenticated:()=>Ys,isValidDate:()=>vt,isValidHostname:()=>ec,isValidMedplumSemver:()=>ys,lazy:()=>Ln,loadDataType:()=>cr,locationUtils:()=>ie,mapByIdentifier:()=>rc,matchDiscriminant:()=>fr,matchesRange:()=>_n,matchesSearchRequest:()=>Lt,multipleMatches:()=>Ns,normalizeArrayBufferView:()=>Mn,normalizeCreateBinaryOptions:()=>oi,normalizeCreatePdfOptions:()=>zo,normalizeErrorString:()=>Oe,normalizeOperationOutcome:()=>ut,notFound:()=>rn,notModified:()=>Ds,operationOutcomeIssueToString:()=>Vi,operationOutcomeToString:()=>sn,parseFhirPath:()=>_t,parseFilterParameter:()=>$l,parseHl7DateTime:()=>Ql,parseJWTPayload:()=>Bt,parseLogLevel:()=>Jl,parseMappingLanguage:()=>Tl,parseParameter:()=>Eo,parseReference:()=>ba,parseSearchRequest:()=>et,parseStructureDefinition:()=>sr,parseXFhirQuery:()=>eu,pathToJSONPointer:()=>pa,preciseEquals:()=>Ja,preciseGreaterThan:()=>Ya,preciseGreaterThanOrEquals:()=>io,preciseLessThan:()=>Ka,preciseLessThanOrEquals:()=>no,preciseRound:()=>za,preconditionFailed:()=>Ls,projectAdminResourceTypes:()=>Co,protectedResourceTypes:()=>Ro,readInteractions:()=>Po,redirect:()=>js,removeDuplicates:()=>dt,removeProfileFromResource:()=>nc,reorderBundle:()=>ko,replaceQueryVariables:()=>Do,resolveId:()=>Te,resourceMatchesSubscriptionCriteria:()=>Uu,satisfiedAccessPolicy:()=>wo,serializeError:()=>Yt,serializeFhircastSubscriptionRequest:()=>kr,serverError:()=>on,serverTimeout:()=>qs,setCodeBySystem:()=>qa,setIdentifier:()=>Ia,singleton:()=>z,singularize:()=>Za,sleep:()=>Sr,sortStringArray:()=>xt,splitN:()=>Ke,splitSearchOnComma:()=>tt,streamToBuffer:()=>ap,stringify:()=>gt,stringifyTypedValue:()=>Wn,structureMapTransform:()=>Sl,subsetResource:()=>ia,summarizeObservations:()=>tl,toJsBoolean:()=>N,toPeriod:()=>ht,toTypedValue:()=>S,tooManyRequests:()=>Us,trimTrailingEmptyElements:()=>Ma,tryGetDataType:()=>$e,tryGetJwtExpiration:()=>ri,tryGetProfile:()=>yn,typedValueToString:()=>Un,unauthorized:()=>Ae,unauthorizedTokenAudience:()=>rr,unauthorizedTokenExpired:()=>nn,unsupportedMediaType:()=>Fs,validateFhircastSubscriptionRequest:()=>Ut,validateResource:()=>ha,validateResourceType:()=>Kl,validateTypedValue:()=>Bi,validationError:()=>x,validationRegexes:()=>He,warnIfNewerVersionAvailable:()=>yp,wordWrap:()=>us});module.exports=Es(gp);var at=class{constructor(e,t){c(this,"operator");c(this,"child");this.operator=e,this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},ae=class{constructor(e,t,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=t,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},ct=class{constructor(){c(this,"prefixParselets",{});c(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 Zt(e,this.prefixParselets,this.infixParselets)}},Zt=class{constructor(e,t,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");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 new 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 new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw new Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var we=class{constructor(e=10){c(this,"max");c(this,"cache");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 zr="http://unitsofmeasure.org",Rs="http://loinc.org",Cs="http://snomed.info/sct",Ps="http://www.nlm.nih.gov/research/umls/rxnorm",ws="http://www.ama-assn.org/go/cpt",As="http://hl7.org/fhir/sid/icd-10",Os="http://hl7.org/fhir/sid/ndc",Jr="http://hl7.org",Is="http://terminology.hl7.org";var er="created",Kr="gone",Yr="not-modified",Xr="found",Zr="not-found",en="conflict",tn="unauthorized",Ci="forbidden",Pi="precondition-failed",wi="unsupported-media-type",Ai="multiple-matches",Oi="too-many-requests",tr="accepted",Ii="server-timeout",ki="business-rule",ks={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Vs={resourceType:"OperationOutcome",id:er,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Ds={resourceType:"OperationOutcome",id:Yr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},rn={resourceType:"OperationOutcome",id:Zr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Ae={resourceType:"OperationOutcome",id:tn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},nn={...Ae,issue:[...Ae.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},rr={...Ae,issue:[...Ae.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},Ms={resourceType:"OperationOutcome",id:Ci,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},_s={resourceType:"OperationOutcome",id:Kr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ls={resourceType:"OperationOutcome",id:Pi,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Fs={resourceType:"OperationOutcome",id:wi,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Ns={resourceType:"OperationOutcome",id:Ai,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Us={resourceType:"OperationOutcome",id:Oi,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Bs(r){return{resourceType:"OperationOutcome",id:tr,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function Ws(r,e){return{resourceType:"OperationOutcome",id:en,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:r}}]}}function x(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function on(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function qs(r){return{resourceType:"OperationOutcome",id:Ii,issue:[{severity:"error",code:"timeout",details:{text:r??"Server timeout"}}]}}function js(r){let e=r.toString();return{resourceType:"OperationOutcome",id:Xr,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function $s(r,e){return{resourceType:"OperationOutcome",id:ki,issue:[{severity:"error",code:"business-rule",details:{id:r,text:e}}]}}function nr(r){return!r||typeof r!="object"?!1:r instanceof Error||typeof DOMException<"u"&&r instanceof DOMException?!0:Object.prototype.toString.call(r)==="[object Error]"}function qe(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function ir(r){return r.id==="ok"||r.id===er||r.id===Yr||r.id===tr}function Hs(r){return r.id===er}function Gs(r){return r.id===tr}function Qs(r){return r.id===Xr}function zs(r){return r.id===Zr}function Js(r){return r.id===en}function Ks(r){return r.id===Kr}function Ys(r){return r.id===tn}function Xs(r){switch(r.id){case"ok":return 200;case er:return 201;case tr:return 202;case Xr:return 302;case Yr:return 304;case tn:return 401;case Ci:return 403;case Zr:return 404;case en:return 409;case Kr:return 410;case Pi:case Ai:return 412;case wi:return 415;case ki:return 422;case Oi:return 429;case Ii:return 504;default:return r.issue?.[0]?.code==="exception"?500:400}}function Zs(r,e){if(!ir(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(t,n){super(sn(t),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=t}};function ut(r){return r instanceof f?r.outcome:qe(r)?r:R(Oe(r))}function Oe(r){return r?typeof r=="string"?r:nr(r)?r.message:qe(r)?sn(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function sn(r){let e=r.issue?.map(Vi)??[];return e.length>0?e.join("; "):"Unknown error"}function Vi(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 xe(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function b(r,e){return xe("error","structure",e,r)}function an(r,e){return xe("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function cn(r,e,t,n){return xe("error","processing",e,r,{...n,error:t})}var ea={"http://hl7.org/fhirpath/System.String":"string"};function ta(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:ea[t.code]??t.code})),e}function Di(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function un(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,type:t,path:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Di(i,o)])),constraints:[],innerTypes:[]};return e}var Mi={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"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},DosageDoseAndRate:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{type:[{code:"CodeableConcept"}]},"dose[x]":{type:[{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},"rate[x]":{type:[{code:"Ratio"},{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},label:{min:1,type:[{code:"string"}]},"value[x]":{min:1,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"}]}}},ElementDefinitionConstraint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},key:{min:1,type:[{code:"id"}]},requirements:{type:[{code:"string"}]},severity:{min:1,type:[{code:"code"}]},human:{min:1,type:[{code:"string"}]},expression:{type:[{code:"string"}]},xpath:{type:[{code:"string"}]},source:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},ElementDefinitionBinding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},strength:{min:1,type:[{code:"code"}]},description:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]}}},ElementDefinitionMapping:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},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"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"bounds[x]":{type:[{code:"Duration"},{code:"Range"},{code:"Period"}]},count:{type:[{code:"positiveInt"}]},countMax:{type:[{code:"positiveInt"}]},duration:{type:[{code:"decimal"}]},durationMax:{type:[{code:"decimal"}]},durationUnit:{type:[{code:"code"}]},frequency:{type:[{code:"positiveInt"}]},frequencyMax:{type:[{code:"positiveInt"}]},period:{type:[{code:"decimal"}]},periodMax:{type:[{code:"decimal"}]},periodUnit:{type:[{code:"code"}]},dayOfWeek:{max:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},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"}]}}},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 sr(r){return new pn(r).parse()}var Ie=un(Mi),dn=Object.create(null),_i=Object.create(null),na={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function Ui(r){let e;return e=_i[r],e||(e=_i[r]=Object.create(null)),e}function ar(r){let t=(Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");gn(t);for(let n of t)cr(n)}function cr(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=sr(r),t=na[r.url],n,i;t?(n=Ie,i=t):r.url===`http://hl7.org/fhir/StructureDefinition/${r.type}`||r.url===`https://medplum.com/fhir/StructureDefinition/${r.type}`||r.type?.startsWith("http://")||r.type?.startsWith("https://")?(n=Ie,i=r.type):(n=Ui(r.url),i=r.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;dn[r.url]=e}function fn(){return Ie}function hn(r){return!!Ie[r]}function $e(r,e){if(e){let t=Ui(e)[r];if(t)return t}return Ie[r]}function ce(r,e){let t=$e(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function lt(r){let e=Ie[r];return e&&ur(e)}function mn(r){return!!dn[r]}function yn(r){return dn[r]}var pn=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");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,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:ca(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=ln(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[ln(e,n.path)]=t;break}n=n.parent}if(!n){let i=ln(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),this.slicingContext&&!je(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!je(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let t=or(e);this.backboneContext={type:{name:t,type:t,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:je(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){aa(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&&!je(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!je(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}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=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(je(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=or(e)),n||(n=ue(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Fi(e.max),n=e.base?.max?Fi(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:Ni(k(i,"fixed[x]")),pattern:Ni(k(i,"pattern[x]")),binding:e.binding}}};function ia(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Ie[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+V(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!oa.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(Li):[Li]},r}var Li={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},oa=["resourceType","id","meta"];function Fi(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function ln(r,e=""){return sa(r.path,e)}function sa(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function je(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Ni(r){return Array.isArray(r)&&r.length>0?r[0]:C(r)?void 0:r}function aa(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 ca(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}function lr(r,e,t){new xn(r,e,t).crawl()}function ua(r,e,t){return new vn(r,e,t).crawl()}var xn=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??ce(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=I(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=ke(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)for(let a of Ve(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,t,n){if(!pt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ce(e.type);this.crawlObject(e,i,t)}}},vn=class{constructor(e,t,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=t,this.schema=n?.schema??ce(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=I(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=ke(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)for(let a of Ve(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,t,n){if(!pt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ce(e.type);await this.crawlObject(e,i,t)}}};function ke(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?pr:k,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let u=[];for(let l of s)if(Array.isArray(l))for(let p of l)u.push(n(p,a,t));else(t?.withPath&&l?.value!==void 0||!t?.withPath&&l!==void 0)&&u.push(n(l,a,t));s=u}return s}function pr(r,e,t){let n=r.path;return la(k(r,e,t),n,e)}function la(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}function pa(r){return`.${r}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,t)=>`/${t}`)}var dr={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},da=new we(1e3);function pt(r){return r==="undefined"||r in dr}var He={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},fa={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function ha(r,e){if(!lt(r.resourceType))throw new f(x("Invalid resource type"));return Bi(S(r),e)}function Bi(r,e){return new Tn(r,e).validate()}var Tn=class{constructor(e,t){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"base64BinaryMaxBytes");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],I(e.value)&&this.resourceStack.push(e.value),t?.profile?this.schema=sr(t.profile):this.schema=ce(e.type),this.base64BinaryMaxBytes=t?.base64BinaryMaxBytes??1*1024*1024,this.collect=t?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){Sn(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),lr(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new f({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,t.path)}onEnterResource(e,t){this.resourceStack.push(t.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(b(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(b(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(b(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),ga(a,s)||this.issues.push(b(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of u){this.constraintsCheck(p,s),this.referenceTypeCheck(p,s),this.checkPropertyValue(p),this.collectValue(p,s);let y=xa(p,s.slicing);y&&l&&(l[y]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(b(e.path,"Missing required property")),!1):C(e)?(this.issues.push(b(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){pt(e.type)?this.validatePrimitiveType(e):C(e.value)&&this.issues.push(b(e.path,"Invalid empty non-primitive value"))}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(b(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=ya(e,s,t);if(a){let u,l;a.startsWith("_")?(u=a.slice(1),l=s.slice(1)):(u="_"+a,l="_"+s),u in o&&o[u]!==l&&this.issues.push(xe("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(xe("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(b(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t){let n=t.constraints;for(let i of n??g)if(i.severity==="error"&&!(i.key in fa)&&!this.isExpressionTrue(i,e)){this.issues.push(an(e.path,i));return}}referenceTypeCheck(e,t){if(e.type!=="Reference")return;let n=e.value;if(!j(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=t.type.find(y=>y.code==="Reference")?.targetProfile;if(!o)return;let s=Jr+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,l="https://medplum.com/fhir/StructureDefinition/",p=l+i;for(let y of o)if(y===a||y===u||y===p||!y.startsWith(s)&&!y.startsWith(l))return;this.issues.push(xe("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,t){t.binding?.valueSet&&t.binding.strength==="required"&&Ta(e.type)&&this.appendToken(t.binding.valueSet,e)}appendToken(e,t){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}for(let i of n??g)if(i.path===t.path)return;this.collect.tokens[e]=Q(n,t)}isExpressionTrue(e,t){let n={"%context":t,"%ucum":S(zr)},i=this.currentResource();i&&(n["%resource"]=S(i)),I(this.root.value)&&(n["%rootResource"]=this.root);try{let o=P(e.expression,[t],n,da);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(cn(t.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[t,n]=va(e),i=e.path;if(t){let{type:o,value:s}=t;if(!(o in dr)){this.issues.push(b(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=dr[o];if(typeof s!==a){s!==null&&this.issues.push(b(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}o==="base64Binary"?this.validateBase64Binary(s,i):a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&lr(n,this,{schema:ce("Element"),initialPath:i})}validateBase64Binary(e,t){if(!He.base64Binary.exec(e)){this.issues.push(b(t,"Invalid base64Binary format"));return}let n=0;e.endsWith("==")?n=2:e.endsWith("=")&&(n=1),Math.max(0,Math.floor(e.length*3/4)-n)>this.base64BinaryMaxBytes&&this.issues.push(b(t,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}validateString(e,t,n){if(!e.trim()){this.issues.push(b(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(b(n,"String cannot be larger than 1 MB"));return}let i=He[t];i&&!i.exec(e)&&this.issues.push(b(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(b(n,"Invalid numeric value")):ma(t)&&!Number.isInteger(e)?this.issues.push(b(n,"Expected number to be an integer")):t===d.positiveInt&&e<=0?this.issues.push(b(n,"Expected number to be positive")):t===d.unsignedInt&&e<0&&this.issues.push(b(n,"Expected number to be non-negative"))}};function ma(r){return r===d.integer||r===d.positiveInt||r===d.unsignedInt}function ya(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return k(r,o)?n+a:void 0}}function Sn(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(b(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(b(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(b(`${o}[${a}]`,"Invalid null value")):i[a]&&Sn(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Sn(i,o,t)}}function ga(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!Ge(t,e.pattern)||e.fixed&&!le(t,e.fixed))}function fr(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return Ge(r,i.pattern);if(i.fixed)return le(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function xa(r,e){for(let t of e?.slices??g)if(e?.discriminator?.every(n=>Ve(ke(r,n.path))?.some(i=>fr(i,n,t))))return t.name}function va(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function Ta(r){switch(r){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function m(r){return[{type:d.boolean,value:r}]}function S(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:d.integer,value:r}:typeof r=="number"?{type:d.decimal,value:r}:typeof r=="boolean"?{type:d.boolean,value:r}:typeof r=="string"?{type:d.string,value:r}:O(r)?{type:d.Quantity,value:r}:I(r)?{type:r.resourceType,value:r}:gr(r)?{type:d.CodeableConcept,value:r}:yr(r)?{type:d.Coding,value:r}:{type:d.BackboneElement,value:r}}function N(r){return r.length===0?!1:!!r[0].value}function z(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function k(r,e,t){if(!r.value)return;let n=mt(r.type,e,t?.profileUrl);return n?$i(r,e,n):Hi(r,e)}function $i(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a,u=t.path.lastIndexOf("."),l=t.path.substring(u+1);for(let p of i){let y=l.replace("[x]",V(p.code));if(o=n[y],a=n["_"+y],o!==void 0||a!==void 0){s=p.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let p=0;p<Math.max(o.length,a.length);p++)o[p]=bn(o[p],a[p])}else if(!o&&Array.isArray(a)){o=a.slice();for(let p=0;p<a.length;p++)o[p]=bn(void 0,a[p])}else o=bn(o,a);if(!C(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(p=>Wi(p,s)):Wi(o,s)}function Wi(r,e){return e==="Resource"&&I(r)&&(e=r.resourceType),{type:e,value:r}}function Hi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t){let i=t[e];Array.isArray(i)?n=i.map(S):n=S(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(d)){let s=i+V(o);if(s in t){let a=t[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||C(n[0]))return}else if(C(n))return;return n}function dt(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(N(Qe(t,i))){n=!0;break}n||e.push(t)}return e}function En(r){return m(!N(r))}function Rn(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?m(!1):m(r.every((t,n)=>N(Qe(t,e[n]))))}function Cn(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?m(!0):m(r.some((t,n)=>!N(Qe(t,e[n]))))}function Qe(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?m(Math.abs(t-n)<1e-8):O(t)&&O(n)?m(An(t,n)):m(typeof t=="object"&&typeof n=="object"?On(r,e):t===n)}function mr(r,e){return r.length===0&&e.length===0?m(!0):r.length!==e.length?m(!1):(r.sort(qi),e.sort(qi),m(r.every((t,n)=>N(Gi(t,e[n])))))}function Gi(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"?m(Math.abs(s-a)<.01):O(s)&&O(a)?m(An(s,a)):m(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"?On({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function qi(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 ft(r,e){let{value:t}=r;if(t==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return Pn(t);case"DateTime":return De(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return wn(t);case"Quantity":return O(t);default:return r.type===n||typeof t=="object"&&t?.resourceType===n}}function Pn(r){return typeof r=="string"&&!!He.date.exec(r)}function De(r){return typeof r=="string"&&!!He.dateTime.exec(r)}function wn(r){return!!(r&&typeof r=="object"&&("start"in r&&De(r.start)||"end"in r&&De(r.end)))}function ht(r){if(r){if(Pn(r)||De(r))return{start:hr(r,"0000-01-01T00:00:00.000"),end:hr(r,"xxxx-12-31T23:59:59.999")};if(wn(r))return{start:r.start?hr(r.start,"0000-01-01T00:00:00.000"):void 0,end:r.end?hr(r.end,"xxxx-12-31T23:59:59.999"):void 0}}}function hr(r,e){let t="Z",n=Math.max(r.indexOf("+",10),r.indexOf("-",10));n>-1?(t=r.substring(n),r=r.substring(0,n)):r.endsWith("Z")&&(r=r.substring(0,r.length-1));let i=r+e.substring(r.length)+t;return new Date(i).toISOString()}function O(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function An(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 On(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(ji(o)&&ji(s)){if(!On(o,s))return!1}else if(o!==s)return!1}return!0}function ji(r){return r!==null&&typeof r=="object"}function bn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Sa(r??{},e)}return r}function Sa(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Je(r,e){return I(r,e)&&"id"in r&&typeof r.id=="string"}function ve(r){let e=D(r)??"undefined/undefined",t=Ji(r);return t===e?{reference:e}:{reference:e,display:t}}function D(r){if(j(r))return r.reference;if(Je(r))return`${r.resourceType}/${r.id}`}function Te(r){if(r)return j(r)?r.reference.split("/")[1]:r.id}function ba(r){if(r?.reference===void 0)throw new f(x("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(x("Unable to parse reference string."));return[e,t]}function vr(r){if(r)if(r.accounts&&r.account){let e=r.accounts;return e.some(t=>t.reference===r.account?.reference)?e:[r.account,...e]}else return Ve(r.accounts??r.account)}function zi(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Ji(r){if(zi(r)){let e=Ea(r);if(e)return e}if(r.resourceType==="Device"){let e=Ra(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return ze(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),gr(e))return ze(e);if(Zi(e))return e.text}return D(r)??""}function Ea(r){let e=r.name;if(e&&e.length>0)return Ye(e[0])}function Ra(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ca(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Qi(t);if(n)return n}else return Qi(e)}function Qi(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Pa(r){return r?new Date(r):void 0}function yt(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),p=a-i;(u<o||u===o&&l<s)&&p--;let y=a*12+u-(i*12+o);l<s&&y--;let T=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:y,days:T}}function wa(r,e){let{years:t,months:n,days:i}=yt(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 Aa(r){let e={};return Ki(r.item,e),e}function Ki(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Ki(t.item,e)}function Oa(r){let e={};return Yi(r.item,e),e}function Yi(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),Yi(t.item,e)}function Xi(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 Ia(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 ka(r,...e){let t=ue(r,...e);if(!t)return;let n=k({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function ue(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 gt(r,e){let t=In(r);return JSON.stringify(t,null,e?2:void 0)??""}function In(r){if(!(r==null||r===""))return typeof r=="object"?Array.isArray(r)?Va(r):Da(r):r}function Va(r){let e=r.length;if(e===0)return;let t,n=0;for(let i=0;i<e;i++){let o=r[i],s=In(o);s!==o&&!t&&(t=Array.from(r)),s===void 0?t&&(t[i]=null):(t&&(t[i]=s),n++)}if(n!==0)return t??r}function Da(r){let e,t=0;for(let n in r){let i=r[n],o=In(i);o!==i&&!e&&(e={...r}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),t++)}if(t!==0)return e??r}function C(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!ee(r):!1}function ee(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function Ma(r){if(!r)return;let e=r.length-1;for(;e>=0&&C(r[e]);)e--;return e>=0?r.slice(0,e+1):void 0}function le(r,e,t){return r===e||C(r)&&C(e)?!0:C(r)||C(e)?!1:Array.isArray(r)&&Array.isArray(e)?_a(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?La(r,e,t):(E(r)||E(e),!1)}function _a(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!le(r[t],e[t]))return!1;return!0}function La(r,e,t){let n=new Set;for(let i of Object.keys(r))n.add(i);for(let i of Object.keys(e))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(!le(o,s,i))return!1}return!0}function Ge(r,e){return C(r)?!0:C(e)?!1:Array.isArray(r)&&Array.isArray(e)?Fa(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Na(r,e):E(r)||E(e)?!1:r===e}function Fa(r,e){return e.every(t=>r.some(n=>Ge(n,t)))}function Na(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ge(r[t],n))}function Se(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Ua(r){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(r)}function E(r){return r!==null&&typeof r=="object"}function kn(r){return r.every(Me)}function Me(r){return typeof r=="string"}function yr(r){return E(r)&&"code"in r&&typeof r.code=="string"}function gr(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(yr)}function Ba(r,e){for(let t of r??g)for(let n of t.coding??g)if(n.system===e)return n.code}function Zi(r){return E(r)&&"text"in r&&typeof r.text=="string"}var eo=[];for(let r=0;r<256;r++)eo.push(r.toString(16).padStart(2,"0"));function Vn(r){let e=Mn(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=eo[t[i]];return n.join("")}function Dn(r){let e=Mn(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=String.fromCodePoint(t[i]);return window.btoa(n.join(""))}function Mn(r){return ArrayBuffer.isView(r)?r.buffer:r}function V(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Wa(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Tr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function pe(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function xr(r,e){return r.coding?.find(t=>t.system===e)?.code}function qa(r,e,t){r.coding??=[];let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function ja(r,e,t,n){return r.qualifiedInterval?.find(i=>ro(i,e)&&Qa(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function $a(r,e,t){return to(r,e,t)[0]}function to(r,e,t){return r.qualifiedInterval?.filter(n=>ro(n,e)&&(!t||t.includes(n.condition)))??[]}function ro(r,e){return Ha(r,e)&&Ga(r,e)}function Ha(r,e){return!r.gender||r.gender===e.gender}function Ga(r,e){return!r.age||_n(yt(e.birthDate).years,r.age)}function Qa(r,e,t){return!!r.range&&_n(e,r.range,t)}function _n(r,e,t){return(e.low?.value===void 0||io(r,e.low.value,t))&&(e.high?.value===void 0||no(r,e.high.value,t))}function za(r,e){return Number.parseFloat(r.toFixed(e))}function Ja(r,e,t){return Z(r,t)===Z(e,t)}function Ka(r,e,t){return Z(r,t)<Z(e,t)}function Ya(r,e,t){return Z(r,t)>Z(e,t)}function no(r,e,t){return Z(r,t)<=Z(e,t)}function io(r,e,t){return Z(r,t)>=Z(e,t)}function Z(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Xa(r,e,t){return r.find(n=>typeof e=="string"?xr(n.code||{},t)===e:xr(n.code||{},t)===xr(e,t))}function Ve(r){if(r!==void 0)return Array.isArray(r)?r:[r]}function Za(r){return Array.isArray(r)?r[0]:r}var Sr=(r,e)=>new Promise((t,n)=>{e?.signal?.throwIfAborted();let i=setTimeout(t,r);e?.signal?.addEventListener("abort",()=>{clearTimeout(i),n(e.signal?.reason)},{once:!0})});function Ke(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function Ln(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function Q(r,e){return r?(r.push(e),r):[e]}function xt(r){return r.sort((e,t)=>e.localeCompare(t))}function br(r){return r.endsWith("/")?r:r+"/"}function oo(r){return r.startsWith("/")?r.slice(1):r}function $(r,e){return new URL(oo(e),br(r.toString())).toString()}function Fn(r,e){return $(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Nn(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var so=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function ec(r){return so.test(r)}function tc(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function rc(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[Xi(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function nc(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function ic(r,e){let t=[];if(!r)return t;for(let n=0;n<r.length;n++){let i=e(r[n],n);Array.isArray(i)?t.push(...i):i!==void 0&&t.push(i)}return t}function oc(r){return r.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("\u201C","“").replaceAll("\u201D","”").replaceAll("\u2018","‘").replaceAll("\u2019","’").replaceAll("\u2026","…")}var g=Object.freeze([]);function Un(r){if(!r)return"";switch(r.type){case"Address":return co(r.value);case"CodeableConcept":return ze(r.value);case"Coding":return Bn(r.value);case"ContactPoint":return r.value.value;case"HumanName":return Ye(r.value);case"Quantity":return de(r.value);case"Reference":return ao(r.value);default:return r.value?.toString()??""}}function ao(r){return r?r.display??r.reference??gt(r):""}function co(r,e){if(!r)return"";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 Ye(r,e){if(!r)return"";let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=_e(r.text);if(n)return n}return t.join(" ").trim()}function sc(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function ac(r){return _e(r.family)??""}function vt(r){return r instanceof Date&&!Number.isNaN(r.getTime())}function cc(r,e,t){if(!r)return"";let n=new Date(r);return vt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function uc(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return vt(n)?n.toLocaleTimeString(e,t):""}function uo(r,e,t){if(!r)return"";let[n=0,i=0,o=0]=r.split(":").map(Number),s=new Date(Date.UTC(1970,0,1,n,i,o));return vt(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...t,timeZone:"UTC"}).format(s):""}function Er(r,e,t){if(!r)return"";let n=new Date(r);return vt(n)?n.toLocaleString(e,t):""}function lc(r,e,t){return!r||!r.start&&!r.end?"":Er(r.start,e,t)+" - "+Er(r.end,e,t)}var pc={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},dc={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},fc={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function hc(r){if(!r)return"";let e=[];return mc(e,r.repeat),r.event&&e.push(r.event.map(t=>Er(t)).join(", ")),V(e.join(" ").trim())}function mc(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(pc[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+dc[i]):r.push("per "+n+" "+fc[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(V).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>uo(o)).join(", "))}function yc(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=vc(n.value,e),`> ${de(n,e)}`):`>= ${de(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=xc(i.value,e),`< ${de(i,e)}`):`<= ${de(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${de(n,e)} - ${de(i,e)}`)}function de(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.at(-1)!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function gc(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function ze(r){if(!r)return"";let e=_e(r.text);return e||(r.coding?r.coding.map(t=>Bn(t)).join(", "):"")}function Bn(r,e){let t=_e(r?.display);if(t){let n=e?_e(r?.code):void 0;return`${t}${n?" ("+n+")":""}`}return _e(r?.code)??""}function lo(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(de(r.valueQuantity));else if(r.valueCodeableConcept)e.push(ze(r.valueCodeableConcept));else{let t=_e(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>lo(t)).join(" / ")),e.join(" / ").trim()}function _e(r){return typeof r=="string"?r:void 0}function xc(r,e,t=1){return(po(r,e)+t)*Math.pow(10,-e)}function vc(r,e,t=1){return(po(r,e)-t)*Math.pow(10,-e)}function po(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var d={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",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",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",SimpleQuantity:"SimpleQuantity",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",xhtml:"xhtml"};function Tc(r){for(let e of r.entry??g){let t=e.resource;t.resourceType==="SearchParameter"&&Rr(t)}}function gn(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)t?.resourceType==="StructureDefinition"&&t.kind==="resource"&&ho(t.type)}function ho(r){let e=U.types[r];return e||(e={searchParamsDetails:{}},U.types[r]=e),!e.searchParams&&r!=="Binary"&&(e.searchParams={_id:{base:[r],code:"_id",type:"token",expression:r+".id"},_lastUpdated:{base:[r],code:"_lastUpdated",type:"date",expression:r+".meta.lastUpdated"},_compartment:{base:[r],code:"_compartment",type:"reference",expression:r+".meta.compartment"},_profile:{base:[r],code:"_profile",type:"uri",expression:r+".meta.profile"},_security:{base:[r],code:"_security",type:"token",expression:r+".meta.security"},_source:{base:[r],code:"_source",type:"uri",expression:r+".meta.source"},_tag:{base:[r],code:"_tag",type:"token",expression:r+".meta.tag"}}),e}function Rr(r){for(let e of r.base??g){let t=ho(e);t.searchParams||(t.searchParams={}),t.searchParams[r.code]=r}}function or(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?mo((r.base?.path??r.path)?.split(".")):e}function mo(r){return r.length===1?r[0]:r.map(V).join("")}function ur(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Sc(){return Object.values(fn()).filter(ur).map(r=>r.name)}function bc(r){return U.types[r]?.searchParams}function Ec(r,e){return U.types[r]?.searchParams?.[e]}function Rc(r){let e=r.replaceAll("[x]","").split(".").pop();return yo(e)}function yo(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(Pc).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Cc=new Set(["CDS","ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Pc(r){let e=r.toUpperCase();return r===e?r:Cc.has(e)?e:e.charAt(0)+r.slice(1)}function mt(r,e,t){let n=$e(r,t);if(n)return go(n.elements,e)}function go(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function wc(r){return!!(r&&typeof r=="object"&&"type"in r&&"value"in r)}function I(r,e){return!(!r||typeof r!="object"||!("resourceType"in r)||e&&r.resourceType!==e)}function j(r,e){return r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string"?e?r.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var U={types:{}};function Wn(r){switch(r.type){case d.uuid:case d.uri:case d.url:case d.string:case d.oid:case d.markdown:case d.id:case d.code:case d.canonical:case d.base64Binary:case d.SystemString:case d.date:case d.dateTime:case d.instant:return r.value;case d.Identifier:return`${r.value.system??""}|${r.value.value}`;case d.Coding:return fo(r.value);case d.CodeableConcept:return r.value.coding?.map(fo).join(",")??r.value.text;case d.HumanName:return r.value.text?r.value.text:Ye(r.value);case d.unsignedInt:case d.positiveInt:case d.integer:case d.decimal:return r.value.toString();case d.boolean:return r.value?"true":"false";case d.Extension:return r.value.url;case d.ContactPoint:return r.value.value;case d.Quantity:case d.Age:case d.Count:case d.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case d.Reference:return r.value.reference;default:return Je(r.value)?D(r.value):JSON.stringify(r)}}function fo(r){return r?`${r.system??""}|${r.code}`:""}function Xe(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 fe=()=>[],M={empty:(r,e)=>m(e.every(t=>C(t.value))),hasValue:(r,e)=>m(e.length!==0),exists:(r,e,t)=>t?m(e.some(n=>N(t.eval(r,[n])))):m(e.length>0&&e.every(n=>!C(n.value))),all:(r,e,t)=>m(e.every(n=>N(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return m(!1);return m(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return m(!0);return m(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return m(!1);return m(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return m(!0);return m(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return m(!0);let n=t.eval(r,Le(r));return n.length===0?m(!1):m(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Le(r));return n.length===0?m(!0):e.length===0?m(!1):m(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:d.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)=>m(e.length===M.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>N(t.eval(r,[n]))),select:(r,e,t)=>e.flatMap(n=>t.eval({parent:r,variables:{$this:n}},[n])),repeat:fe,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(-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 TypeError("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 TypeError("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,Le(r)),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,Le(r)),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,Le(r));return dt([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Le(r));return[...e,...n]},htmlChecks:(r,e,t)=>[S(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return N(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);if(typeof t=="boolean")return[{type:d.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return m(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return m(!0);if(["false","f","no","n","0","0.0"].includes(n))return m(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:m(M.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return typeof t=="number"?[{type:d.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:d.integer,value:Number.parseInt(t,10)}]:typeof t=="boolean"?[{type:d.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:m(M.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:d.date,value:Xe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:m(M.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:d.dateTime,value:Xe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:m(M.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return typeof t=="number"?[{type:d.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:d.decimal,value:Number.parseFloat(t)}]:typeof t=="boolean"?[{type:d.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:m(M.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return O(t)?[{type:d.Quantity,value:t}]:typeof t=="number"?[{type:d.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:d.Quantity,value:{value:Number.parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:d.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:m(M.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return t==null?[]:O(t)?[{type:d.string,value:`${t.value} '${t.unit}'`}]:[{type:d.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:m(M.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:d.time,value:Xe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:m(M.toTime(r,e).length===1),indexOf:(r,e,t)=>H((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>H((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>H((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>H((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>H((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>H(t=>t.toUpperCase(),r,e),lower:(r,e)=>H(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>H((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>H((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>H((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),r,e,t,n),length:(r,e)=>H(t=>t.length,r,e),toChars:(r,e)=>H(t=>t?t.split(""):void 0,r,e),encode:fe,decode:fe,escape:fe,unescape:fe,trim:fe,split:fe,join:(r,e,t)=>{let n=t?.eval(r,Le(r))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:d.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>te(Math.abs,r,e),ceiling:(r,e)=>te(Math.ceil,r,e),exp:(r,e)=>te(Math.exp,r,e),floor:(r,e)=>te(Math.floor,r,e),ln:(r,e)=>te(Math.log,r,e),log:(r,e,t)=>te((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>te(Math.pow,r,e,t),round:(r,e,...t)=>te((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},r,e,...t),sqrt:(r,e)=>te(Math.sqrt,r,e),truncate:(r,e)=>te(t=>Math.trunc(t),r,e),children:fe,descendants:fe,trace:(r,e,t)=>e,now:()=>[{type:d.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:d.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:d.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=M.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=M.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=yt(o[0].value,s[0].value);return[{type:d.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof L?n=t.name:t instanceof J&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:d.boolean,value:ft(i,n)})):[]},not:(r,e)=>M.toBoolean(r,e).map(t=>({type:d.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 S(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:d.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:d.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:d.BackboneElement,value:{namespace:"System",name:"Integer"}}:I(t)?{type:d.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:d.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:d.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:d.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof L&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:d.id,value:Te(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=ue(i,n);if(o)return[{type:d.Extension,value:o}]}return[]}};function H(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=re(t,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,t)[0]?.value),s=r(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(S):[S(s)]}function te(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=re(t,1),o=O(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),u=o?d.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function re(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}function Le(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var he=class{constructor(e,t){c(this,"original");c(this,"child");this.original=e,this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},B=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},L=class{constructor(e){c(this,"name");this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return I(t,this.name)?e:pr(e,this.name)}toString(){return this.name}},Tt=class{eval(){return[]}toString(){return"{}"}},St=class extends at{constructor(t,n,i){super(t,n);c(this,"impl");this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},me=class extends ae{constructor(e,t){super("as",e,t)}eval(e,t){return M.ofType(e,this.left.eval(e,t),this.right)}},w=class extends ae{},_=class extends w{constructor(t,n,i,o){super(t,n,i);c(this,"impl");this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=O(s)?s.value:s,l=O(a)?a.value:a,p=this.impl(u,l);return typeof p=="boolean"?m(p):O(s)?[{type:d.Quantity,value:{...s,value:p}}]:[S(p)]}},bt=class extends ae{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:d.string,value:o.map(s=>s.value).join("")}]:o}},Et=class extends w{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return m(n.some(o=>o.value===i[0].value))}},Rt=class extends w{constructor(e,t){super("in",e,t)}eval(e,t){let n=z(this.left.eval(e,t)),i=this.right.eval(e,t);return n?m(i.some(o=>Qe(n,o)[0].value)):[]}},J=class extends ae{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()}`}},be=class extends ae{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return dt([...n,...i])}},Ct=class extends w{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Rn(n,i)}},Pt=class extends w{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Cn(n,i)}},wt=class extends w{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return mr(n,i)}},At=class extends w{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return En(mr(n,i))}},Ee=class extends w{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 m(ft(n[0],i))}},Ot=class extends w{constructor(e,t){super("and",e,t)}eval(e,t){let n=z(this.left.eval(e,t),"boolean"),i=z(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?m(!0):n?.value===!1||i?.value===!1?m(!1):[]}},It=class extends w{constructor(e,t){super("or",e,t)}eval(e,t){let n=z(this.left.eval(e,t),"boolean"),i=z(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?m(!1):n?.value||i?.value?m(!0):[]}},kt=class extends w{constructor(e,t){super("xor",e,t)}eval(e,t){let n=z(this.left.eval(e,t),"boolean"),i=z(this.right.eval(e,t),"boolean");return!n||!i?[]:m(n.value!==i.value)}},Vt=class extends w{constructor(e,t){super("implies",e,t)}eval(e,t){let n=z(this.left.eval(e,t),"boolean"),i=z(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?m(!0):!n||!i?[]:m(!1)}},ne=class{constructor(e,t){c(this,"name");c(this,"args");this.name=e,this.args=t}eval(e,t){let n=M[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(", ")})`}},Re=class{constructor(e,t){c(this,"left");c(this,"expr");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 Ac=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Oc={"'":"'",'"':'"',"`":"`",r:"\r",n:`
|
|
2
|
+
`,t:" ",f:"\f","\\":"\\"},ye=class{constructor(e,t,n,i){c(this,"str");c(this,"keywords");c(this,"operators");c(this,"dateTimeLiterals");c(this,"symbolRegex");c(this,"result",[]);c(this,"pos",{index:0,line:1,column:0});c(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==='"'||e==="`"?this.consumeString(e):e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():(e==="$"||e==="%")&&(t==="'"||t==='"'||t==="`")?this.consumeQuotedSymbol(t):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()!==`
|
|
3
|
+
`))}consumeString(e){this.advance();let t="",n;for(;n=this.consumeChar(e);)t+=n;let i=this.buildToken(e==="`"?"Symbol":"String",t);return this.advance(),i}consumeChar(e){let t=this.curr();if(t==="\\"){this.advance();let n=this.curr(),i=Oc[n];if(i!==void 0)return this.advance(),i;if(n==="u"){this.advance();let o=/^[0-9a-fA-F]{4}$/.exec(this.str.substring(this.pos.index,this.pos.index+4))?.[0];return o?(this.advance(),this.advance(),this.advance(),this.advance(),String.fromCodePoint(Number.parseInt(o,16))):"u"}return this.consumeChar(e)}return t===e||!t?"":(this.advance(),t)}consumeQuotedSymbol(e){this.mark();let t=this.pos.index;this.advance(),this.consumeString(e);let n=this.str.substring(t,this.pos.index);return this.buildToken("Symbol",n)}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;if(this.curr()==="T"&&(t=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.pos.index===e)throw new Error("Invalid DateTime literal");let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&Ic(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]}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()===`
|
|
4
|
+
`?(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 Ic(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Ac.includes(r.value)))}var Dt=["true","false"],Mt=["!=","!~","<=",">=","{}","->"];function xo(r){return new ye(r,Dt,Mt).tokenize()}var v={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},kc={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Vc={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Re(e,t)},precedence:v.Indexer},Dc={parse(r,e){if(!(e instanceof L))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new ne(e.name,t)},precedence:v.FunctionCall};function Mc(r){let e=r.split(" "),t=Number.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 Ze(){return new ct().registerPrefix("String",{parse:(r,e)=>new B({type:d.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new B({type:d.dateTime,value:Xe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new B({type:d.Quantity,value:Mc(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new B({type:e.value.includes(".")?d.decimal:d.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new B({type:d.boolean,value:!0})}).registerPrefix("false",{parse:()=>new B({type:d.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new L(e.value)}).registerPrefix("{}",{parse:()=>new Tt}).registerPrefix("(",kc).registerInfix("[",Vc).registerInfix("(",Dc).prefix("+",v.UnaryAdd,(r,e)=>new St("+",e,t=>t)).prefix("-",v.UnarySubtract,(r,e)=>new _("-",e,e,(t,n)=>-n)).infixLeft(".",v.Dot,(r,e,t)=>new J(r,t)).infixLeft("/",v.Divide,(r,e,t)=>new _("/",r,t,(n,i)=>n/i)).infixLeft("*",v.Multiply,(r,e,t)=>new _("*",r,t,(n,i)=>n*i)).infixLeft("+",v.Add,(r,e,t)=>new _("+",r,t,(n,i)=>n+i)).infixLeft("-",v.Subtract,(r,e,t)=>new _("-",r,t,(n,i)=>n-i)).infixLeft("|",v.Union,(r,e,t)=>new be(r,t)).infixLeft("=",v.Equals,(r,e,t)=>new Ct(r,t)).infixLeft("!=",v.NotEquals,(r,e,t)=>new Pt(r,t)).infixLeft("~",v.Equivalent,(r,e,t)=>new wt(r,t)).infixLeft("!~",v.NotEquivalent,(r,e,t)=>new At(r,t)).infixLeft("<",v.LessThan,(r,e,t)=>new _("<",r,t,(n,i)=>n<i)).infixLeft("<=",v.LessThanOrEquals,(r,e,t)=>new _("<=",r,t,(n,i)=>n<=i)).infixLeft(">",v.GreaterThan,(r,e,t)=>new _(">",r,t,(n,i)=>n>i)).infixLeft(">=",v.GreaterThanOrEquals,(r,e,t)=>new _(">=",r,t,(n,i)=>n>=i)).infixLeft("&",v.Ampersand,(r,e,t)=>new bt(r,t)).infixLeft("and",v.And,(r,e,t)=>new Ot(r,t)).infixLeft("as",v.As,(r,e,t)=>new me(r,t)).infixLeft("contains",v.Contains,(r,e,t)=>new Et(r,t)).infixLeft("div",v.Divide,(r,e,t)=>new _("div",r,t,(n,i)=>Math.trunc(n/i))).infixLeft("in",v.In,(r,e,t)=>new Rt(r,t)).infixLeft("is",v.Is,(r,e,t)=>new Ee(r,t)).infixLeft("mod",v.Modulo,(r,e,t)=>new _("mod",r,t,(n,i)=>n%i)).infixLeft("or",v.Or,(r,e,t)=>new It(r,t)).infixLeft("xor",v.Xor,(r,e,t)=>new kt(r,t)).infixLeft("implies",v.Implies,(r,e,t)=>new Vt(r,t))}var _c=Ze();function _t(r){return new he(r,_c.construct(xo(r)).consumeAndParse())}function Lc(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]=S(t[n]))}return P(r,t).map(n=>n.value)}function P(r,e,t={},n=void 0){let i;if(typeof r=="string"){let o=n?.get(r);i=o??_t(r),n&&!o&&n.set(r,i)}else i=r;return i.eval({variables:t},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function Fc(r){let e=[];for(let t of r)t.type===d.Range?e.push([t.value?.low?.value,t.value?.high?.value]):typeof t.value=="number"&&e.push([t.value,t.value]);return e}function qn(r){let e=[];for(let t of r){let n=ht(t.value);n&&e.push(n)}return e}function jn(r){let e=new Set;for(let t of r){let n=Un(t);n&&e.add(n)}return Array.from(e)}function $n(r){let e=new Set;for(let t of r){let{value:n}=t;n&&(Me(n)?e.add(n):j(n)?e.add(n.reference):Je(n)?e.add(D(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function Nc(r){let e=[];for(let t of r){let{value:n}=t;typeof n=="number"?e.push({value:n}):O(n)&&e.push(n)}return e}function Uc(r){let e=new Set;for(let t of r)Me(t.value)&&e.add(t.value);return Array.from(e)}function Hn(r,e={}){let t=[];for(let n of r)Bc(e,t,n);return t}function Bc(r,e,t){let{type:n,value:i}=t;switch(n){case d.Identifier:Wc(e,r,i);break;case d.CodeableConcept:qc(e,r,i);break;case d.Coding:vo(e,r,i);break;case d.ContactPoint:jc(e,r,i);break;default:Fe(e,r,void 0,i?.toString())}}function Wc(r,e,t){t?.type?.text&&Fe(r,e,e.textSearchSystem,t.type.text),Fe(r,e,t?.system,t?.value)}function qc(r,e,t){t?.text&&Fe(r,e,e.textSearchSystem,t.text);for(let n of t?.coding??g)vo(r,e,n)}function vo(r,e,t){t&&(t.display&&Fe(r,e,e.textSearchSystem,t.display),Fe(r,e,t.system,t.code))}function jc(r,e,t){t&&Fe(r,e,t.system,t.value?.toLocaleLowerCase())}function Fe(r,e,t,n){(t||n)&&!r.some(i=>i.system===t&&i.value===n)&&r.push({system:t,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var $c=20,Hc=1e3,h={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},Gn={contains:h.CONTAINS,exact:h.EXACT,above:h.ABOVE,below:h.BELOW,text:h.TEXT,not:h.NOT,in:h.IN,"not-in":h.NOT_IN,"of-type":h.OF_TYPE,missing:h.MISSING,identifier:h.IDENTIFIER,iterate:h.ITERATE},Qn={eq:h.EQUALS,ne:h.NOT_EQUALS,lt:h.LESS_THAN,le:h.LESS_THAN_OR_EQUALS,gt:h.GREATER_THAN,ge:h.GREATER_THAN_OR_EQUALS,sa:h.STARTS_AFTER,eb:h.ENDS_BEFORE,ap:h.APPROXIMATELY,sw:h.STARTS_WITH};function et(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return Gc(i,o)}function Gc(r,e){let t={resourceType:r};for(let[n,i]of e)Qc(t,n,i);return t}function Qc(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!=="_"){if(n==="_has"||e.includes(".")){r.filters=Q(r.filters,{code:e,operator:h.EQUALS,value:t});return}switch(n){case"_sort":zc(r,t);break;case"_cursor":r.cursor=t;break;case"_count":r.count=Number.parseInt(t,10);break;case"_offset":r.offset=Number.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=To(t);i==="iterate"&&(s.modifier=h.ITERATE),r.include=Q(r.include,s);break}case"_revinclude":{let s=To(t);i==="iterate"&&(s.modifier=h.ITERATE),r.revInclude=Q(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=U.types[r.resourceType]?.searchParams?.[n];s?r.filters=Q(r.filters,Eo(s,i,t)):r.filters=Q(r.filters,Kc(n,i,t))}}}}function zc(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})}}var Jc=[h.MISSING,h.PRESENT];function Eo(r,e,t){if(Jc.includes(e))return{code:r.code,operator:e,value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=Yc(t,e||h.EQUALS);if(!So(r,i))throw new f(R(`Invalid format for ${r.type} search parameter: ${i}`));return{code:r.code,operator:n,value:i}}case"reference":case"string":case"token":case"uri":if(!So(r,t))throw new f(R(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:Xc(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Kc(r,e,t){let n=h.EQUALS;if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Qn&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Yc(r,e){let t=r.substring(0,2),n=Qn[t];return n?{operator:n,value:r.substring(2)}:{operator:e,value:r}}function Xc(r){return Gn[r]??h.EQUALS}function To(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new f(R(`Invalid include value '${r}'`))}function So(r,e){return r.type==="date"?De(e):!0}var Zc=/{{([^{}]+)}}/g;function eu(r,e){return r=r.replaceAll(Zc,(t,n)=>{let i=P(n,[],e);return i.length!==1?"":Wn(i[0])}),et(r)}function tu(r){let e=[];r.fields&&e.push("_fields="+r.fields.join(","));for(let t of r.filters??g)e.push(ru(t));r.sortRules&&r.sortRules.length>0&&e.push(nu(r.sortRules)),r.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(r.cursor)),r.offset!==void 0&&r.offset!==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.types&&r.types.length>0&&e.push("_type="+r.types.join(","));for(let t of r.include??g)e.push(bo("_include",t));for(let t of r.revInclude??g)e.push(bo("_revinclude",t));return e.length===0?"":(xt(e),"?"+e.join("&"))}function ru(r){let e=r.operator in Gn?":"+r.operator:"",t=r.operator!==h.EQUALS&&r.operator in Qn?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function nu(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function bo(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function tt(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function iu(r,e){return R(`Invalid modifier :${r} for ${e}`)}function ou(r,e){return r in Gn?iu(r,e):R(`Invalid operator ${r} for ${e}`)}function Lt(r,e){if(e.resourceType!==r.resourceType)return!1;for(let t of e.filters??g)if(!su(r,e,t))return!1;return!0}function su(r,e,t){let n=U.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;let i=P(n.expression,[S(r)]);if(t.operator===h.MISSING||t.operator===h.PRESENT)return au(i,t);switch(n.type){case"reference":return cu(i,t);case"string":case"uri":return pu(i,t);case"token":return uu(i,t);case"date":return fu(i,t);default:return!1}}function au(r,e){let t=r.length>0;return(e.operator===h.MISSING&&e.value==="false"||e.operator===h.PRESENT&&e.value==="true")===t}function cu(r,e){let t=Cr(e.operator);if(e.value===""&&r.length===0)return e.operator===h.EQUALS;let n=$n(r);for(let i of tt(e.value)){let o=n.includes(i);if(!o&&e.code==="_compartment"&&(o=n.some(s=>s?.endsWith("/"+i))),o)return!t}return t}function uu(r,e){let t=Hn(r),n=tt(e.value),i=Cr(e.operator);for(let o of t)for(let s of n)if(lu(o,s))return!i;return i}function lu(r,e){if(e.includes("|")){let[t,n]=e.split("|").map(i=>i.toLowerCase());return!t&&!n?!1:t?r.system?.toLowerCase()===t&&(!n||r.value?.toLowerCase()===n):!r.system&&r.value?.toLowerCase()===n}return r.value?.toLowerCase()===e.toLowerCase()}function pu(r,e){let t=jn(r),n=tt(e.value),i=Cr(e.operator);for(let o of t)for(let s of n)if(du(o,s))return!i;return i}function du(r,e){return r.toLowerCase().includes(e.toLowerCase())}function fu(r,e){let t=qn(r),n=tt(e.value),i=Cr(e.operator);for(let o of t)for(let s of n)if(hu(o,e.operator,s))return!i;return i}function hu(r,e,t){if(!r)return!1;let n=ht(t);if(!n)return!1;let i=r.start??"0000",o=r.end??"9999",s=n.start,a=n.end;switch(e){case h.APPROXIMATELY:case h.EQUALS:case h.NOT_EQUALS:return i<a&&o>s;case h.LESS_THAN:return i<s;case h.GREATER_THAN:return o>a;case h.LESS_THAN_OR_EQUALS:return i<=a;case h.GREATER_THAN_OR_EQUALS:return o>=s;case h.STARTS_AFTER:return i>a;case h.ENDS_BEFORE:return o<s;default:return!1}}function Cr(r){return r===h.NOT_EQUALS||r===h.NOT}var mu={resourceType:"*"},Ro=["DomainConfiguration","JsonWebKey","Login"],Co=["UserSecurityRequest","Project","ProjectMembership","User"],Ce={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Po=[Ce.READ,Ce.VREAD,Ce.HISTORY,Ce.SEARCH];function yu(r,e){return zn(r,Ce.SEARCH,e)}function gu(r,e){return Ro.includes(e)?!1:zn(r,Ce.UPDATE,e)}function zn(r,e,t){return!!r.resource?.some(n=>Ao(n,t,e))}function xu(r,e){return!!wo(e,Ce.UPDATE,r)}function wo(r,e,t){return t?t.resource?.find(n=>vu(r,e,n)):mu}function vu(r,e,t){let n=r.resourceType;return Ao(t,n,e)?n==="Binary"?!0:!(t.compartment&&!r.meta?.compartment?.some(i=>i.reference===t.compartment?.reference)||t.criteria&&!Lt(r,et(t.criteria))):!1}function Ao(r,e,t){return r.resourceType!==e&&(r.resourceType!=="*"||Co.includes(e))?!1:r.interaction?r.interaction.includes(t):!r.readonly||Po.includes(t)}function W(){return typeof window<"u"}function Tu(){return typeof Buffer<"u"}function Su(){return typeof window<"u"?window:void 0}function Pr(){return typeof Buffer<"u"?Buffer:void 0}var ie={assign(r){W()&&globalThis.location.assign(r)},reload(){W()&&globalThis.location.reload()},getSearch(){return W()?globalThis.location.search:""},getPathname(){return W()?globalThis.location.pathname:""},getLocation(){return W()?globalThis.location.toString():""},getOrigin(){return W()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function Oo(r){if(W()){let t=window.atob(r),n=Uint8Array.from(t,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Pr();if(e)return e.from(r,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function Ft(r){if(W()){let t=new window.TextEncoder().encode(r),n=String.fromCodePoint.apply(null,t);return window.btoa(n)}let e=Pr();if(e)return e.from(r,"utf8").toString("base64");throw new Error("Unable to encode base64")}function bu(r){return Ft(r).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function Jn(r){r=r.padEnd(r.length+(4-r.length%4)%4,"=");let e=r.replaceAll("-","+").replaceAll("_","/");return Oo(e)}function wr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Vn(r.buffer)}async function Kn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function oe(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,r=>{let e=Math.trunc(Math.random()*16);return(r==="x"?e:e&3|8).toString(16)})}function Io(r){let e={};r=Se(r);for(let i of r.entry??g){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;s&&(e[s]=oe(),i.fullUrl="urn:uuid:"+e[s],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)=>Eu(i,o,e),2);return ko(JSON.parse(n))}function Eu(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 ko(r){let e=Cu(r),{sorted:t,cycles:n}=Ru(e),i={},o=[];for(let a of r.entry??g)a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=t.map(a=>i[a]);for(let a of n)for(let u of a){let l=i[u],p={...l,request:{...l.request,method:"PUT"}};s.push(p)}return s.push(...o),{...r,entry:s}}var rt={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function Ru(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=rt.NotVisited;function i(o,s){if(t[o]===rt.Visited)return!0;if(t[o]===rt.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=rt.Visiting,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=rt.Visited,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===rt.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Vo(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(j(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Vo(n,e)}}function Cu(r){let e={};for(let t of r.entry??g)t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry??g){let n=t.fullUrl;t.resource&&Vo(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Pu(r){r=Se(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=oe());return Io(e)}function wu(r,e,t){return r.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===t)?.resource}async function Au(r,e,t,n){return{hook:t.hook,hookInstance:oe(),context:n,prefetch:await Ou(r,e,t,n)}}async function Ou(r,e,t,n){if(!t.prefetch)return{};let i={};for(let[o,s]of Object.entries(t.prefetch)){let a=await Iu(r,e,n,s);i[o]=a??null}return i}function Iu(r,e,t,n){if(n=Do(e,t,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return r.readResource(a,u)}let[o,s]=Ke(n,"?",2);return r.search(o,s)}var ku=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Do(r,e,t){return t.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),ku.has(i))return r.id;if(i.startsWith("context.")){let o=i.substring(8),s=Vu(e,o);if(Me(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Vu(r,e){let t=e.split("."),n=r;for(let i of t)if(n&&E(n)&&i in n)n=n[i];else return;return n}var A={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var Ar=class{constructor(){c(this,"listeners");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];for(let n of t??g)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},K=class{constructor(){c(this,"emitter",new Ar)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var Or={"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"},Mo=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Ir=["DiagnosticReport-update"];function Yn(r){return Ir.includes(r)}function Xn(r){if(Ir.includes(r))throw new f(x(`'context.version' is required for '${r}'.`))}var _o={"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",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Lo(r){return Mo.includes(r)}function Zn(r){return!!r.endpoint}function kr(r){if(!Ut(r))throw new f(x("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 Zn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Ut(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(!Or[o])return!1;return!(Zn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Du(r,e,t,n){if(typeof e!="object")throw new f(x(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(x(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(x(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Lo(e.resourceType))throw new f(x(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(x(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Mu(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!j(e.reference))throw new f(x(`context[${t}] is invalid. Expected key '${e.key}' to be a reference.`))}else Du(r,e.resource,t,n)}function _u(r,e){let t=new Map,n=_o[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(x(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Mu(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(x(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)??0)>1)throw new f(x(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Vr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(x("Must provide a topic."));if(!Or[e])throw new f(x(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Or).join(", ")}`));if(typeof t!="object")throw new f(x("context must be a context object or array of context objects."));if(Ir.includes(e)&&!n)throw new f(x(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return _u(e,i),{timestamp:new Date().toISOString(),id:oe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Nt=class extends K{constructor(t){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=t,!t.endpoint)throw new f(x("Subscription request should contain an endpoint."));if(!Ut(t))throw new f(x("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function Lu(r){return JSON.parse(Jn(r))}function ei(r){return r.split(".").length===3}function Bt(r){let[e,t,n]=r.split(".");return Lu(t)}function ti(r){try{return typeof Bt(r).login_id=="string"}catch{return!1}}function ri(r){try{let t=Bt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Wt=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t,A.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Fo;Fo=Symbol.toStringTag;var F=class{constructor(e){c(this,Fo,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");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)}};var nt=class{constructor(e,t=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new Dr,this.prefix=t}makeKey(e){return this.prefix+e}clear(){this.storage===globalThis.localStorage&&this.prefix?Object.keys(this.storage).filter(e=>e.startsWith(this.prefix)).forEach(e=>{this.storage.removeItem(e)}):this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,t){t?this.storage.setItem(this.makeKey(e),t):this.storage.removeItem(this.makeKey(e))}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?gt(t):void 0)}},Dr=class{constructor(){c(this,"data");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]}},ni=class extends nt{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var it={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},No=!1;function Fu(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");it.Event=globalThis.Event,it.ErrorEvent=class extends Event{constructor(t,n){super("error",n);c(this,"message");c(this,"error");this.message=t.message,this.error=t}},it.CloseEvent=class extends Event{constructor(t=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=t,this.reason=n}}}function Bo(r,e){if(!r)throw new Error(e)}function Mr(r){return new r.constructor(r.type,r)}var Ne={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},Uo=!1,qt=class r extends K{constructor(t,n,i={}){No||(Fu(),No=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",t=>{this._debug("open event");let{minUptime:n=Ne.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),Bo(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(t),this.dispatchEvent(Mr(t))});c(this,"_handleMessage",t=>{this._debug("message event"),this.onmessage&&this.onmessage(t),this.dispatchEvent(Mr(t))});c(this,"_handleError",t=>{this._debug("error event",t.message),this._disconnect(void 0,t.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(t),this._debug("exec error listeners"),this.dispatchEvent(Mr(t)),this._connect()});c(this,"_handleClose",t=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(t),this.dispatchEvent(Mr(t))});this._url=t,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return r.CONNECTING}get OPEN(){return r.OPEN}get CLOSING(){return r.CLOSING}get CLOSED(){return r.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?r.CLOSED:r.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(t=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)}reconnect(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())}send(t){if(this._ws?.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{let{maxEnqueuedMessages:n=Ne.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",t),this._messageQueue.push(t))}}_debug(...t){this._options.debug&&this._debugLogger("RWS>",...t)}_getNextDelay(){let{reconnectionDelayGrowFactor:t=Ne.reconnectionDelayGrowFactor,minReconnectionDelay:n=Ne.minReconnectionDelay,maxReconnectionDelay:i=Ne.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(t,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(t=>{setTimeout(t,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:t=Ne.maxRetries,connectionTimeout:n=Ne.connectionTimeout}=this._options;if(this._retryCount>=t){this._debug("max retries reached",this._retryCount,">=",t);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!Uo&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),Uo=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new it.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new it.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(t=1e3,n){if(this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new it.CloseEvent(t,n,this))}catch{}}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var Nu=5e3,ot=class extends K{constructor(...t){super();c(this,"criteria");this.criteria=new Set(t)}getCriteria(){return this.criteria}_addCriteria(t){this.criteria.add(t)}_removeCriteria(t){this.criteria.delete(t)}},ii=class{constructor(e,t){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"connecting",!1);this.criteria=e,this.emitter=new ot(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}clearAttachedSubscription(){this.subscriptionId=void 0,this.token=void 0}},jt=class{constructor(e,t,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof $t))throw new f(x("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(x("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new qt(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new ot,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??Nu,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=Te(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let l=this.criteriaEntriesBySubscriptionId.get(a);if(!l){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}l.connecting=!1,l.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(Te(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(on(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t})}),e.addEventListener("close",()=>{let t={type:"close"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let t={type:"open"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.refreshAllSubscriptions().catch(console.error),this.pingTimer||(this.pingTimer=setInterval(()=>{if(this.waitingForPong){this.waitingForPong=!1,e.reconnect();return}e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0},this.pingIntervalMs))}),this.medplum.addEventListener("change",()=>{let t=this.medplum.getProfile();this.currentProfile&&t===void 0?this.ws.close():t&&this.currentProfile?.id!==t.id&&this.ws.reconnect(),this.currentProfile=t})}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${D(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new f(x("Failed to get token"));if(!o)throw new f(x("Failed to get URL from $get-ws-binding-token"));return[t,i]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(le(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!le(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}async subscribeToCriteria(e){if(!(this.ws.readyState!==WebSocket.OPEN||e.connecting)){e.connecting=!0;try{let[t,n]=await this.getTokenForCriteria(e);e.subscriptionId=t,e.token=n,this.criteriaEntriesBySubscriptionId.set(t,e),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:n}}))}catch(t){console.error(Oe(t)),this.emitError(e,t),this.removeCriteriaEntry(e)}}}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();for(let e of this.criteriaEntries.values())for(let t of[...e.bareCriteria?[e.bareCriteria]:[],...e.criteriaWithProps])t.clearAttachedSubscription(),await this.subscribeToCriteria(t)}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new ii(e,t);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}getWebSocket(){return this.ws}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new ot(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function Uu({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(!Bu(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=et(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Wo(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=ue(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");if(u&&u.valueCode!==t.interaction)return i?.debug(`Ignore rest hook for different interaction (wanted "${u.valueCode}", received "${t.interaction}")`),!1;if(!Lt(r,s))return!1;let l=vr(e.meta)??[],p=vr(r.meta)??[];return l.length&&!l.some(y=>p.some(T=>T.reference===y.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:D(r)}),!1):!0}function Bu(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function Wo(r,e,t){let n=ue(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":S(e),"%previous":S(i??{})};return P(n.valueString,[S(e)],o)?.[0]?.value===!0}var _r="5.0.12-73fc8d2",Wu="medplum-cli",Ho=A.FHIR_JSON+", */*; q=0.1",qu="https://api.medplum.com/",ju=1e3,$u=6e4,Hu=0,Gu=3e5,Qu="Binary/",qo={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ue={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange"},Go={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},zu={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Qo={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},Ju={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},$t=class extends K{constructor(t){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??Ku(),this.storage=t?.storage??new nt(void 0,t?.storagePrefix),this.createPdfImpl=t?.createPdf,this.baseUrl=br(t?.baseUrl??qu),this.fhirBaseUrl=$(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=$(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=$(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=$(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=$(this.baseUrl,t?.fhircastHubUrl??"fhircast/STU3"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.credentialsInHeader=t?.authCredentialsMethod==="header",this.defaultHeaders=t?.defaultHeaders??{},this.onUnauthenticated=t?.onUnauthenticated,this.refreshGracePeriod=t?.refreshGracePeriod??Gu,this.logLevel=this.initializeLogLevel(t),this.cacheTime=t?.cacheTime??(W()?$u:Hu),this.cacheTime>0?this.requestCache=new we(t?.resourceCacheSize??ju):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.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(t){return t?.logLevel?t.logLevel:t?.verbose!==void 0&&t.verbose?"verbose":"none"}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}getFhircastHubUrl(){return this.fhircastHubUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),W()&&sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=$(this.fhirBaseUrl,t);for(let i of this.requestCache?.keys()??g)(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&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new F(o);return this.setCacheEntry(t,s,n),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(ie.getSearch()).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){ie.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),ie.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");return this.fetchTokens({grant_type:Ue.TokenExchange,subject_token_type:Go.AccessToken,client_id:n,subject_token:t})}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL($(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=Nn(n)),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u,i),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new F(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u,i),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new F(this.search(t,n,i).then($o));return this.setCacheEntry(s,u,i),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield $o(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return qo;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new F(Promise.reject(new Error("Missing reference")));if(i==="system")return new F(Promise.resolve(qo));let[o,s]=i.split("/");return!o||!s?new F(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(t,n,i){return Array.isArray(t)?this.searchOne("",{_type:t.join(","),url:n},i):this.searchOne(t,"url="+n,i)}requestSchema(t,n){if(hn(t))return Promise.resolve();let i=t+"-requestSchema",o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new F((async()=>{let a=`{
|
|
5
5
|
StructureDefinitionList(_filter: "name eq ${t}") {
|
|
6
6
|
resourceType,
|
|
7
7
|
name,
|
|
@@ -41,17 +41,17 @@
|
|
|
41
41
|
expression,
|
|
42
42
|
target
|
|
43
43
|
}
|
|
44
|
-
}`.replaceAll(/\s+/g," "),a=await this.graphql(s);or(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Er(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&hn(t))return Promise.resolve();let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new L((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let u=await this.post(a.toString(),{});or(u)}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${t}!`);return}sr(a)}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i,o){let s=this.fhirUrl(t,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$everything"),n)}readPatientSummary(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$summary"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i={}){let o=this.fhirUrl(t.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,t,void 0,i);return this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=ii(t,n,i,o);if(a.contentType===w.XML){let p=a.data,y;p instanceof Blob?y=await new Promise((v,H)=>{let X=new FileReader;X.onload=()=>{if(!X.result){H(new Error("Failed to load file"));return}v(X.result)},X.readAsText(p,"utf-8")}):ArrayBuffer.isView(p)?y=new TextDecoder().decode(p):y=p,y.includes("<ClinicalDocument")&&y.includes("urn:hl7-org:v3")&&(a={...a,contentType:w.CDA_XML})}let u=s??(typeof n=="object"?n:{}),l=await this.createBinary(a,u);return{contentType:a.contentType,url:l.url,title:a.filename}}createBinary(t,n,i,o,s){let a=ii(t,n,i,o),u=s??(typeof n=="object"?n:{}),{data:l,contentType:p,filename:y,securityContext:v,onProgress:H}=a,X=this.fhirUrl("Binary");return y&&X.searchParams.set("_filename",y),v?.reference&&this.setRequestHeader(u,"X-Security-Context",v.reference),H?this.uploadwithProgress(X,l,p,H,u):this.post(X,l,p,u)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,p=()=>l.abort();s?.signal?.addEventListener("abort",p);let y=v=>{s?.signal?.removeEventListener("abort",p),v instanceof Error?u(v):a(v)};if(l.responseType="json",l.onabort=()=>y(new DOMException("Request aborted","AbortError")),l.onerror=()=>y(new Error("Request error")),o&&(l.upload.onprogress=v=>o(v),l.upload.onload=v=>o(v)),l.onload=()=>{l.status>=200&&l.status<300?y(l.response):y(new f(at(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&l.setRequestHeader("X-Medplum","extended"),s?.headers){let v=s.headers;for(let[H,X]of Object.entries(v))l.setRequestHeader(H,X)}l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=Qo(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:l,fonts:p,...y}=s,v=await this.createPdfImpl(u,l,p),H={...y,data:v,contentType:"application/pdf"};return this.createBinary(H,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=xe(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=xe(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[xe(t)],encounter:s,subject:a,sender:o?xe(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}async patchResource(t,n,i,o){let s=await this.patch(this.fhirUrl(t,n),i,o);return this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t,n,"_history")),this.invalidateSearches(t),s}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl,t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,w.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},w.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){let{waitTimeout:u,...l}=a??{};return this.post(this.fhirUrl("Agent",ve(t),"$push"),{destination:typeof n=="string"?n:V(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0},w.FHIR_JSON,l)}getCdsServices(t){return this.get("/cds-services",t)}callCdsService(t,n,i){return this.post(`/cds-services/${t}`,n,w.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||V(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}isAuthenticated(t){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(t??this.refreshGracePeriod)}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.accessTokenExpires=ti(t),this.medplumServer=ei(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){if(this.medplumServer)return this.profilePromise=new Promise((t,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Hu)&&(t=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async createMedia(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:t.contentType},...i});o.securityContext||(o.securityContext=xe(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(t,n,i,o,s){return this.createMedia({data:t,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:t.contentType}}],...i});o.securityContext||(o.securityContext=xe(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new Ut(this)),this.keyValueClient}getBundle(t,n){return new L((async()=>{let i=await this.get(t,n);if(i.entry)for(let o of i.entry)this.cacheResource(o.resource);return i})())}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new L(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let u=s.headers.get("content-type")?.includes("json");if(s.status===404&&!u)throw new f(tn);let l=await this.parseBody(s,u);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await qo(s,l);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let y=await qo(s,l)??o.statusUrl;if(y)return this.pollStatus(y,i,o)}if(s.status>=400)throw new f(at(l));return l}async parseBody(t,n){let i;if(t.headers.get("content-length")!=="0"){if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}}async fetchWithRetry(t,n){t.startsWith("http")||(t=j(this.baseUrl,t));let i=n?.maxRetries??2;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(t,n);let s=await this.fetch(t,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!Xu(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??2e3;if(a>u)return s;await vr(a)}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of gt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),this.logLevel==="verbose"&&t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(t){if(!t?.headers||typeof t.headers.get!="function")return;let n=t.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let t=this.currentRateLimits;return t.split(",").map(n=>{let i=n.split(";").map(p=>p.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+t);let o=i[0].substring(1,i[0].length-1),s=i.find(p=>p.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(p=>p.startsWith("t="))?.substring(2),l=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(l))throw new Error("Could not parse RateLimit header: "+t);return{name:o,remainingUnits:a,secondsUntilReset:l,resetsAfter:Math.ceil((Date.now()+1e3*l)/1e3)}})}getRetryDelay(t){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,t);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await vr(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,j(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(at(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!rr(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){Object.entries(this.defaultHeaders).forEach(([n,i])=>{this.setRequestHeader(t,n,i)}),this.setRequestHeader(t,"Accept",$o,!0),this.options.extendedMode!==!1&&this.setRequestHeader(t,"X-Medplum","extended"),t.body&&this.setRequestHeader(t,"Content-Type",w.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}setRequestHeader(t,n,i,o=!1){let s=t.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):R(s)&&(!o||!s[n])&&(s[n]=i):t.headers={[n]:i}}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}async handleUnauthenticated(t,n,i){if(this.refresh())return this.request(t,n,i);throw this.clear(),this.onUnauthenticated?.(),new f(we)}async startPkce(){let t=Pr();sessionStorage.setItem("pkceState",t);let n=Pr().slice(0,128);sessionStorage.setItem("codeVerifier",n);try{let i=await Jn(n);return{codeChallengeMethod:"S256",codeChallenge:Vn(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??ne.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),ne.assign(i.toString())}processCode(t,n){let i={grant_type:Ne.AuthorizationCode,code:t,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??ne.getOrigin()};if(typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&(i.code_verifier=o)}return this.fetchTokens(i)}refreshIfExpired(t){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(t)&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken)return this.refreshPromise=this.fetchTokens({grant_type:Ne.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}),this.refreshPromise;if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){return this.clientId=t,this.clientSecret=n,this.fetchTokens({grant_type:Ne.ClientCredentials,client_id:t,client_secret:n})}async startJwtBearerLogin(t,n,i){return this.clientId=t,this.fetchTokens({grant_type:Ne.JwtBearer,client_id:t,assertion:n,scope:i})}async startJwtAssertionLogin(t){return this.fetchTokens({grant_type:Ne.ClientCredentials,client_assertion_type:Go.JwtBearer,client_assertion:t})}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=_t(t+":"+n)}setLogLevel(t){this.logLevel=t,this.options.verbose=t==="verbose"}getLogLevel(){return this.logLevel}setVerbose(t){this.logLevel=t?"verbose":"none",this.options.verbose=t}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(g("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(g("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post(this.fhircastHubUrl,Ir(i),w.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Ft(t))throw new f(g("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(g("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post(this.fhircastHubUrl,Ir(t),w.FORM_URL_ENCODED)}fhircastConnect(t){return new Lt(t)}async fhircastPublish(t,n,i,o){return Kn(n)?this.post(this.fhircastHubUrl,kr(t,n,i,o),w.JSON):(Xn(n),this.post(this.fhircastHubUrl,kr(t,n,i),w.JSON))}async fhircastGetContext(t){return this.get(`${this.fhircastHubUrl}/${t}`,{cache:"no-cache"})}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n=new URLSearchParams(t),i={...this.defaultHeaders,"Content-Type":w.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&t.client_id&&t.client_secret&&(i.Authorization=`Basic ${_t(t.client_id+":"+t.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}if(!s.ok){this.clearActiveLogin(),this.onUnauthenticated?.();try{let u=await s.json();throw new f(b(u.error_description))}catch(u){throw new f(b("Failed to fetch tokens"),{cause:u})}}let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Zn(n)){let i=Nt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new f(rn);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new f(er)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new f(er)}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}checkSessionDetailsMatchLogin(t){return this.sessionDetails&&t?t.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",t=>{if(t.key===null)ne.reload();else if(t.key===this.storage.makeKey("activeLogin")){let n=t.oldValue?JSON.parse(t.oldValue):void 0,i=t.newValue?JSON.parse(t.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?ne.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Wt(this,Ln(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t,n){return this.getSubscriptionManager().addCriteria(t,n)}unsubscribeFromCriteria(t,n){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t,n),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function zu(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function qo(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(st(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function jo(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function Ju(r){return R(r)&&"data"in r&&"contentType"in r}function ii(r,e,t,n){return Ju(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function Ku(r){return R(r)&&"docDefinition"in r}function Qo(r,e,t,n){return Ku(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}function Xu(r){return r.status===429||r.status>=500}var Yu={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Zu(r,e,t){let n=new _r;Array.isArray(r)||(r=r.entry?.map(i=>i.resource)??[]);for(let i of r)n.addObservation(i);return n.summarize(e,t)}var _r=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!el(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...oi(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,t){if(!this.code)throw new Error("Code is required for data points");let n=t(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:tl(this.dataPoints,this.sampling)}}]}}};function el(r,e){return!!r.coding?.some(t=>e.coding?.some(n=>t.system===n.system&&t.code===n.code))}function oi(r){return r.data?.split(" ").map(e=>Number.parseFloat(e)*(r.factor??1)+(r.origin.value??0))??[]}function tl(r,e){if(r.length)return r.map(t=>(t-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function rl(r){let e=[],t=r.effectiveInstant??r.effectiveDateTime??r.effectivePeriod?.start,n=t?Date.parse(t).valueOf():0;if(r.valueSampledData&&e.push(...zo(r.valueSampledData,n,r)),r.component)for(let i of r.component)i.valueSampledData&&e.push(...zo(i.valueSampledData,n,{...r,...i}));return e}function zo(r,e,t){let n=[],i=oi(r),o=V(t);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/r.dimensions)*r.period;n.push({...t,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...r.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...t.derivedFrom??[],{reference:o}]:t.derivedFrom})}return n}function Fr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===r?.path)return;i??=r?.debugMode??!1,o??=r?.accessPolicyResource;let s=nl(e,t,r,!!i),a=Qe(e,".",2)[1];s=il(s,o,a),s=ol(s,o,a);let u=Object.create(null);for(let[p,y]of Object.entries(s))u[e+"."+p]=y;let l;if(r&&!r.isDefaultContext)l=r.getExtendedProps;else{let p=Object.create(null);l=y=>{let v=Qe(y,".",2)[1];if(v){if(!p[v]){let H=Lr(v,o?.hiddenFields);p[v]={hidden:H,readonly:H||Lr(v,o?.readonlyFields)}}return p[v]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function nl(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let u=le(r,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function il(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!Lr(n+i,e.hiddenFields)))}function ol(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))Lr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Lr(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function si(r){return r.type!==void 0&&r.type.length>0}function sl(r,e,t,n){let i=Ie(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>pr(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function ai(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.type??i.type?.[0].code};if(t.every(s=>sl(o,s,i,i.typeSchema?.url??n)))return i.name}}var jt=class{constructor(e,t,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=Fr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!Z(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=al(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);Z(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!si(o))continue;let s=o.type.find(a=>Z(a.profile))?.profile?.[0];if(Z(s)){let a=mn(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;Z(s)&&(o=Fr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function al(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let l of e)if(t(l.key,o)){n(l,a),u=!0;break}u||e.push(a)}return e}var Nr="__sliceName";function cl(r,e){let t=new Ur(r,r.resourceType,"resource");return new jt(e,t).crawlResource(),t.getDefaultValue()}function ul(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){$t(r,n,i,e);continue}let o=le(t,n);o!==void 0&&$t(r,o,i,e)}return r}function ll(r,e,t,n){let i=new Ur([{[Nr]:e.name}],e.path,"element");return new jt(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Ur=class{constructor(e,t,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=Te(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=le(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let l=le(n.path,o),p=Array.isArray(u)?u:[u];for(let y of p){pl(y,s,t,n.elements,l),$t(y,s,t,n.elements);let v=ui(y,s,n.elements,l);v!==void 0&&a.push(v)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=le(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=le(n.path,this.value.path);for(let a of this.value.values){let u=ui(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let p=u[l];Z(p)||u.splice(l,1)}E(u)&&ci(a,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,t,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[Nr]??ai(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(xr(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];Nr in i&&delete i[Nr]}}getDefaultValue(){return this.rootValue}};function pl(r,e,t,n,i){let o=ui(r,e,n,i);t.min>0&&o===void 0&&xr(t.type[0].code)&&(t.isArray?ci(r,[Object.create(null)],e,t):ci(r,Object.create(null),e,t))}function ci(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",k(o))}e===void 0?delete r[i]:r[i]=e}function ui(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let l=(n?n+".":"")+i.slice(0,a+1).join("."),y=t[l].type[0].code;u=u.replace("[x]",k(y))}if(a===i.length-1){Array.isArray(o)?s=o.map(l=>l[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(l=>l[u]);else if(R(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function $t(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>$t(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",k(p))}if(a===o.length-1){let l=Array.isArray(s)?s:[s];for(let p of l)t.fixed?p[u]??=t.fixed.value:t.pattern&&(p[u]=Jo(p[u],t.pattern.value))}else{if(!(u in s)){let l=o.slice(0,a+1).join(".");s[u]=n[l].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function Jo(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:Te(e);if(R(e)&&(R(r)&&!Array.isArray(r)||r===void 0)){let t=Te(r)??Object.create(null);for(let n of Object.keys(e))t[n]=Jo(t[n],e[n]);return t}return r}function li(r,e){if(!r.group)throw new f(b("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Ko(e),n=dl(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Ko(r){let e=Object.create(null);if(r.code&&!r.coding&&!r.codeableConcept){if(!r.system)throw new f(b("System parameter must be provided with code"));e[r.system]=[r.code]}else if(r.coding&&!r.code&&!r.codeableConcept)r.coding.code&&(e[r.coding.system??""]=[r.coding.code]);else if(r.codeableConcept&&!r.code&&!r.coding)for(let{system:t,code:n}of r.codeableConcept.coding??[])n&&(e[t??""]=G(e[t??""],n));else throw r.code||r.coding||r.codeableConcept?new f(b("Ambiguous input: multiple source codings provided")):new f(b("Source Coding (system + code) must be specified"));return e}function dl(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=fl(i,o)),s&&t.push(...s)}return t}function fl(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var hl=[...Vt,"->","<<",">>","=="];function Xo(r){return new me(r,kt,hl).tokenize()}var ml={"-":"disjoint","==":"equal"},pi=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(x.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(x.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(x.As);t instanceof re?(e.transform=t.name,e.parameter=t.args?.map(Yo)):t instanceof U||t instanceof _?(e.transform="copy",e.parameter=[Yo(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(x.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=ml[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,p=e?.group?.find(y=>y.source===i&&y.target===u);p||(p={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:l,equivalence:s}]})}};function Yo(r){if(r instanceof _)return{valueId:r.name};if(r instanceof U)return yl(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function yl(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var gl=Ke().registerInfix("->",{precedence:x.Arrow}).registerInfix(";",{precedence:x.Semicolon});function xl(r){let e=gl.construct(Xo(r));return e.removeComments(),new pi(e).parse()}var Br=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,t){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,t)&&n.push(i);return n}matchesUrl(e,t){if(t.includes("*")){let n=t.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===t}};function vl(r,e,t=new Br){return Tl({root:r,transformMaps:t},r,e)}function Tl(r,e,t){return Sl(r,e),es(r,e),fi(r,e.group[0],t)}function Sl(r,e){let t=qr(r);if(t&&e.import)for(let n of e.import){let i=t.get("StructureMap",n);for(let o of i)es(r,o)}}function es(r,e){let t=qr(r);if(t&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&t.resources.push(n);if(e.group)for(let n of e.group)Wr(r,n.name,{type:"StructureMapGroup",value:n})}function fi(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)Ht(o,l.name,t[a++]);for(let l of i){let p=t[a++]??{type:l.type??"BackboneElement",value:{}};Ht(o,l.name,p),s.push(p)}let u={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)ts(u,l);return s}function ts(r,e){e.source&&rs(r,e,0)}function rs(r,e,t){let n=e.source[t];for(let i of Cl(r,n))Wr(r,"_",i),n.variable&&Wr(r,n.variable,i),t<e.source.length-1?rs(r,e,t+1):bl(r,e)}function bl(r,e){if(!El(r,e)){if(e.target)for(let t of e.target)ns(r,t);if(e.rule)for(let t of e.rule)ts(r,t);if(e.dependent)for(let t of e.dependent)_l(r,t)}}function El(r,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let t=Ce(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return!1;let n=Rl(r,t);if(!n)return ns(r,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=Ce(r,i.context),s=o.value[i.element],a=os(o,i.element)||Array.isArray(s),u={root:r.root,parent:r,variables:{}},l=fi(u,n,[t]);return is(r,i,o,l,a,s),!0}function Rl(r,e){let t=r;for(;t;){if(t.variables)for(let n of Object.values(t.variables)){let i=di(n);for(let o of i)if(o.type==="StructureMapGroup"){let s=o.value;if((s.typeMode==="types"||s.typeMode==="type-and-types")&&s.input.length===2&&s.input[0].mode==="source"&&s.input[0].type===e.type&&s.input[1].mode==="target")return s}}t=t.parent}}function Cl(r,e){let t=Ce(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=C(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!Zo(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!Zo(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Pl(e,i)),i}function Zo(r,e,t){return F(C(t,[r],e))}function Pl(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function ns(r,e){let t=Ce(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=os(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=wl(r,e);break;case"cast":i=Al(r,e);break;case"cc":i=Ol(r,e);break;case"copy":i=Il(r,e);break;case"create":i=kl(r,e);break;case"evaluate":i=Vl(r,e);break;case"translate":i=Dl(r,e);break;case"truncate":i=Ml(r,e);break;case"uuid":i=[{type:"string",value:ie()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=ss(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:T({})]:i=[a?{type:a,value:n}:T(n)]}is(r,e,t,i,o,n)}function is(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],Ht(t.value,e.element,o));for(let s of n)o.push(s.value)}else Ht(t.value,e.element,n[0].value);e.variable&&Wr(r,e.variable,Ll(n))}}function os(r,e){return ss(r,e)?.isArray}function ss(r,e){return qe(r.type)?.elements?.[e]}function wl(r,e){let t=W(r,e.parameter?.[0])?.[0]?.value,n=W(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Al(r,e){let t=W(r,e.parameter?.[0])?.[0];return W(r,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:t?.value?.toString()}]:[t]}function Ol(r,e){let t=e.parameter;if(t.length===2){let n=W(r,t[0])?.[0]?.value,i=W(r,t[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:W(r,t[0])?.[0]?.value}}]}function Il(r,e){return e.parameter.flatMap(t=>W(r,t))}function kl(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[T(t)]}function Vl(r,e){let n=W(r,e.parameter?.[0])[0].value;return C(n,[],as(r))}function Dl(r,e){let t=e.parameter.flatMap(u=>W(r,u)),n=t[0].value,i=t[1].value,s=qr(r)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=li(s,{system:s.group?.[0]?.source,code:n});return[T(a.match?.[0]?.concept?.code)]}function Ml(r,e){let t=W(r,e.parameter?.[0])?.[0],n=W(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function _l(r,e){let t=Ce(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Ce(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};fi(o,t.value,i)}function qr(r){if(r.transformMaps)return r.transformMaps;if(r.parent)return qr(r.parent)}function W(r,e){let n=I({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=di(n),n.length===1&&n[0].type==="id"){let i=Ce(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return di(i)}return n}function Ce(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Ce(r.parent,e)}function as(r,e={}){if(r.parent&&as(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Wr(r,e,t){r.variables||(r.variables={}),Ht(r.variables,e,t)}function Ht(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function di(r){return Array.isArray(r)?r:[r]}function Ll(r){return r.length===1?r[0]:r}var Fl=" ".repeat(2),hi=class{constructor(e=Fl,t=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,t&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
|
|
44
|
+
}`.replaceAll(/\s+/g," "),u=await this.graphql(a);ar(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)Rr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(t,n){if(!n?.expandProfile&&mn(t))return Promise.resolve();let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new F((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let u=await this.post(a.toString(),{});ar(u)}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${t}!`);return}cr(a)}})());return this.setCacheEntry(i,s,n),s}readHistory(t,n,i,o){let s=this.fhirUrl(t,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$everything"),n)}readPatientSummary(t,n){return this.getBundle(this.fhirUrl("Patient",t,"$summary"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i={}){let o=this.fhirUrl(t.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,t,void 0,i);return this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=oi(t,n,i,o);if(a.contentType===A.XML){let p=a.data,y;p instanceof Blob?y=await new Promise((T,G)=>{let X=new FileReader;X.onload=()=>{if(!X.result){G(new Error("Failed to load file"));return}T(X.result)},X.readAsText(p,"utf-8")}):ArrayBuffer.isView(p)?y=new TextDecoder().decode(p):y=p,y.includes("<ClinicalDocument")&&y.includes("urn:hl7-org:v3")&&(a={...a,contentType:A.CDA_XML})}let u=s??(typeof n=="object"?n:{}),l=await this.createBinary(a,u);return{contentType:a.contentType,url:l.url,title:a.filename}}createBinary(t,n,i,o,s){let a=oi(t,n,i,o),u=s??(typeof n=="object"?n:{}),{data:l,contentType:p,filename:y,securityContext:T,onProgress:G}=a,X=this.fhirUrl("Binary");return y&&X.searchParams.set("_filename",y),T?.reference&&this.setRequestHeader(u,"X-Security-Context",T.reference),G?this.uploadwithProgress(X,l,p,G,u):this.post(X,l,p,u)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,p=()=>l.abort();s?.signal?.addEventListener("abort",p);let y=T=>{s?.signal?.removeEventListener("abort",p),T instanceof Error?u(T):a(T)};if(l.responseType="json",l.onabort=()=>y(new DOMException("Request aborted","AbortError")),l.onerror=()=>y(new Error("Request error")),o&&(l.upload.onprogress=T=>o(T),l.upload.onload=T=>o(T)),l.onload=()=>{l.status>=200&&l.status<300?y(l.response):y(new f(ut(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&l.setRequestHeader("X-Medplum","extended"),s?.headers){let T=s.headers;for(let[G,X]of Object.entries(T))l.setRequestHeader(G,X)}l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=zo(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:l,fonts:p,...y}=s,T=await this.createPdfImpl(u,l,p),G={...y,data:T,contentType:"application/pdf"};return this.createBinary(G,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=ve(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=ve(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[ve(t)],encounter:s,subject:a,sender:o?ve(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i,n),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}async patchResource(t,n,i,o){let s=await this.patch(this.fhirUrl(t,n),i,o);return this.cacheResource(s,o),this.invalidateUrl(this.fhirUrl(t,n,"_history")),this.invalidateSearches(t),s}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl,t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,A.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},A.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){let{waitTimeout:u,...l}=a??{};return this.post(this.fhirUrl("Agent",Te(t),"$push"),{destination:typeof n=="string"?n:D(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0},A.FHIR_JSON,l)}getCdsServices(t){return this.get("/cds-services",t)}callCdsService(t,n,i){return this.post(`/cds-services/${t}`,n,A.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||D(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}isAuthenticated(t){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(t??this.refreshGracePeriod)}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.accessTokenExpires=ri(t),this.medplumServer=ti(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){if(this.medplumServer)return this.profilePromise=new Promise((t,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Qu)&&(t=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async createMedia(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:t.contentType},...i});o.securityContext||(o.securityContext=ve(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(t,n,i,o,s){return this.createMedia({data:t,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:t.contentType}}],...i});o.securityContext||(o.securityContext=ve(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new Wt(this)),this.keyValueClient}getBundle(t,n){return new F((async()=>{let i=await this.get(t,n);for(let o of i.entry??g)this.cacheResource(o.resource,n);return i})())}isCacheEnabled(t){return!!this.requestCache&&!this.getRequestHeader(t,"x-medplum-on-behalf-of")}getCacheEntry(t,n){if(!this.isCacheEnabled(n)||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n,i){this.isCacheEnabled(i)&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t,n){t?.id&&!t.meta?.tag?.some(i=>i.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new F(Promise.resolve(t)),n)}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let u=s.headers.get("content-type")?.includes("json");if(s.status===404&&!u)throw new f(rn);let l=await this.parseBody(s,u);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await jo(s,l);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let y=await jo(s,l)??o.statusUrl;if(y)return this.pollStatus(y,i,o)}if(s.status>=400)throw new f(ut(l));return l}async parseBody(t,n){let i;if(t.headers.get("content-length")!=="0"){if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}}async fetchWithRetry(t,n){t.startsWith("http")||(t=$(this.baseUrl,t));let i=n?.maxRetries??2;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(t,n);let s=await this.fetch(t,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!Zu(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??2e3;if(a>u)return s;await Sr(a,{signal:n.signal})}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of xt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),this.logLevel==="verbose"&&t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(t){if(!t?.headers||typeof t.headers.get!="function")return;let n=t.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let t=this.currentRateLimits;return t.split(",").map(n=>{let i=n.split(";").map(p=>p.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+t);let o=i[0].substring(1,i[0].length-1),s=i.find(p=>p.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(p=>p.startsWith("t="))?.substring(2),l=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(l))throw new Error("Could not parse RateLimit header: "+t);return{name:o,remainingUnits:a,secondsUntilReset:l,resetsAfter:Math.ceil((Date.now()+1e3*l)/1e3)}})}getRetryDelay(t){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,t);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await Sr(s,{signal:n.signal}),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,$(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(ut(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!ir(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){Object.entries(this.defaultHeaders).forEach(([n,i])=>{this.setRequestHeader(t,n,i)}),this.setRequestHeader(t,"Accept",Ho,!0),this.options.extendedMode!==!1&&this.setRequestHeader(t,"X-Medplum","extended"),t.body&&this.setRequestHeader(t,"Content-Type",A.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}getRequestHeader(t,n){let i=t?.headers;if(i)if(Array.isArray(i)){let o=i.find(([s])=>s.toLowerCase()===n.toLowerCase());return o?o[1]:void 0}else{if(i instanceof Headers)return i.get(n)??void 0;if(E(i))return i[n]??void 0}else return}setRequestHeader(t,n,i,o=!1){let s=t.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):E(s)&&(!o||!s[n])&&(s[n]=i):t.headers={[n]:i}}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}async handleUnauthenticated(t,n,i){if(this.refresh())return this.request(t,n,i);throw this.clear(),this.onUnauthenticated?.(),new f(Ae)}async startPkce(){let t=wr();sessionStorage.setItem("pkceState",t);let n=wr().slice(0,128);sessionStorage.setItem("codeVerifier",n);try{let i=await Kn(n);return{codeChallengeMethod:"S256",codeChallenge:Dn(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??ie.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),ie.assign(i.toString())}processCode(t,n){let i={grant_type:Ue.AuthorizationCode,code:t,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??ie.getOrigin()};if(typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&(i.code_verifier=o)}return this.fetchTokens(i)}refreshIfExpired(t){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(t)&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken)return this.refreshPromise=this.fetchTokens({grant_type:Ue.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}),this.refreshPromise;if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){return this.clientId=t,this.clientSecret=n,this.fetchTokens({grant_type:Ue.ClientCredentials,client_id:t,client_secret:n})}async startJwtBearerLogin(t,n,i){return this.clientId=t,this.fetchTokens({grant_type:Ue.JwtBearer,client_id:t,assertion:n,scope:i})}async startJwtAssertionLogin(t){return this.fetchTokens({grant_type:Ue.ClientCredentials,client_assertion_type:Qo.JwtBearer,client_assertion:t})}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Ft(t+":"+n)}setLogLevel(t){this.logLevel=t,this.options.verbose=t==="verbose"}getLogLevel(){return this.logLevel}setVerbose(t){this.logLevel=t?"verbose":"none",this.options.verbose=t}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(x("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(x("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post(this.fhircastHubUrl,kr(i),A.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Ut(t))throw new f(x("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(x("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post(this.fhircastHubUrl,kr(t),A.FORM_URL_ENCODED)}fhircastConnect(t){return new Nt(t)}async fhircastPublish(t,n,i,o){return Yn(n)?this.post(this.fhircastHubUrl,Vr(t,n,i,o),A.JSON):(Xn(n),this.post(this.fhircastHubUrl,Vr(t,n,i),A.JSON))}async fhircastGetContext(t){return this.get(`${this.fhircastHubUrl}/${t}`,{cache:"no-cache"})}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async handleTokenError(t){try{let n=await t.json();throw qe(n)?new f(n):n.error_description?new f(R(n.error_description)):new Error(JSON.stringify(n))}catch(n){throw n instanceof f?(n.message=`Failed to fetch tokens: ${n.message}`,n):new f(R("Failed to fetch tokens"),{cause:n})}}async fetchTokens(t){let n=new URLSearchParams(t),i={...this.defaultHeaders,"Content-Type":A.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&t.client_id&&t.client_secret&&(i.Authorization=`Basic ${Ft(t.client_id+":"+t.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}s.ok||(this.clearActiveLogin(),this.onUnauthenticated?.(),await this.handleTokenError(s));let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(ei(n)){let i=Bt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new f(nn);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new f(rr)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new f(rr)}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}checkSessionDetailsMatchLogin(t){return this.sessionDetails&&t?t.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",t=>{if(t.key===null)ie.reload();else if(t.key===this.storage.makeKey("activeLogin")){let n=t.oldValue?JSON.parse(t.oldValue):void 0,i=t.newValue?JSON.parse(t.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?ie.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new jt(this,Fn(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t,n){return this.getSubscriptionManager().addCriteria(t,n)}unsubscribeFromCriteria(t,n){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t,n),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function Ku(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function jo(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(qe(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function $o(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function Yu(r){return E(r)&&"data"in r&&"contentType"in r}function oi(r,e,t,n){return Yu(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function Xu(r){return E(r)&&"docDefinition"in r}function zo(r,e,t,n){return Xu(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}function Zu(r){return r.status===429||r.status>=500}var el={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function tl(r,e,t){let n=new Lr;Array.isArray(r)||(r=r.entry?.map(i=>i.resource)??[]);for(let i of r)n.addObservation(i);return n.summarize(e,t)}var Lr=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!rl(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...si(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,t){if(!this.code)throw new Error("Code is required for data points");let n=t(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:nl(this.dataPoints,this.sampling)}}]}}};function rl(r,e){return!!r.coding?.some(t=>e.coding?.some(n=>t.system===n.system&&t.code===n.code))}function si(r){return r.data?.split(" ").map(e=>Number.parseFloat(e)*(r.factor??1)+(r.origin.value??0))??[]}function nl(r,e){if(r.length)return r.map(t=>(t-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function il(r){let e=[],t=r.effectiveInstant??r.effectiveDateTime??r.effectivePeriod?.start,n=t?Date.parse(t).valueOf():0;r.valueSampledData&&e.push(...Jo(r.valueSampledData,n,r));for(let i of r.component??g)i.valueSampledData&&e.push(...Jo(i.valueSampledData,n,{...r,...i}));return e}function Jo(r,e,t){let n=[],i=si(r),o=D(t);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/r.dimensions)*r.period;n.push({...t,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...r.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...t.derivedFrom??[],{reference:o}]:t.derivedFrom})}return n}function Nr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===r?.path)return;i??=r?.debugMode??!1,o??=r?.accessPolicyResource;let s=ol(e,t,r,!!i),a=Ke(e,".",2)[1];s=sl(s,o,a),s=al(s,o,a);let u=Object.create(null);for(let[p,y]of Object.entries(s))u[e+"."+p]=y;let l;if(r&&!r.isDefaultContext)l=r.getExtendedProps;else{let p=Object.create(null);l=y=>{let T=Ke(y,".",2)[1];if(T){if(!p[T]){let G=Fr(T,o?.hiddenFields);p[T]={hidden:G,readonly:G||Fr(T,o?.readonlyFields)}}return p[T]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function ol(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let u=pe(r,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function sl(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!Fr(n+i,e.hiddenFields)))}function al(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))Fr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Fr(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function ai(r){return r.type!==void 0&&r.type.length>0}function cl(r,e,t,n){let i=ke(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>fr(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function ci(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.type??i.type?.[0].code};if(t.every(s=>cl(o,s,i,i.typeSchema?.url??n)))return i.name}}var Ht=class{constructor(e,t,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=Nr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!ee(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=ul(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);ee(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!ai(o))continue;let s=o.type.find(a=>ee(a.profile))?.profile?.[0];if(ee(s)){let a=yn(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;ee(s)&&(o=Nr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function ul(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let l of e)if(t(l.key,o)){n(l,a),u=!0;break}u||e.push(a)}return e}var Ur="__sliceName";function ll(r,e){let t=new Br(r,r.resourceType,"resource");return new Ht(e,t).crawlResource(),t.getDefaultValue()}function pl(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Gt(r,n,i,e);continue}let o=pe(t,n);o!==void 0&&Gt(r,o,i,e)}return r}function dl(r,e,t,n){let i=new Br([{[Ur]:e.name}],e.path,"element");return new Ht(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Br=class{constructor(e,t,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=Se(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=pe(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let l=pe(n.path,o),p=Array.isArray(u)?u:[u];for(let y of p){fl(y,s,t,n.elements,l),Gt(y,s,t,n.elements);let T=li(y,s,n.elements,l);T!==void 0&&a.push(T)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=pe(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=pe(n.path,this.value.path);for(let a of this.value.values){let u=li(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let p=u[l];ee(p)||u.splice(l,1)}C(u)&&ui(a,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,t,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[Ur]??ci(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Tr(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];Ur in i&&delete i[Ur]}}getDefaultValue(){return this.rootValue}};function fl(r,e,t,n,i){let o=li(r,e,n,i);t.min>0&&o===void 0&&Tr(t.type[0].code)&&(t.isArray?ui(r,[Object.create(null)],e,t):ui(r,Object.create(null),e,t))}function ui(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",V(o))}e===void 0?delete r[i]:r[i]=e}function li(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let l=(n?n+".":"")+i.slice(0,a+1).join("."),y=t[l].type[0].code;u=u.replace("[x]",V(y))}if(a===i.length-1){Array.isArray(o)?s=o.map(l=>l[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(l=>l[u]);else if(E(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function Gt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Gt(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",V(p))}if(a===o.length-1){let l=Array.isArray(s)?s:[s];for(let p of l)t.fixed?p[u]??=t.fixed.value:t.pattern&&(p[u]=Ko(p[u],t.pattern.value))}else{if(!(u in s)){let l=o.slice(0,a+1).join(".");s[u]=n[l].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function Ko(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:Se(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=Se(r)??Object.create(null);for(let n of Object.keys(e))t[n]=Ko(t[n],e[n]);return t}return r}function pi(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Yo(e),n=hl(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Yo(r){let e=Object.create(null);if(r.code&&!r.coding&&!r.codeableConcept){if(!r.system)throw new f(R("System parameter must be provided with code"));e[r.system]=[r.code]}else if(r.coding&&!r.code&&!r.codeableConcept)r.coding.code&&(e[r.coding.system??""]=[r.coding.code]);else if(r.codeableConcept&&!r.code&&!r.coding)for(let{system:t,code:n}of r.codeableConcept.coding??g)n&&(e[t??""]=Q(e[t??""],n));else throw r.code||r.coding||r.codeableConcept?new f(R("Ambiguous input: multiple source codings provided")):new f(R("Source Coding (system + code) must be specified"));return e}function hl(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=ml(i,o)),s&&t.push(...s)}return t}function ml(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var yl=[...Mt,"->","<<",">>","=="];function Xo(r){return new ye(r,Dt,yl).tokenize()}var gl={"-":"disjoint","==":"equal"},di=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(v.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(v.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(v.As);t instanceof ne?(e.transform=t.name,e.parameter=t.args?.map(Zo)):t instanceof B||t instanceof L?(e.transform="copy",e.parameter=[Zo(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(v.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=gl[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,p=e?.group?.find(y=>y.source===i&&y.target===u);p||(p={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:l,equivalence:s}]})}};function Zo(r){if(r instanceof L)return{valueId:r.name};if(r instanceof B)return xl(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function xl(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var vl=Ze().registerInfix("->",{precedence:v.Arrow}).registerInfix(";",{precedence:v.Semicolon});function Tl(r){let e=vl.construct(Xo(r));return e.removeComments(),new di(e).parse()}var Wr=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,t){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,t)&&n.push(i);return n}matchesUrl(e,t){if(t.includes("*")){let n=t.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===t}};function Sl(r,e,t=new Wr){return bl({root:r,transformMaps:t},r,e)}function bl(r,e,t){return El(r,e),ts(r,e),hi(r,e.group[0],t)}function El(r,e){let t=jr(r);if(t&&e.import)for(let n of e.import){let i=t.get("StructureMap",n);for(let o of i)ts(r,o)}}function ts(r,e){let t=jr(r);if(t&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&t.resources.push(n);for(let n of e.group??g)qr(r,n.name,{type:"StructureMapGroup",value:n})}function hi(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)Qt(o,l.name,t[a++]);for(let l of i){let p=t[a++]??{type:l.type??"BackboneElement",value:{}};Qt(o,l.name,p),s.push(p)}let u={root:r.root,parent:r,variables:o};for(let l of e.rule??g)rs(u,l);return s}function rs(r,e){e.source&&ns(r,e,0)}function ns(r,e,t){let n=e.source[t];for(let i of wl(r,n))qr(r,"_",i),n.variable&&qr(r,n.variable,i),t<e.source.length-1?ns(r,e,t+1):Rl(r,e)}function Rl(r,e){if(!Cl(r,e)){for(let t of e.target??g)is(r,t);for(let t of e.rule??g)rs(r,t);for(let t of e.dependent??g)Fl(r,t)}}function Cl(r,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let t=Pe(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return!1;let n=Pl(r,t);if(!n)return is(r,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=Pe(r,i.context),s=o.value[i.element],a=ss(o,i.element)||Array.isArray(s),u={root:r.root,parent:r,variables:{}},l=hi(u,n,[t]);return os(r,i,o,l,a,s),!0}function Pl(r,e){let t=r;for(;t;){if(t.variables){for(let n of Object.values(t.variables))for(let i of fi(n))if(i.type==="StructureMapGroup"){let o=i.value;if((o.typeMode==="types"||o.typeMode==="type-and-types")&&o.input.length===2&&o.input[0].mode==="source"&&o.input[0].type===e.type&&o.input[1].mode==="target")return o}}t=t.parent}}function wl(r,e){let t=Pe(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=P(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!es(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!es(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Al(e,i)),i}function es(r,e,t){return N(P(t,[r],e))}function Al(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function is(r,e){let t=Pe(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=ss(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Ol(r,e);break;case"cast":i=Il(r,e);break;case"cc":i=kl(r,e);break;case"copy":i=Vl(r,e);break;case"create":i=Dl(r,e);break;case"evaluate":i=Ml(r,e);break;case"translate":i=_l(r,e);break;case"truncate":i=Ll(r,e);break;case"uuid":i=[{type:"string",value:oe()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=as(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:S({})]:i=[a?{type:a,value:n}:S(n)]}os(r,e,t,i,o,n)}function os(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],Qt(t.value,e.element,o));for(let s of n)o.push(s.value)}else Qt(t.value,e.element,n[0].value);e.variable&&qr(r,e.variable,Nl(n))}}function ss(r,e){return as(r,e)?.isArray}function as(r,e){return $e(r.type)?.elements?.[e]}function Ol(r,e){let t=q(r,e.parameter?.[0])?.[0]?.value,n=q(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Il(r,e){let t=q(r,e.parameter?.[0])?.[0];return q(r,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:t?.value?.toString()}]:[t]}function kl(r,e){let t=e.parameter;if(t.length===2){let n=q(r,t[0])?.[0]?.value,i=q(r,t[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:q(r,t[0])?.[0]?.value}}]}function Vl(r,e){return e.parameter.flatMap(t=>q(r,t))}function Dl(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=q(r,e.parameter?.[0])?.[0]?.value),[S(t)]}function Ml(r,e){let n=q(r,e.parameter?.[0])[0].value;return P(n,[],cs(r))}function _l(r,e){let t=e.parameter.flatMap(u=>q(r,u)),n=t[0].value,i=t[1].value,s=jr(r)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=pi(s,{system:s.group?.[0]?.source,code:n});return[S(a.match?.[0]?.concept?.code)]}function Ll(r,e){let t=q(r,e.parameter?.[0])?.[0],n=q(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Fl(r,e){let t=Pe(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Pe(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};hi(o,t.value,i)}function jr(r){if(r.transformMaps)return r.transformMaps;if(r.parent)return jr(r.parent)}function q(r,e){let n=k({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=fi(n),n.length===1&&n[0].type==="id"){let i=Pe(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return fi(i)}return n}function Pe(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Pe(r.parent,e)}function cs(r,e={}){if(r.parent&&cs(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function qr(r,e,t){r.variables||(r.variables={}),Qt(r.variables,e,t)}function Qt(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function fi(r){return Array.isArray(r)?r:[r]}function Nl(r){return r.length===1?r[0]:r}var Ul=" ".repeat(2),mi=class{constructor(e=Ul,t=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,t&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
|
|
45
45
|
`)}appendNoWrap(e){this.b.push(this.indent.repeat(this.indentCount)),this.b.push(e),this.b.push(`
|
|
46
46
|
`)}append(e){let t=this.indent.repeat(this.indentCount)+e;if(t.length<160)this.b.push(t),this.b.push(`
|
|
47
|
-
`);else{let n=!0;for(let i of
|
|
47
|
+
`);else{let n=!0;for(let i of us(t,120-this.indent.length*this.indentCount))n?this.b.push(this.indent.repeat(this.indentCount)):this.b.push(this.indent.repeat(this.indentCount+2)),this.b.push(i.trim()),this.b.push(`
|
|
48
48
|
`),n=!1}}toString(){return this.b.join("").replaceAll(`
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
`,`
|
|
52
52
|
|
|
53
|
-
`)}};function
|
|
54
|
-
`)};r.name&&r.name!=="Error"&&(n.name=r.name),r.message&&(n.message=r.message),"cause"in r&&r.cause!==void 0&&(r.cause instanceof Error?n.cause=Jt(r.cause,e+1,t):n.cause=r.cause);let i=Object.getOwnPropertyNames(r).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=r[o];s instanceof Error?n[o]=Jt(s,e+1,t):n[o]=s}catch{}return n}function zl(r){if(!r)throw new f(g("Resource type is null"));if(!ct(r))throw new f(g("Unknown resource type"))}function xi(r,e,t){r===null?t.push(S(e,"Invalid null value")):Array.isArray(r)?Jl(r,e,t):typeof r=="object"&&Kl(r,e,t)}function Jl(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(S(`${e}[${n}]`,"Invalid undefined value")):xi(r[n],`${e}[${n}]`,t)}function Kl(r,e,t){for(let[n,i]of Object.entries(r))xi(i,`${e}${e?".":""}${n}`,t)}function Xl(r){return{resourceType:"SearchParameter",code:r.code+":identifier",base:r.base,type:"token",expression:`(${r.expression}).identifier`}}function vi(r){return r.match(/^\((.+)\)\.identifier$/)?.[1]}function Ti(r,e){return new fe(r,new z(e,new _("identifier")))}var oe={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function Yl(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=ep(r,e)),t}function Zl(r,e,t){let n=N.types[r];n||(n={},N.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function ep(r,e){let t=e.code,n=e.expression,i=bi(r,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let u of i){let l=jr(u),p=_n(()=>l.join("."));l.length===1&&l[0]instanceof P?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):p().endsWith("extension.value.code")||p().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):ds(o,l,r,1),p().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let u=vi(n);if(u===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=Si(r,u);s=Ti(n,l)}else s=Si(r,n);let a={type:np(e,o.propertyTypes),elementDefinitions:o.elementDefinitions.map(u=>({...u,type:u.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(u=>u.type&&u.type.length>0),parsedExpression:s,array:o.array};return Zl(r,t,a),a}function ds(r,e,t,n){let i=e[n];if(i instanceof he){r.propertyTypes.add(i.right.toString());return}if(i instanceof re){tp(r,i);return}let o=i.toString(),s=ht(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof Ee&&(a=!0,u++);let l=e[u];if(s.isArray&&!a&&(r.array=!0),u===e.length-1&&l instanceof he){r.elementDefinitions.push(s),r.propertyTypes.add(l.right.toString());return}if(u>=e.length){r.elementDefinitions.push(s);for(let p of s.type)r.propertyTypes.add(p.code);return}for(let p of s.type){let y=p.code;rp(y)&&(y=s.type[0].code),ds(r,e,y,u)}}function tp(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){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 be){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function rp(r){return r==="Element"||r==="BackboneElement"}function np(r,e){switch(r.type){case"date":return e.size===1&&e.has(d.date)?oe.DATE:oe.DATETIME;case"number":return oe.NUMBER;case"quantity":return oe.QUANTITY;case"reference":return e.has(d.canonical)?oe.CANONICAL:oe.REFERENCE;case"token":return e.size===1&&e.has(d.boolean)?oe.BOOLEAN:oe.TEXT;default:return oe.TEXT}}function bi(r,e){let t=[],n=Dt(e);return $r(r,n.child,t),t}function ip(r,e){let t=bi(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Si(r,e){let t=[],n=Dt(e);if($r(r,n.child,t),t.length===0)return n;let i=t[0];for(let o=1;o<t.length;o++)i=new Se(i,t[o]);return new fe("<original-not-available>",i)}function $r(r,e,t){e instanceof Se?($r(r,e.left,t),$r(r,e.right,t)):e.toString().includes(r+".")&&t.push(e)}function jr(r){if(r instanceof he||r instanceof Ee)return[jr(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof z)return[jr(r.left),jr(r.right)].flat();if(r instanceof re){if(r.name==="where"&&!(r.args[0]instanceof be))return[];if(r.name==="last")return[]}return[r]}function op(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function sp(r,e){let t=[];for(let n of e)t.push(...ap(r,n));return t}function ap(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};if(r.constant)for(let i of r.constant){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=I(o,"value")}let n=T(e);if(r.where)for(let i of r.where){let o=C(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return Ei(r,n,t)}function Ei(r,e,t){let n=[],i;r.forEach?i=C(r.forEach,[e],t):r.forEachOrNull?i=C(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??[]){let u=C(a.path,[o],t),l;if(u.length===0)l={[a.name]:null};else if(a.collection)l={[a.name]:u.map(p=>p.value)};else if(u.length===1)l={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([l])}for(let a of r.select??[]){let u=Ei(a,o,t);s.push(u)}if(r.unionAll){let a=[];for(let u of r.unionAll)for(let l of Ei(u,o,t))a.push(l);s.push(a)}n.push(...cp(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??[])o[s.name]=null;n.push(o)}return n}function cp(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=up(e,r[t]);return e}function up(r,e){let t=[];for(let n of r)for(let i of e)t.push(lp(n,i));return t}function lp(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}var fs="https://meta.medplum.com/releases",Hr=new Map;function pp(){Hr.clear()}function hs(r){let e=r;if(!e.tag_name)throw new Error("Manifest missing tag_name");let t=e.assets;if(!t?.length)throw new Error("Manifest missing assets list");for(let n of t){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function Gr(r,e,t){let n=Hr.get(e??"latest");if(!n){let i=e?`v${e}`:"latest",o=new URL(`${fs}/${i}.json`);if(o.searchParams.set("a",r),o.searchParams.set("c",Mr),t)for(let[u,l]of Object.entries(t))o.searchParams.set(u,l);let s=await fetch(o.toString());if(s.status!==200){let u;try{u=(await s.json()).message}catch(l){console.error(`Failed to parse message from body: ${Ae(l)}`)}throw new Error(`Received status code ${s.status} while fetching manifest for version '${e??"latest"}'. Message: ${u}`)}let a=await s.json();hs(a),n=a,Hr.set(e??"latest",n),e||Hr.set(n.tag_name.slice(1),n)}return n}function ms(r){return/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/.test(r)}async function dp(r,e){if(!ms(e))return!1;try{await Gr(r,e)}catch{return!1}return!0}async function fp(r){let e=await Gr(r);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);return e.tag_name.slice(1)}async function hp(r,e){try{let t=Mr.split("-")[0],i=(await Gr(r,void 0,e)).tag_name.slice(1);t!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${t}) may be missing important updates and bug fixes.`)}catch(t){console.warn(`Failed to check for newer version: ${Ae(t)}`)}}0&&(module.exports={AccessPolicyInteraction,AckCode,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_ACCEPT,DEFAULT_MAX_SEARCH_COUNT,DEFAULT_SEARCH_COUNT,DataSampler,DotAtom,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FileBuilder,FunctionAtom,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,LogLevelNames,Logger,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_RELEASES_URL,MEDPLUM_VERSION,MedplumClient,MedplumKeyValueClient,MemoryStorage,MockAsyncClientStorage,NDC,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthSigningAlgorithm,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,ReconnectingWebSocket,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TransformMapCollection,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,accessPolicySupportsInteraction,addProfileToResource,allOk,append,applyDefaultValuesToElement,applyDefaultValuesToResource,applyFixedOrPatternValue,arrayBufferToBase64,arrayBufferToHex,arrayify,assert,assertContextVersionOptional,assertOk,assertReleaseManifest,badRequest,booleanToTypedValue,buildCdsRequest,buildElementsContext,buildTypeName,businessRule,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,checkIfValidMedplumVersion,clearReleaseCache,compressElement,concatUrls,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToSearchableDates,convertToSearchableNumbers,convertToSearchableQuantities,convertToSearchableReferences,convertToSearchableStrings,convertToSearchableTokens,convertToSearchableUris,convertToTransactionBundle,crawlTypedValue,crawlTypedValueAsync,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,decodeBase64Url,deepClone,deepEquals,deepIncludes,deriveIdentifierSearchParameter,encodeBase64,encodeBase64Url,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,escapeHtml,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,expandSampledData,expandSampledObservation,extractAccountReferences,fetchLatestVersionString,fetchVersionManifest,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathArrayNotEquals,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,findCodeBySystem,findObservationInterval,findObservationReferenceRange,findObservationReferenceRanges,findResourceByCode,findResourceInBundle,flatMapFilter,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatReferenceString,formatSearchQuery,formatTime,formatTiming,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getBuffer,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getInnerDerivedIdentifierExpression,getNestedProperty,getParsedDerivedIdentifierExpression,getParsedExpressionForResourceType,getPathDifference,getPathDisplayName,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getTypedPropertyValueWithoutSchema,getValueSliceName,getWebSocketUrl,getWindow,globalSchema,gone,indexConceptMapCodings,indexDefaultSearchParameters,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,invalidSearchOperator,isAccepted,isBrowserEnvironment,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isConflict,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isError,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNodeEnvironment,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isPrimitiveType,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isRedirect,isReference,isResource,isResourceType,isResourceTypeSchema,isResourceWithId,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isTypedValue,isUUID,isUnauthenticated,isValidDate,isValidHostname,isValidMedplumSemver,lazy,loadDataType,locationUtils,mapByIdentifier,matchDiscriminant,matchesRange,matchesSearchRequest,multipleMatches,normalizeArrayBufferView,normalizeCreateBinaryOptions,normalizeCreatePdfOptions,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseLogLevel,parseMappingLanguage,parseParameter,parseReference,parseSearchRequest,parseStructureDefinition,parseXFhirQuery,pathToJSONPointer,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,preconditionFailed,projectAdminResourceTypes,protectedResourceTypes,readInteractions,redirect,removeDuplicates,removeProfileFromResource,reorderBundle,replaceQueryVariables,resolveId,resourceMatchesSubscriptionCriteria,satisfiedAccessPolicy,serializeError,serializeFhircastSubscriptionRequest,serverError,serverTimeout,setCodeBySystem,setIdentifier,singleton,singularize,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,summarizeObservations,toJsBoolean,toPeriod,toTypedValue,tooManyRequests,trimTrailingEmptyElements,tryGetDataType,tryGetJwtExpiration,tryGetProfile,typedValueToString,unauthorized,unauthorizedTokenAudience,unauthorizedTokenExpired,unsupportedMediaType,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validateTypedValue,validationError,validationRegexes,warnIfNewerVersionAvailable,wordWrap});
|
|
53
|
+
`)}};function us(r,e){let t=[],n=[],i=0;return r.split(" ").forEach(function(o){i+o.length>e&&(t.push(n.join(" ").trim()),n=[],i=0),i+=o.length+1,n.push(o)}),n.length>0&&t.push(n.join(" ").trim()),t}var Bl=[...Mt,"eq","ne","co"];function ls(r){return new ye(r,Dt,Bl,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var zt=class{constructor(e,t,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=t,this.value=n}},Jt=class{constructor(e){c(this,"child");this.child=e}},Kt=class{constructor(e,t,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=t,this.right=n}};var Wl={eq:h.EXACT,ne:h.NOT_EQUALS,co:h.CONTAINS,sw:h.STARTS_WITH,ew:void 0,gt:h.GREATER_THAN,lt:h.LESS_THAN,ge:h.GREATER_THAN_OR_EQUALS,le:h.LESS_THAN_OR_EQUALS,ap:h.APPROXIMATELY,sa:h.STARTS_AFTER,eb:h.ENDS_BEFORE,pr:h.PRESENT,po:void 0,ss:void 0,sb:void 0,in:h.IN,ni:h.NOT_IN,re:h.EQUALS,identifier:h.IDENTIFIER};function ql(r){let e=Wl[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var yi=class{constructor(e){c(this,"parser");this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new Jt(this.parse()),this.parser.consume(")")):e=new zt(this.parser.consume("Symbol").value,ql(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new Kt(t,e,this.parse())):e}},jl=Ze();function $l(r){let e=jl.construct(ls(r));return e.removeComments(),new yi(e).parse()}var Hl={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"},Gl={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},ge=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){c(this,"segmentSeparator");c(this,"fieldSeparator");c(this,"componentSeparator");c(this,"repetitionSeparator");c(this,"escapeCharacter");c(this,"subcomponentSeparator");this.segmentSeparator=e,this.fieldSeparator=t,this.componentSeparator=n,this.repetitionSeparator=i,this.escapeCharacter=o,this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},gi=class r{constructor(e,t=new ge){c(this,"context");c(this,"segments");this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(e){let t=new Date,n=this.getSegment("MSH"),i=n?.getField(3)?.toString()??"",o=n?.getField(4)?.toString()??"",s=n?.getField(5)?.toString()??"",a=n?.getField(6)?.toString()??"",u=n?.getField(10)?.toString()??"",l=n?.getField(12)?.toString()??"2.5.1",p=e?.ackCode??"AA";return new r([new st(["MSH",this.context.getMsh2(),s,a,i,o,ps(t),"",this.buildAckMessageType(n),t.getTime().toString(),"P",l],this.context),new st(["MSA",p,u,Gl[p]],this.context),...e?.errSegment?[e.errSegment]:[]])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new ge("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>st.parse(n,t)),t)}setSegment(e,t){if(t.name==="MSH"){if(typeof e=="number"){if(e!==0)return!1}else if(this.segments.findIndex(o=>o.name===e)!==0)return!1}else if(typeof e=="number"&&e===0&&t.name!=="MSH")return!1;if(typeof e=="number")return e>=this.segments.length?(this.segments.push(t),!0):(this.segments[e]=t,!0);let n=this.segments.findIndex(i=>i.name===e);return n===0&&t.name!=="MSH"?!1:n!==-1?(this.segments[n]=t,!0):!1}},st=class r{constructor(e,t=new ge){c(this,"context");c(this,"name");c(this,"fields");this.context=t,kn(e)?this.fields=e.map(n=>Y.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new Y([[this.context.getMsh1()]],this.context);if(e===2)return new Y([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new ge){return new r(e.split(t.fieldSeparator).map(n=>Y.parse(n,t)),t)}setField(e,t){if(this.name==="MSH"){if(e===1||e===2)return!1;if(e>2){let n=e-1;for(;this.fields.length<=n;)this.fields.push(new Y([[""]],this.context));return this.fields[n]=typeof t=="string"?Y.parse(t,this.context):t,!0}}for(;this.fields.length<=e;)this.fields.push(new Y([[""]],this.context));return this.fields[e]=typeof t=="string"?Y.parse(t,this.context):t,!0}setComponent(e,t,n,i,o=0){let s=this.getField(e);return s?s.setComponent(t,n,i,o):!1}},Y=class r{constructor(e,t=new ge){c(this,"context");c(this,"components");this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new ge){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}setComponent(e,t,n,i=0){if(e<1)return!1;if(i>=this.components.length)for(;this.components.length<=i;)this.components.push([""]);if(n!==void 0){if(n<0)return!1;let s=(this.components[i][e-1]||"").split(this.context.subcomponentSeparator);for(;s.length<=n;)s.push("");s[n]=t,this.components[i][e-1]=s.join(this.context.subcomponentSeparator)}else this.components[i][e-1]=t;return!0}};function Ql(r,e){if(!r)return;let t=Be(r.slice(0,4),0),n=Be(r.slice(4,6),1)-1,i=Be(r.slice(6,8),1),o=Be(r.slice(8,10),0),s=Be(r.slice(10,12),0),a=Be(r.slice(12,14),0),u=0;r.includes(".")&&(u=Be(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),p=zl(r,e?.tzOffset);return p!==0&&(l=new Date(l.getTime()-p)),l.toISOString()}function Be(r,e){let t=Number.parseInt(r,10);return Number.isNaN(t)?e:t}function zl(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=Number.parseInt(t.slice(0,2),10),a=Number.parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function ps(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replaceAll(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var We={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},ds=["NONE","ERROR","WARN","INFO","DEBUG"],xi=class r{constructor(e,t={},n=We.INFO,i={}){c(this,"write");c(this,"metadata");c(this,"options");c(this,"prefix");c(this,"level");this.write=e,this.metadata=t,this.level=n,this.options=i,i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let t=this.getLoggerConfig(),n=e?{...t,override:e,options:{...t.options,...e.options}}:t;return new r(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:t,level:n,options:i}=this;return{write:e,metadata:t,level:n,options:i}}error(e,t){this.log(We.ERROR,e,t)}warn(e,t){this.log(We.WARN,e,t)}info(e,t){this.log(We.INFO,e,t)}debug(e,t){this.log(We.DEBUG,e,t)}log(e,t,n){if(e>this.level)return;let i;if(nr(n))i=Yt(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=Yt(s))}this.write(JSON.stringify({level:ds[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...i,...this.metadata}))}};function Jl(r){let e=We[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function Yt(r,e=0,t=10){if(e>=t)return{error:"Max error depth reached"};let n={error:r.toString(),stack:r.stack?.split(`
|
|
54
|
+
`)};r.name&&r.name!=="Error"&&(n.name=r.name),r.message&&(n.message=r.message),"cause"in r&&r.cause!==void 0&&(r.cause instanceof Error?n.cause=Yt(r.cause,e+1,t):n.cause=r.cause);let i=Object.getOwnPropertyNames(r).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=r[o];s instanceof Error?n[o]=Yt(s,e+1,t):n[o]=s}catch{}return n}function Kl(r){if(!r)throw new f(x("Resource type is null"));if(!lt(r))throw new f(x("Unknown resource type"))}function vi(r,e,t){r===null?t.push(b(e,"Invalid null value")):Array.isArray(r)?Yl(r,e,t):typeof r=="object"&&Xl(r,e,t)}function Yl(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(b(`${e}[${n}]`,"Invalid undefined value")):vi(r[n],`${e}[${n}]`,t)}function Xl(r,e,t){for(let[n,i]of Object.entries(r))vi(i,`${e}${e?".":""}${n}`,t)}function Zl(r){return{resourceType:"SearchParameter",code:r.code+":identifier",base:r.base,type:"token",expression:`(${r.expression}).identifier`}}function Ti(r){return r.match(/^\((.+)\)\.identifier$/)?.[1]}function Si(r,e){return new he(r,new J(e,new L("identifier")))}var se={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function ep(r,e){let t=U.types[r]?.searchParamsDetails?.[e.code];return t||(t=rp(r,e)),t}function tp(r,e,t){let n=U.types[r];n||(n={},U.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function rp(r,e){let t=e.code,n=e.expression,i=Ei(r,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let u of i){let l=$r(u),p=Ln(()=>l.join("."));l.length===1&&l[0]instanceof w?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):p().endsWith("extension.value.code")||p().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):fs(o,l,r,1),p().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let u=Ti(n);if(u===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=bi(r,u);s=Si(n,l)}else s=bi(r,n);let a={type:op(e,o.propertyTypes),elementDefinitions:o.elementDefinitions.map(u=>({...u,type:u.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(u=>u.type&&u.type.length>0),parsedExpression:s,array:o.array};return tp(r,t,a),a}function fs(r,e,t,n){let i=e[n];if(i instanceof me){r.propertyTypes.add(i.right.toString());return}if(i instanceof ne){np(r,i);return}let o=i.toString(),s=mt(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof Re&&(a=!0,u++);let l=e[u];if(s.isArray&&!a&&(r.array=!0),u===e.length-1&&l instanceof me){r.elementDefinitions.push(s),r.propertyTypes.add(l.right.toString());return}if(u>=e.length){r.elementDefinitions.push(s);for(let p of s.type??g)r.propertyTypes.add(p.code);return}for(let p of s.type??g){let y=p.code;ip(y)&&(y=s.type[0].code),fs(r,e,y,u)}}function np(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){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 Ee){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function ip(r){return r==="Element"||r==="BackboneElement"}function op(r,e){switch(r.type){case"date":return e.size===1&&e.has(d.date)?se.DATE:se.DATETIME;case"number":return se.NUMBER;case"quantity":return se.QUANTITY;case"reference":return e.has(d.canonical)?se.CANONICAL:se.REFERENCE;case"token":return e.size===1&&e.has(d.boolean)?se.BOOLEAN:se.TEXT;default:return se.TEXT}}function Ei(r,e){let t=[],n=_t(e);return Hr(r,n.child,t),t}function sp(r,e){let t=Ei(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function bi(r,e){let t=[],n=_t(e);if(Hr(r,n.child,t),t.length===0)return n;let i=t[0];for(let o=1;o<t.length;o++)i=new be(i,t[o]);return new he("<original-not-available>",i)}function Hr(r,e,t){e instanceof be?(Hr(r,e.left,t),Hr(r,e.right,t)):e.toString().includes(r+".")&&t.push(e)}function $r(r){if(r instanceof me||r instanceof Re)return[$r(r.left),r].flat();if(r instanceof w)return[r];if(r instanceof J)return[$r(r.left),$r(r.right)].flat();if(r instanceof ne){if(r.name==="where"&&!(r.args[0]instanceof Ee))return[];if(r.name==="last")return[]}return[r]}function ap(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function cp(r,e){let t=[];for(let n of e)t.push(...up(r,n));return t}function up(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};for(let i of r.constant??g){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=k(o,"value")}let n=S(e);for(let i of r.where??g){let o=P(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return Ri(r,n,t)}function Ri(r,e,t){let n=[],i;r.forEach?i=P(r.forEach,[e],t):r.forEachOrNull?i=P(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??g){let u=P(a.path,[o],t),l;if(u.length===0)l={[a.name]:null};else if(a.collection)l={[a.name]:u.map(p=>p.value)};else if(u.length===1)l={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([l])}for(let a of r.select??g){let u=Ri(a,o,t);s.push(u)}if(r.unionAll){let a=[];for(let u of r.unionAll)for(let l of Ri(u,o,t))a.push(l);s.push(a)}n.push(...lp(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??g)o[s.name]=null;n.push(o)}return n}function lp(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=pp(e,r[t]);return e}function pp(r,e){let t=[];for(let n of r)for(let i of e)t.push(dp(n,i));return t}function dp(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}var hs="https://meta.medplum.com/releases",Gr=new Map;function fp(){Gr.clear()}function ms(r){let e=r;if(!e.tag_name)throw new Error("Manifest missing tag_name");let t=e.assets;if(!t?.length)throw new Error("Manifest missing assets list");for(let n of t){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function Qr(r,e,t){let n=Gr.get(e??"latest");if(!n){let i=e?`v${e}`:"latest",o=new URL(`${hs}/${i}.json`);if(o.searchParams.set("a",r),o.searchParams.set("c",_r),t)for(let[u,l]of Object.entries(t))o.searchParams.set(u,l);let s=await fetch(o.toString());if(s.status!==200){let u;try{u=(await s.json()).message}catch(l){console.error(`Failed to parse message from body: ${Oe(l)}`)}throw new Error(`Received status code ${s.status} while fetching manifest for version '${e??"latest"}'. Message: ${u}`)}let a=await s.json();ms(a),n=a,Gr.set(e??"latest",n),e||Gr.set(n.tag_name.slice(1),n)}return n}function ys(r){return/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/.test(r)}async function hp(r,e){if(!ys(e))return!1;try{await Qr(r,e)}catch{return!1}return!0}async function mp(r){let e=await Qr(r);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);return e.tag_name.slice(1)}async function yp(r,e){try{let t=_r.split("-")[0],i=(await Qr(r,void 0,e)).tag_name.slice(1);t!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${t}) may be missing important updates and bug fixes.`)}catch(t){console.warn(`Failed to check for newer version: ${Oe(t)}`)}}0&&(module.exports={AccessPolicyInteraction,AckCode,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_ACCEPT,DEFAULT_MAX_SEARCH_COUNT,DEFAULT_SEARCH_COUNT,DataSampler,DotAtom,EMPTY,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FileBuilder,FunctionAtom,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,LogLevelNames,Logger,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_RELEASES_URL,MEDPLUM_VERSION,MedplumClient,MedplumKeyValueClient,MemoryStorage,MockAsyncClientStorage,NDC,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthSigningAlgorithm,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,ReconnectingWebSocket,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TransformMapCollection,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,accessPolicySupportsInteraction,addProfileToResource,allOk,append,applyDefaultValuesToElement,applyDefaultValuesToResource,applyFixedOrPatternValue,arrayBufferToBase64,arrayBufferToHex,arrayify,assert,assertContextVersionOptional,assertOk,assertReleaseManifest,badRequest,booleanToTypedValue,buildCdsRequest,buildElementsContext,buildTypeName,businessRule,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,checkIfValidMedplumVersion,clearReleaseCache,compressElement,concatUrls,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToSearchableDates,convertToSearchableNumbers,convertToSearchableQuantities,convertToSearchableReferences,convertToSearchableStrings,convertToSearchableTokens,convertToSearchableUris,convertToTransactionBundle,crawlTypedValue,crawlTypedValueAsync,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,decodeBase64Url,deepClone,deepEquals,deepIncludes,deriveIdentifierSearchParameter,encodeBase64,encodeBase64Url,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,escapeHtml,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,expandSampledData,expandSampledObservation,extractAccountReferences,fetchLatestVersionString,fetchVersionManifest,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathArrayNotEquals,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,findCodeBySystem,findObservationInterval,findObservationReferenceRange,findObservationReferenceRanges,findResourceByCode,findResourceInBundle,flatMapFilter,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatReferenceString,formatSearchQuery,formatTime,formatTiming,formatWallTime,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getBuffer,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getInnerDerivedIdentifierExpression,getNestedProperty,getParsedDerivedIdentifierExpression,getParsedExpressionForResourceType,getPathDifference,getPathDisplayName,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getTypedPropertyValueWithoutSchema,getValueSliceName,getWebSocketUrl,getWindow,globalSchema,gone,indexConceptMapCodings,indexDefaultSearchParameters,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,invalidSearchOperator,isAccepted,isBrowserEnvironment,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isConflict,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isError,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNodeEnvironment,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isPrimitiveType,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isRedirect,isReference,isResource,isResourceType,isResourceTypeSchema,isResourceWithId,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isTypedValue,isUUID,isUnauthenticated,isValidDate,isValidHostname,isValidMedplumSemver,lazy,loadDataType,locationUtils,mapByIdentifier,matchDiscriminant,matchesRange,matchesSearchRequest,multipleMatches,normalizeArrayBufferView,normalizeCreateBinaryOptions,normalizeCreatePdfOptions,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseLogLevel,parseMappingLanguage,parseParameter,parseReference,parseSearchRequest,parseStructureDefinition,parseXFhirQuery,pathToJSONPointer,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,preconditionFailed,projectAdminResourceTypes,protectedResourceTypes,readInteractions,redirect,removeDuplicates,removeProfileFromResource,reorderBundle,replaceQueryVariables,resolveId,resourceMatchesSubscriptionCriteria,satisfiedAccessPolicy,serializeError,serializeFhircastSubscriptionRequest,serverError,serverTimeout,setCodeBySystem,setIdentifier,singleton,singularize,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,summarizeObservations,toJsBoolean,toPeriod,toTypedValue,tooManyRequests,trimTrailingEmptyElements,tryGetDataType,tryGetJwtExpiration,tryGetProfile,typedValueToString,unauthorized,unauthorizedTokenAudience,unauthorizedTokenExpired,unsupportedMediaType,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validateTypedValue,validationError,validationRegexes,warnIfNewerVersionAvailable,wordWrap});
|
|
55
55
|
/*!
|
|
56
56
|
* Reconnecting WebSocket
|
|
57
57
|
* by Pedro Ladaria <pedro.ladaria@gmail.com>
|