@medplum/core 5.0.13 → 5.0.15
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/README.md +1 -1
- package/dist/cjs/index.cjs +7 -7
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.d.ts +131 -6
- package/dist/esm/index.d.ts +131 -6
- package/dist/esm/index.mjs +7 -7
- package/dist/esm/index.mjs.map +4 -4
- package/package.json +3 -3
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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 bs=(r,e)=>{for(var t in e)Xt(r,t,{get:e[t],enumerable:!0})},Ss=(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=>Ss(Xt({},"__esModule",{value:!0}),r);var c=(r,e,t)=>Ts(r,typeof e!="symbol"?e+"":e,t);var vp={};bs(vp,{AccessPolicyInteraction:()=>Ce,AckCode:()=>Ql,AndAtom:()=>Ot,ArithemticOperatorAtom:()=>_,AsAtom:()=>me,BooleanInfixOperatorAtom:()=>A,CPT:()=>As,ClientStorage:()=>nt,ConcatAtom:()=>St,ContainsAtom:()=>Et,ContentType:()=>w,DEFAULT_ACCEPT:()=>Ho,DEFAULT_MAX_SEARCH_COUNT:()=>Gc,DEFAULT_SEARCH_COUNT:()=>Hc,DataSampler:()=>Lr,DotAtom:()=>J,EMPTY:()=>g,EmptySetAtom:()=>Tt,EqualsAtom:()=>Ct,EquivalentAtom:()=>At,EventTarget:()=>wr,ExternalSecretSystems:()=>rl,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:()=>ws,ImpliesAtom:()=>Vt,InAtom:()=>Rt,IndexerAtom:()=>Re,InfixOperatorAtom:()=>ae,IsAtom:()=>Ee,LOINC:()=>Rs,LRUCache:()=>Ae,LiteralAtom:()=>B,LogLevel:()=>qe,LogLevelNames:()=>ds,Logger:()=>xi,MEDPLUM_CLI_CLIENT_ID:()=>ju,MEDPLUM_RELEASES_URL:()=>hs,MEDPLUM_VERSION:()=>_r,MedplumClient:()=>$t,MedplumKeyValueClient:()=>qt,MemoryStorage:()=>Dr,MockAsyncClientStorage:()=>ni,NDC:()=>Os,NotEqualsAtom:()=>Pt,NotEquivalentAtom:()=>wt,OAuthClientAssertionType:()=>Qo,OAuthGrantType:()=>Ue,OAuthSigningAlgorithm:()=>Yu,OAuthTokenAuthMethod:()=>Ku,OAuthTokenType:()=>Go,OperationOutcomeError:()=>f,Operator:()=>h,OperatorPrecedence:()=>v,OrAtom:()=>It,Parser:()=>Zt,ParserBuilder:()=>ct,PrefixOperatorAtom:()=>at,PropertyType:()=>d,RXNORM:()=>Ps,ReadablePromise:()=>F,ReconnectingWebSocket:()=>Wt,ReturnAckCategory:()=>bu,SNOMED:()=>Cs,SearchParameterType:()=>se,SubscriptionEmitter:()=>ot,SubscriptionManager:()=>jt,SymbolAtom:()=>L,Tokenizer:()=>ye,TransformMapCollection:()=>qr,TypedEventTarget:()=>K,UCUM:()=>zr,UnaryOperatorAtom:()=>bt,UnionAtom:()=>Se,VALID_HOSTNAME_REGEX:()=>so,XorAtom:()=>kt,accepted:()=>Bs,accessPolicySupportsInteraction:()=>zn,addProfileToResource:()=>tc,allOk:()=>ks,append:()=>Q,applyDefaultValuesToElement:()=>fl,applyDefaultValuesToResource:()=>dl,applyFixedOrPatternValue:()=>Gt,arrayBufferToBase64:()=>Dn,arrayBufferToHex:()=>Vn,arrayify:()=>Ve,assert:()=>Bo,assertContextVersionOptional:()=>Xn,assertOk:()=>Zs,assertReleaseManifest:()=>ms,badRequest:()=>R,booleanToTypedValue:()=>m,buildCdsRequest:()=>Iu,buildElementsContext:()=>Nr,buildTypeName:()=>mo,businessRule:()=>$s,calculateAge:()=>yt,calculateAgeString:()=>Aa,canReadResourceType:()=>gu,canWriteResource:()=>vu,canWriteResourceType:()=>xu,capitalize:()=>V,checkForNull:()=>vi,checkIfValidMedplumVersion:()=>yp,clearReleaseCache:()=>mp,compressElement:()=>ta,concatUrls:()=>$,conceptMapTranslate:()=>pi,conflict:()=>qs,convertContainedResourcesToBundle:()=>wu,convertToSearchableDates:()=>Wn,convertToSearchableNumbers:()=>Nc,convertToSearchableQuantities:()=>Uc,convertToSearchableReferences:()=>$n,convertToSearchableStrings:()=>jn,convertToSearchableTokens:()=>Hn,convertToSearchableUris:()=>Bc,convertToTransactionBundle:()=>Io,crawlTypedValue:()=>lr,crawlTypedValueAsync:()=>ua,createConstraintIssue:()=>an,createFhircastMessagePayload:()=>Vr,createOperationOutcomeIssue:()=>xe,createProcessingIssue:()=>cn,createReference:()=>ve,createStructureIssue:()=>S,created:()=>Vs,decodeBase64:()=>Oo,decodeBase64Url:()=>Jn,deepClone:()=>be,deepEquals:()=>le,deepIncludes:()=>Ge,deriveIdentifierSearchParameter:()=>tp,encodeBase64:()=>Ft,encodeBase64Url:()=>Ru,encryptSHA256:()=>Kn,ensureNoLeadingSlash:()=>oo,ensureTrailingSlash:()=>Sr,escapeHtml:()=>oc,evalFhirPath:()=>Fc,evalFhirPathTyped:()=>P,evalSqlOnFhir:()=>lp,expandSampledData:()=>si,expandSampledObservation:()=>sl,extractAccountReferences:()=>vr,fetchLatestVersionString:()=>gp,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:()=>Ou,flatMapFilter:()=>ic,forbidden:()=>Ms,formatAddress:()=>co,formatCodeableConcept:()=>ze,formatCoding:()=>Bn,formatDate:()=>uc,formatDateTime:()=>Er,formatFamilyName:()=>cc,formatGivenName:()=>ac,formatHl7DateTime:()=>ps,formatHumanName:()=>Ye,formatMoney:()=>xc,formatObservationValue:()=>lo,formatPeriod:()=>pc,formatQuantity:()=>de,formatRange:()=>gc,formatReferenceString:()=>ao,formatSearchQuery:()=>ru,formatTime:()=>lc,formatTiming:()=>mc,formatWallTime:()=>uo,generateId:()=>oe,getAllDataTypes:()=>fn,getAllQuestionnaireAnswers:()=>Oa,getBuffer:()=>Pr,getCodeBySystem:()=>xr,getDataType:()=>ce,getDateProperty:()=>Pa,getDefaultValuesForNewSliceEntry:()=>hl,getDisplayString:()=>Ji,getElementDefinition:()=>mt,getElementDefinitionFromElements:()=>go,getElementDefinitionTypeName:()=>or,getExpressionForResourceType:()=>cp,getExpressionsForResourceType:()=>Ei,getExtension:()=>ue,getExtensionValue:()=>ka,getIdentifier:()=>Xi,getImageSrc:()=>Ca,getInnerDerivedIdentifierExpression:()=>Ti,getNestedProperty:()=>ke,getParsedDerivedIdentifierExpression:()=>bi,getParsedExpressionForResourceType:()=>Si,getPathDifference:()=>pe,getPathDisplayName:()=>Cc,getPropertyDisplayName:()=>yo,getQueryString:()=>Nn,getQuestionnaireAnswers:()=>wa,getRandomString:()=>Ar,getReferenceString:()=>D,getResourceTypes:()=>Sc,getSearchParameter:()=>Rc,getSearchParameterDetails:()=>rp,getSearchParameters:()=>Ec,getStatus:()=>Xs,getTypedPropertyValue:()=>k,getTypedPropertyValueWithPath:()=>pr,getTypedPropertyValueWithSchema:()=>$i,getTypedPropertyValueWithoutSchema:()=>Hi,getValueSliceName:()=>ci,getWebSocketUrl:()=>Fn,getWindow:()=>Eu,globalSchema:()=>U,gone:()=>_s,indexConceptMapCodings:()=>Yo,indexDefaultSearchParameters:()=>gn,indexSearchParameter:()=>Rr,indexSearchParameterBundle:()=>bc,indexStructureDefinitionBundle:()=>ar,inflateBaseSchema:()=>un,inflateElement:()=>Di,initFhirPathParserBuilder:()=>Ze,invalidSearchOperator:()=>su,isAccepted:()=>Gs,isBrowserEnvironment:()=>q,isCodeableConcept:()=>gr,isCoding:()=>yr,isCompletedSubscriptionRequest:()=>Zn,isComplexTypeCode:()=>Tr,isConflict:()=>Js,isContextVersionRequired:()=>Yn,isCreated:()=>Hs,isDataTypeLoaded:()=>hn,isDateString:()=>Pn,isDateTimeString:()=>De,isDefined:()=>sc,isEmpty:()=>C,isError:()=>nr,isFhirCriteriaMet:()=>qo,isFhircastResourceType:()=>Lo,isGone:()=>Ks,isJwt:()=>ei,isLowerCase:()=>qa,isMedplumAccessToken:()=>ti,isNodeEnvironment:()=>Su,isNotFound:()=>zs,isObject:()=>E,isOk:()=>ir,isOperationOutcome:()=>We,isPeriod:()=>An,isPopulated:()=>ee,isPrimitiveType:()=>pt,isProfileLoaded:()=>mn,isProfileResource:()=>zi,isQuantity:()=>O,isQuantityEquivalent:()=>wn,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:()=>Gl,parseHl7DateTime:()=>Jl,parseJWTPayload:()=>Bt,parseLogLevel:()=>Yl,parseMappingLanguage:()=>Sl,parseParameter:()=>Eo,parseReference:()=>Sa,parseSearchRequest:()=>et,parseStructureDefinition:()=>sr,parseXFhirQuery:()=>tu,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:()=>qu,satisfiedAccessPolicy:()=>Ao,serializeError:()=>Yt,serializeFhircastSubscriptionRequest:()=>kr,serverError:()=>on,serverTimeout:()=>Ws,setCodeBySystem:()=>Wa,setIdentifier:()=>Ia,singleton:()=>z,singularize:()=>Za,sleep:()=>br,sortStringArray:()=>xt,splitN:()=>Ke,splitSearchOnComma:()=>tt,streamToBuffer:()=>up,stringify:()=>gt,stringifyTypedValue:()=>qn,structureMapTransform:()=>El,subsetResource:()=>ia,summarizeObservations:()=>nl,toJsBoolean:()=>N,toPeriod:()=>ht,toTypedValue:()=>b,tooManyRequests:()=>Us,trimTrailingEmptyElements:()=>Ma,tryGetDataType:()=>$e,tryGetJwtExpiration:()=>ri,tryGetProfile:()=>yn,typedValueToString:()=>Un,unauthorized:()=>we,unauthorizedTokenAudience:()=>rr,unauthorizedTokenExpired:()=>nn,unsupportedMediaType:()=>Fs,validateFhircastSubscriptionRequest:()=>Ut,validateResource:()=>ha,validateResourceType:()=>Xl,validateTypedValue:()=>Bi,validationError:()=>x,validationRegexes:()=>He,warnIfNewerVersionAvailable:()=>xp,wordWrap:()=>us});module.exports=Es(vp);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 Ae=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",As="http://www.ama-assn.org/go/cpt",ws="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",Ai="unsupported-media-type",wi="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"}}]},we={resourceType:"OperationOutcome",id:tn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},nn={...we,issue:[...we.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},rr={...we,issue:[...we.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:Ai,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Ns={resourceType:"OperationOutcome",id:wi,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 qs(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 Ws(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 We(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 wi:return 412;case Ai: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:We(r)?r:R(Oe(r))}function Oe(r){return r?typeof r=="string"?r:nr(r)?r.message:We(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 S(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 Ae(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(b(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(){bn(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(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}`)),ga(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=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(S(e.path,"Missing required property")),!1):C(e)?(this.issues.push(S(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){pt(e.type)?this.validatePrimitiveType(e):C(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=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(S(`${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":b(zr)},i=this.currentResource();i&&(n["%resource"]=b(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(S(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(S(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(S(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(S(t,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}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=He[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")):ma(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 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 bn(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]&&bn(i[a],`${o}[${a}]`,t);else typeof i=="object"&&bn(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 b(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]=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(!C(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(p=>qi(p,s)):qi(o,s)}function qi(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(b):n=b(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(wn(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(Wi),e.sort(Wi),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(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"?On({...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 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 An(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 An(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(An(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 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 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 Sn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ba(r??{},e)}return r}function ba(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 Sa(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 Aa(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 wa(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 be(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 qa(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 Wa(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 br=(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 Sr(r){return r.endsWith("/")?r:r+"/"}function oo(r){return r.startsWith("/")?r.slice(1):r}function $(r,e){return new URL(oo(e),Sr(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","…")}function sc(r){return r!=null}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 ac(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function cc(r){return _e(r.family)??""}function vt(r){return r instanceof Date&&!Number.isNaN(r.getTime())}function uc(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 lc(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 pc(r,e,t){return!r||!r.start&&!r.end?"":Er(r.start,e,t)+" - "+Er(r.end,e,t)}var dc={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},fc={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},hc={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function mc(r){if(!r)return"";let e=[];return yc(e,r.repeat),r.event&&e.push(r.event.map(t=>Er(t)).join(", ")),V(e.join(" ").trim())}function yc(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(dc[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+fc[i]):r.push("per "+n+" "+hc[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(V).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>uo(o)).join(", "))}function gc(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=Tc(n.value,e),`> ${de(n,e)}`):`>= ${de(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=vc(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 xc(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 vc(r,e,t=1){return(po(r,e)+t)*Math.pow(10,-e)}function Tc(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 bc(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 Ec(r){return U.types[r]?.searchParams}function Rc(r,e){return U.types[r]?.searchParams?.[e]}function Cc(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(Ac).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Pc=new Set(["CDS","ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Ac(r){let e=r.toUpperCase();return r===e?r:Pc.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 qn(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)=>[b(!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 b(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(b):[b(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"{}"}},bt=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)}},A=class extends ae{},_=class extends A{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}}]:[b(p)]}},St=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 A{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 A{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()}`}},Se=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 A{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 A{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)}},At=class extends A{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)}},wt=class extends A{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 A{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 A{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 A{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 A{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 A{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 Oc=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Ic={"'":"'",'"':'"',"`":"`",r:"\r",n:`
|
|
1
|
+
"use strict";var Zt=Object.defineProperty;var Rs=Object.getOwnPropertyDescriptor;var Cs=Object.getOwnPropertyNames;var Ps=Object.prototype.hasOwnProperty;var As=(r,e,t)=>e in r?Zt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var ws=(r,e)=>{for(var t in e)Zt(r,t,{get:e[t],enumerable:!0})},Os=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Cs(e))!Ps.call(r,i)&&i!==t&&Zt(r,i,{get:()=>e[i],enumerable:!(n=Rs(e,i))||n.enumerable});return r};var Is=r=>Os(Zt({},"__esModule",{value:!0}),r);var c=(r,e,t)=>As(r,typeof e!="symbol"?e+"":e,t);var Dp={};ws(Dp,{AccessPolicyInteraction:()=>Ce,AckCode:()=>ep,AndAtom:()=>It,ArithemticOperatorAtom:()=>_,AsAtom:()=>he,BooleanInfixOperatorAtom:()=>w,CPT:()=>Ms,ClientStorage:()=>nt,ConcatAtom:()=>Et,ContainsAtom:()=>Rt,ContentType:()=>O,DEFAULT_ACCEPT:()=>Yo,DEFAULT_MAX_SEARCH_COUNT:()=>Zc,DEFAULT_SEARCH_COUNT:()=>Xc,DataSampler:()=>Fr,DotAtom:()=>J,EMPTY:()=>g,EmptySetAtom:()=>bt,EqualsAtom:()=>Pt,EquivalentAtom:()=>wt,EventTarget:()=>Or,ExternalSecretSystems:()=>ul,FHIRCAST_EVENT_NAMES:()=>Ir,FHIRCAST_EVENT_RESOURCES:()=>qo,FHIRCAST_EVENT_VERSION_REQUIRED:()=>kr,FHIRCAST_RESOURCE_TYPES:()=>Bo,FhirFilterComparison:()=>Jt,FhirFilterConnective:()=>Yt,FhirFilterNegation:()=>Kt,FhirPathAtom:()=>me,FhircastConnection:()=>Ut,FileBuilder:()=>gi,FunctionAtom:()=>ne,HTTP_HL7_ORG:()=>ut,HTTP_TERMINOLOGY_HL7_ORG:()=>Fs,Hl7Context:()=>ge,Hl7Field:()=>Y,Hl7Message:()=>vi,Hl7Segment:()=>st,ICD10:()=>_s,ImpliesAtom:()=>Vt,InAtom:()=>Ct,IndexerAtom:()=>Re,InfixOperatorAtom:()=>ae,IsAtom:()=>Ee,LOINC:()=>ks,LRUCache:()=>Ae,LiteralAtom:()=>B,LogLevel:()=>qe,LogLevelNames:()=>xs,Logger:()=>Ti,MEDPLUM_CLI_CLIENT_ID:()=>Ku,MEDPLUM_RELEASES_URL:()=>bs,MEDPLUM_VERSION:()=>Lr,MedplumClient:()=>Ht,MedplumKeyValueClient:()=>Wt,MemoryStorage:()=>Mr,MockAsyncClientStorage:()=>oi,NDC:()=>Ls,NotEqualsAtom:()=>At,NotEquivalentAtom:()=>Ot,OAuthClientAssertionType:()=>Zo,OAuthGrantType:()=>Ue,OAuthSigningAlgorithm:()=>il,OAuthTokenAuthMethod:()=>nl,OAuthTokenType:()=>Xo,OperationOutcomeError:()=>f,Operator:()=>m,OperatorPrecedence:()=>v,OrAtom:()=>kt,PATIENT_PREFERRED_PHARMACY_URL:()=>Gr,PHARMACY_PREFERENCE_TYPE_SYSTEM:()=>Ei,PHARMACY_TYPE_PREFERRED:()=>Ri,PHARMACY_TYPE_PRIMARY:()=>Hr,Parser:()=>er,ParserBuilder:()=>ct,PrefixOperatorAtom:()=>at,PropertyType:()=>d,RXNORM:()=>Vs,ReadablePromise:()=>F,ReconnectingWebSocket:()=>jt,ReturnAckCategory:()=>wu,SNOMED:()=>Ds,SearchParameterType:()=>se,SubscriptionEmitter:()=>ot,SubscriptionManager:()=>$t,SymbolAtom:()=>L,Tokenizer:()=>ye,TransformMapCollection:()=>Wr,TypedEventTarget:()=>K,UCUM:()=>Yr,UnaryOperatorAtom:()=>St,UnionAtom:()=>Se,VALID_HOSTNAME_REGEX:()=>fo,XorAtom:()=>Dt,accepted:()=>Qs,accessPolicySupportsInteraction:()=>Kn,addPreferredPharmacyToPatient:()=>ap,addProfileToResource:()=>cc,allOk:()=>Ns,append:()=>Q,applyDefaultValuesToElement:()=>Tl,applyDefaultValuesToResource:()=>vl,applyFixedOrPatternValue:()=>Qt,arrayBufferToBase64:()=>_n,arrayBufferToHex:()=>Mn,arrayify:()=>De,assert:()=>Go,assertContextVersionOptional:()=>ei,assertOk:()=>sa,assertReleaseManifest:()=>Ss,badRequest:()=>R,booleanToTypedValue:()=>h,buildCdsRequest:()=>Fu,buildElementsContext:()=>Ur,buildTypeName:()=>bo,businessRule:()=>Ys,calculateAge:()=>gt,calculateAgeString:()=>Ma,canReadResourceType:()=>Ru,canWriteResource:()=>Pu,canWriteResourceType:()=>Cu,capitalize:()=>V,checkForNull:()=>Ci,checkIfValidMedplumVersion:()=>Op,clearReleaseCache:()=>wp,compressElement:()=>ca,concatUrls:()=>$,conceptMapTranslate:()=>fi,conflict:()=>zs,convertContainedResourcesToBundle:()=>_u,convertToSearchableDates:()=>$n,convertToSearchableNumbers:()=>Hc,convertToSearchableQuantities:()=>Gc,convertToSearchableReferences:()=>Gn,convertToSearchableStrings:()=>Hn,convertToSearchableTokens:()=>Qn,convertToSearchableUris:()=>Qc,convertToTransactionBundle:()=>Lo,crawlTypedValue:()=>pr,crawlTypedValueAsync:()=>ya,createConstraintIssue:()=>un,createFhircastMessagePayload:()=>Vr,createOperationOutcomeIssue:()=>xe,createPreferredPharmacyExtension:()=>vs,createProcessingIssue:()=>ln,createReference:()=>ve,createStructureIssue:()=>S,created:()=>Us,decodeBase64:()=>_o,decodeBase64Url:()=>Yn,deepClone:()=>be,deepEquals:()=>le,deepIncludes:()=>Ge,deriveIdentifierSearchParameter:()=>mp,encodeBase64:()=>Nt,encodeBase64Url:()=>ku,encryptSHA256:()=>Xn,ensureNoLeadingSlash:()=>po,ensureTrailingSlash:()=>Er,escapeHtml:()=>dc,evalFhirPath:()=>$c,evalFhirPathTyped:()=>P,evalSqlOnFhir:()=>Ep,expandSampledData:()=>ci,expandSampledObservation:()=>fl,extractAccountReferences:()=>Tr,fetchLatestVersionString:()=>Ip,fetchVersionManifest:()=>Kr,fhirPathArrayEquals:()=>Pn,fhirPathArrayEquivalent:()=>yr,fhirPathArrayNotEquals:()=>An,fhirPathEquals:()=>Qe,fhirPathEquivalent:()=>Xi,fhirPathIs:()=>mt,fhirPathNot:()=>Cn,fhirTypeToJsType:()=>fr,findCodeBySystem:()=>Qa,findObservationInterval:()=>Ka,findObservationReferenceRange:()=>Ya,findObservationReferenceRanges:()=>ao,findResourceByCode:()=>oc,findResourceInBundle:()=>Lu,flatMapFilter:()=>pc,forbidden:()=>qs,formatAddress:()=>ho,formatCodeableConcept:()=>ze,formatCoding:()=>Wn,formatDate:()=>yc,formatDateTime:()=>Rr,formatFamilyName:()=>hc,formatGivenName:()=>mc,formatHl7DateTime:()=>gs,formatHumanName:()=>Ye,formatMoney:()=>Cc,formatObservationValue:()=>go,formatPeriod:()=>xc,formatQuantity:()=>de,formatRange:()=>Rc,formatReferenceString:()=>mo,formatSearchQuery:()=>uu,formatTime:()=>gc,formatTiming:()=>Sc,formatWallTime:()=>yo,generateId:()=>oe,getAllDataTypes:()=>hn,getAllQuestionnaireAnswers:()=>La,getBuffer:()=>Ar,getCodeBySystem:()=>vr,getDataType:()=>ce,getDateProperty:()=>Va,getDefaultValuesForNewSliceEntry:()=>bl,getDisplayString:()=>to,getElementDefinition:()=>yt,getElementDefinitionFromElements:()=>Eo,getElementDefinitionTypeName:()=>sr,getExpressionForResourceType:()=>bp,getExpressionsForResourceType:()=>Oi,getExtension:()=>ue,getExtensionValue:()=>Na,getIdentifier:()=>io,getImageSrc:()=>Da,getInnerDerivedIdentifierExpression:()=>Pi,getNestedProperty:()=>ke,getParsedDerivedIdentifierExpression:()=>Ai,getParsedExpressionForResourceType:()=>wi,getPathDifference:()=>pe,getPathDisplayName:()=>Dc,getPreferredPharmaciesFromPatient:()=>sp,getPropertyDisplayName:()=>So,getQueryString:()=>Bn,getQuestionnaireAnswers:()=>_a,getRandomString:()=>wr,getReferenceString:()=>A,getResourceTypes:()=>Oc,getSearchParameter:()=>kc,getSearchParameterDetails:()=>hp,getSearchParameters:()=>Ic,getStatus:()=>oa,getTypedPropertyValue:()=>D,getTypedPropertyValueWithPath:()=>dr,getTypedPropertyValueWithSchema:()=>Ki,getTypedPropertyValueWithoutSchema:()=>Yi,getValueSliceName:()=>li,getWebSocketUrl:()=>Un,getWindow:()=>Iu,globalSchema:()=>U,gone:()=>Ws,indexConceptMapCodings:()=>ns,indexDefaultSearchParameters:()=>vn,indexSearchParameter:()=>Cr,indexSearchParameterBundle:()=>wc,indexStructureDefinitionBundle:()=>cr,inflateBaseSchema:()=>pn,inflateElement:()=>Ui,initFhirPathParserBuilder:()=>Ze,invalidSearchOperator:()=>fu,isAccepted:()=>Zs,isAddPharmacyResponse:()=>lp,isBrowserEnvironment:()=>q,isCodeableConcept:()=>xr,isCoding:()=>gr,isCompletedSubscriptionRequest:()=>ti,isComplexTypeCode:()=>br,isConflict:()=>ra,isContextVersionRequired:()=>Zn,isCreated:()=>Xs,isDataTypeLoaded:()=>yn,isDateString:()=>wn,isDateTimeString:()=>Ve,isDefined:()=>fc,isEmpty:()=>C,isError:()=>ir,isFhirCriteriaMet:()=>Qo,isFhircastResourceType:()=>Wo,isGone:()=>na,isJwt:()=>ri,isLowerCase:()=>za,isMedplumAccessToken:()=>ni,isNodeEnvironment:()=>Ou,isNotFound:()=>ta,isObject:()=>E,isOk:()=>or,isOperationOutcome:()=>We,isOrganizationArray:()=>up,isPeriod:()=>On,isPopulated:()=>ee,isPrimitiveType:()=>dt,isProfileLoaded:()=>gn,isProfileResource:()=>eo,isQuantity:()=>I,isQuantityEquivalent:()=>In,isRedirect:()=>ea,isReference:()=>j,isResource:()=>k,isResourceType:()=>pt,isResourceTypeSchema:()=>lr,isResourceWithId:()=>Je,isSliceDefinitionWithTypes:()=>ui,isString:()=>Me,isStringArray:()=>Vn,isTextObject:()=>oo,isTypedValue:()=>_c,isUUID:()=>Ga,isUnauthenticated:()=>ia,isValidDate:()=>Tt,isValidHostname:()=>ac,isValidMedplumSemver:()=>Es,lazy:()=>Nn,loadDataType:()=>ur,locationUtils:()=>ie,mapByIdentifier:()=>uc,matchDiscriminant:()=>mr,matchesRange:()=>Fn,matchesSearchRequest:()=>Ft,multipleMatches:()=>Hs,normalizeArrayBufferView:()=>Ln,normalizeCreateBinaryOptions:()=>ai,normalizeCreatePdfOptions:()=>es,normalizeErrorString:()=>Oe,normalizeOperationOutcome:()=>lt,notFound:()=>on,notModified:()=>Bs,operationOutcomeIssueToString:()=>Ni,operationOutcomeToString:()=>cn,parseFhirPath:()=>Lt,parseFilterParameter:()=>Zl,parseHl7DateTime:()=>rp,parseJWTPayload:()=>qt,parseLogLevel:()=>ip,parseMappingLanguage:()=>Ol,parseParameter:()=>Oo,parseReference:()=>Oa,parseSearchRequest:()=>et,parseStructureDefinition:()=>ar,parseXFhirQuery:()=>cu,pathToJSONPointer:()=>xa,preciseEquals:()=>rc,preciseGreaterThan:()=>ic,preciseGreaterThanOrEquals:()=>lo,preciseLessThan:()=>nc,preciseLessThanOrEquals:()=>uo,preciseRound:()=>tc,preconditionFailed:()=>js,projectAdminResourceTypes:()=>ko,protectedResourceTypes:()=>Io,readInteractions:()=>Do,redirect:()=>Ks,removeDuplicates:()=>ft,removePreferredPharmacyFromPatient:()=>cp,removeProfileFromResource:()=>lc,reorderBundle:()=>Fo,replaceQueryVariables:()=>Uo,resolveId:()=>Te,resourceMatchesSubscriptionCriteria:()=>zu,satisfiedAccessPolicy:()=>Vo,serializeError:()=>Xt,serializeFhircastSubscriptionRequest:()=>Dr,serverError:()=>an,serverTimeout:()=>Js,setCodeBySystem:()=>Ja,setIdentifier:()=>Fa,singleton:()=>z,singularize:()=>sc,sleep:()=>Sr,sortStringArray:()=>vt,splitN:()=>Ke,splitSearchOnComma:()=>tt,streamToBuffer:()=>Sp,stringify:()=>xt,stringifyTypedValue:()=>jn,structureMapTransform:()=>Il,subsetResource:()=>pa,summarizeObservations:()=>ll,toJsBoolean:()=>N,toPeriod:()=>ht,toTypedValue:()=>b,tooManyRequests:()=>Gs,trimTrailingEmptyElements:()=>qa,tryGetDataType:()=>$e,tryGetJwtExpiration:()=>ii,tryGetProfile:()=>xn,typedValueToString:()=>qn,unauthorized:()=>we,unauthorizedTokenAudience:()=>nr,unauthorizedTokenExpired:()=>sn,unsupportedMediaType:()=>$s,validateFhircastSubscriptionRequest:()=>Bt,validateResource:()=>ba,validateResourceType:()=>pp,validateTypedValue:()=>Gi,validationError:()=>x,validationRegexes:()=>He,warnIfNewerVersionAvailable:()=>kp,wordWrap:()=>hs});module.exports=Is(Dp);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 er(e,this.prefixParselets,this.infixParselets)}},er=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 Ae=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 Yr="http://unitsofmeasure.org",ks="http://loinc.org",Ds="http://snomed.info/sct",Vs="http://www.nlm.nih.gov/research/umls/rxnorm",Ms="http://www.ama-assn.org/go/cpt",_s="http://hl7.org/fhir/sid/icd-10",Ls="http://hl7.org/fhir/sid/ndc",ut="http://hl7.org",Fs="http://terminology.hl7.org";var tr="created",Xr="gone",Zr="not-modified",en="found",tn="not-found",rn="conflict",nn="unauthorized",ki="forbidden",Di="precondition-failed",Vi="unsupported-media-type",Mi="multiple-matches",_i="too-many-requests",rr="accepted",Li="server-timeout",Fi="business-rule",Ns={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Us={resourceType:"OperationOutcome",id:tr,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Bs={resourceType:"OperationOutcome",id:Zr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},on={resourceType:"OperationOutcome",id:tn,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},we={resourceType:"OperationOutcome",id:nn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},sn={...we,issue:[...we.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},nr={...we,issue:[...we.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},qs={resourceType:"OperationOutcome",id:ki,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ws={resourceType:"OperationOutcome",id:Xr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},js={resourceType:"OperationOutcome",id:Di,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},$s={resourceType:"OperationOutcome",id:Vi,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Hs={resourceType:"OperationOutcome",id:Mi,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Gs={resourceType:"OperationOutcome",id:_i,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Qs(r){return{resourceType:"OperationOutcome",id:rr,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 zs(r,e){return{resourceType:"OperationOutcome",id:rn,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 an(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Js(r){return{resourceType:"OperationOutcome",id:Li,issue:[{severity:"error",code:"timeout",details:{text:r??"Server timeout"}}]}}function Ks(r){let e=r.toString();return{resourceType:"OperationOutcome",id:en,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function Ys(r,e){return{resourceType:"OperationOutcome",id:Fi,issue:[{severity:"error",code:"business-rule",details:{id:r,text:e}}]}}function ir(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 We(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function or(r){return r.id==="ok"||r.id===tr||r.id===Zr||r.id===rr}function Xs(r){return r.id===tr}function Zs(r){return r.id===rr}function ea(r){return r.id===en}function ta(r){return r.id===tn}function ra(r){return r.id===rn}function na(r){return r.id===Xr}function ia(r){return r.id===nn}function oa(r){switch(r.id){case"ok":return 200;case tr:return 201;case rr:return 202;case en:return 302;case Zr:return 304;case nn:return 401;case ki:return 403;case tn:return 404;case rn:return 409;case Xr:return 410;case Di:case Mi:return 412;case Vi:return 415;case Fi:return 422;case _i:return 429;case Li:return 504;default:return r.issue?.[0]?.code==="exception"?500:400}}function sa(r,e){if(!or(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(t,n){super(cn(t),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=t}};function lt(r){return r instanceof f?r.outcome:We(r)?r:R(Oe(r))}function Oe(r){return r?typeof r=="string"?r:ir(r)?r.message:We(r)?cn(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function cn(r){let e=r.issue?.map(Ni)??[];return e.length>0?e.join("; "):"Unknown error"}function Ni(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 S(r,e){return xe("error","structure",e,r)}function un(r,e){return xe("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function ln(r,e,t,n){return xe("error","processing",e,r,{...n,error:t})}var aa={"http://hl7.org/fhirpath/System.String":"string"};function ca(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:aa[t.code]??t.code})),e}function Ui(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function pn(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,Ui(i,o)])),constraints:[],innerTypes:[]};return e}var Bi={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 ar(r){return new fn(r).parse()}var Ie=pn(Bi),mn=Object.create(null),qi=Object.create(null),la={"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 Hi(r){let e;return e=qi[r],e||(e=qi[r]=Object.create(null)),e}function cr(r){let t=(Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");vn(t);for(let n of t)ur(n)}function ur(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=ar(r),t=la[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=Hi(r.url),i=r.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;mn[r.url]=e}function hn(){return Ie}function yn(r){return!!Ie[r]}function $e(r,e){if(e){let t=Hi(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 pt(r){let e=Ie[r];return e&&lr(e)}function gn(r){return!!mn[r]}function xn(r){return mn[r]}var fn=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:ha(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=dn(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[dn(e,n.path)]=t;break}n=n.parent}if(!n){let i=dn(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=sr(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){ma(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=sr(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=ji(e.max),n=e.base?.max?ji(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:$i(D(i,"fixed[x]")),pattern:$i(D(i,"pattern[x]")),binding:e.binding}}};function pa(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)&&!da.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(Wi):[Wi]},r}var Wi={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},da=["resourceType","id","meta"];function ji(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function dn(r,e=""){return fa(r.path,e)}function fa(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 $i(r){return Array.isArray(r)&&r.length>0?r[0]:C(r)?void 0:r}function ma(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 ha(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 pr(r,e,t){new Tn(r,e,t).crawl()}function ya(r,e,t){return new bn(r,e,t).crawl()}var Tn=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=k(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 De(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,t,n){if(!dt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ce(e.type);this.crawlObject(e,i,t)}}},bn=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=k(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 De(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,t,n){if(!dt(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?dr:D,[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 dr(r,e,t){let n=r.path;return ga(D(r,e,t),n,e)}function ga(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 xa(r){return r[0]===r[0].toUpperCase()&&(r=r.slice(r.indexOf(".")+1)),`.${r}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,t)=>`/${t}`)}var fr={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"},va=new Ae(1e3);function dt(r){return r==="undefined"||r in fr}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:/.*/},Ta={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function ba(r,e){if(!pt(r.resourceType))throw new f(x("Invalid resource type"));return Gi(b(r),e)}function Gi(r,e){return new Sn(r,e).validate()}var Sn=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=[],k(e.value)&&this.resourceStack.push(e.value),t?.profile?this.schema=ar(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(){En(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),pr(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}`)),Ra(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=Ca(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):C(e)?(this.issues.push(S(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){dt(e.type)?this.validatePrimitiveType(e):C(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=Ea(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(S(`${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 Ta)&&!this.isExpressionTrue(i,e)){this.issues.push(un(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=ut+"/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"&&Aa(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":b(Yr)},i=this.currentResource();i&&(n["%resource"]=b(i)),k(this.root.value)&&(n["%rootResource"]=this.root);try{let o=P(e.expression,[t],n,va);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(ln(t.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[t,n]=Pa(e),i=e.path;if(t){let{type:o,value:s}=t;if(!(o in fr)){this.issues.push(S(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=fr[o];if(typeof s!==a){s!==null&&this.issues.push(S(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&&pr(n,this,{schema:ce("Element"),initialPath:i})}validateBase64Binary(e,t){if(!He.base64Binary.exec(e)){this.issues.push(S(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(S(t,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}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=He[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")):Sa(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 Sa(r){return r===d.integer||r===d.positiveInt||r===d.unsignedInt}function Ea(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 D(r,o)?n+a:void 0}}function En(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]&&En(i[a],`${o}[${a}]`,t);else typeof i=="object"&&En(i,o,t)}}function Ra(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 mr(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 Ca(r,e){for(let t of e?.slices??g)if(e?.discriminator?.every(n=>De(ke(r,n.path))?.some(i=>mr(i,n,t))))return t.name}function Pa(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 Aa(r){switch(r){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function h(r){return[{type:d.boolean,value:r}]}function b(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}:I(r)?{type:d.Quantity,value:r}:k(r)?{type:r.resourceType,value:r}:xr(r)?{type:d.CodeableConcept,value:r}:gr(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 D(r,e,t){if(!r.value)return;let n=yt(r.type,e,t?.profileUrl);return n?Ki(r,e,n):Yi(r,e)}function Ki(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]=Rn(o[p],a[p])}else if(!o&&Array.isArray(a)){o=a.slice();for(let p=0;p<a.length;p++)o[p]=Rn(void 0,a[p])}else o=Rn(o,a);if(!C(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(p=>Qi(p,s)):Qi(o,s)}function Qi(r,e){return e==="Resource"&&k(r)&&(e=r.resourceType),{type:e,value:r}}function Yi(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(b):n=b(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 ft(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 Cn(r){return h(!N(r))}function Pn(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?h(!1):h(r.every((t,n)=>N(Qe(t,e[n]))))}function An(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?h(!0):h(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"?h(Math.abs(t-n)<1e-8):I(t)&&I(n)?h(In(t,n)):h(typeof t=="object"&&typeof n=="object"?kn(r,e):t===n)}function yr(r,e){return r.length===0&&e.length===0?h(!0):r.length!==e.length?h(!1):(r.sort(zi),e.sort(zi),h(r.every((t,n)=>N(Xi(t,e[n])))))}function Xi(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"?h(Math.abs(s-a)<.01):I(s)&&I(a)?h(In(s,a)):h(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"?kn({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function zi(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 mt(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 wn(t);case"DateTime":return Ve(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return On(t);case"Quantity":return I(t);default:return r.type===n||typeof t=="object"&&t?.resourceType===n}}function wn(r){return typeof r=="string"&&!!He.date.exec(r)}function Ve(r){return typeof r=="string"&&!!He.dateTime.exec(r)}function On(r){return!!(r&&typeof r=="object"&&("start"in r&&Ve(r.start)||"end"in r&&Ve(r.end)))}function ht(r){if(r){if(wn(r)||Ve(r))return{start:hr(r,"0000-01-01T00:00:00.000"),end:hr(r,"xxxx-12-31T23:59:59.999")};if(On(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 I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function In(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 kn(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(!kn(o,s))return!1}else if(o!==s)return!1}return!0}function Ji(r){return r!==null&&typeof r=="object"}function Rn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return wa(r??{},e)}return r}function wa(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Je(r,e){return k(r,e)&&"id"in r&&typeof r.id=="string"}function ve(r){let e=A(r)??"undefined/undefined",t=to(r);return t===e?{reference:e}:{reference:e,display:t}}function A(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 Oa(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 Tr(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 De(r.accounts??r.account)}function eo(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function to(r){if(eo(r)){let e=Ia(r);if(e)return e}if(r.resourceType==="Device"){let e=ka(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]),xr(e))return ze(e);if(oo(e))return e.text}return A(r)??""}function Ia(r){let e=r.name;if(e&&e.length>0)return Ye(e[0])}function ka(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Da(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Zi(t);if(n)return n}else return Zi(e)}function Zi(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Va(r){return r?new Date(r):void 0}function gt(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 Ma(r,e){let{years:t,months:n,days:i}=gt(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 _a(r){let e={};return ro(r.item,e),e}function ro(r,e){for(let t of r??g)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ro(t.item,e)}function La(r){let e={};return no(r.item,e),e}function no(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),no(t.item,e)}function io(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 Fa(r,e,t,n){let i={system:e,value:t};n?.use&&(i.use=n.use);let o=r.identifier;if(!o){r.identifier=[i];return}for(let s of o)if(s.system===e){Object.assign(s,i);return}o.push(i)}function Na(r,...e){let t=ue(r,...e);if(!t)return;let n=D({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 xt(r,e){let t=Dn(r);return JSON.stringify(t,null,e?2:void 0)??""}function Dn(r){if(!(r==null||r===""))return typeof r=="object"?Array.isArray(r)?Ua(r):Ba(r):r}function Ua(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=Dn(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 Ba(r){let e,t=0;for(let n in r){let i=r[n],o=Dn(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 qa(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)?Wa(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?ja(r,e,t):(E(r)||E(e),!1)}function Wa(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 ja(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)?$a(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Ha(r,e):E(r)||E(e)?!1:r===e}function $a(r,e){return e.every(t=>r.some(n=>Ge(n,t)))}function Ha(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ge(r[t],n))}function be(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Ga(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 Vn(r){return r.every(Me)}function Me(r){return typeof r=="string"}function gr(r){return E(r)&&"code"in r&&typeof r.code=="string"}function xr(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(gr)}function Qa(r,e){for(let t of r??g)for(let n of t.coding??g)if(n.system===e)return n.code}function oo(r){return E(r)&&"text"in r&&typeof r.text=="string"}var so=[];for(let r=0;r<256;r++)so.push(r.toString(16).padStart(2,"0"));function Mn(r){let e=Ln(r),t=new Uint8Array(e),n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=so[t[i]];return n.join("")}function _n(r){let e=Ln(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 Ln(r){return ArrayBuffer.isView(r)?r.buffer:r}function V(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function za(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function br(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 vr(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ja(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 Ka(r,e,t,n){return r.qualifiedInterval?.find(i=>co(i,e)&&ec(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Ya(r,e,t){return ao(r,e,t)[0]}function ao(r,e,t){return r.qualifiedInterval?.filter(n=>co(n,e)&&(!t||t.includes(n.condition)))??[]}function co(r,e){return Xa(r,e)&&Za(r,e)}function Xa(r,e){return!r.gender||r.gender===e.gender}function Za(r,e){return!r.age||Fn(gt(e.birthDate).years,r.age)}function ec(r,e,t){return!!r.range&&Fn(e,r.range,t)}function Fn(r,e,t){return(e.low?.value===void 0||lo(r,e.low.value,t))&&(e.high?.value===void 0||uo(r,e.high.value,t))}function tc(r,e){return Number.parseFloat(r.toFixed(e))}function rc(r,e,t){return Z(r,t)===Z(e,t)}function nc(r,e,t){return Z(r,t)<Z(e,t)}function ic(r,e,t){return Z(r,t)>Z(e,t)}function uo(r,e,t){return Z(r,t)<=Z(e,t)}function lo(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 oc(r,e,t){return r.find(n=>typeof e=="string"?vr(n.code||{},t)===e:vr(n.code||{},t)===vr(e,t))}function De(r){if(r!==void 0)return Array.isArray(r)?r:[r]}function sc(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 Nn(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 vt(r){return r.sort((e,t)=>e.localeCompare(t))}function Er(r){return r.endsWith("/")?r:r+"/"}function po(r){return r.startsWith("/")?r.slice(1):r}function $(r,e){return new URL(po(e),Er(r.toString())).toString()}function Un(r,e){return $(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Bn(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 fo=/^(([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 ac(r){return fo.test(r)}function cc(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 uc(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[io(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function lc(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function pc(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 dc(r){return r.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("\u201C","“").replaceAll("\u201D","”").replaceAll("\u2018","‘").replaceAll("\u2019","’").replaceAll("\u2026","…")}function fc(r){return r!=null}var g=Object.freeze([]);function qn(r){if(!r)return"";switch(r.type){case"Address":return ho(r.value);case"CodeableConcept":return ze(r.value);case"Coding":return Wn(r.value);case"ContactPoint":return r.value.value;case"HumanName":return Ye(r.value);case"Quantity":return de(r.value);case"Reference":return mo(r.value);default:return r.value?.toString()??""}}function mo(r){return r?r.display??r.reference??xt(r):""}function ho(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 mc(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function hc(r){return _e(r.family)??""}function Tt(r){return r instanceof Date&&!Number.isNaN(r.getTime())}function yc(r,e,t){if(!r)return"";let n=new Date(r);return Tt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function gc(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Tt(n)?n.toLocaleTimeString(e,t):""}function yo(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 Tt(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...t,timeZone:"UTC"}).format(s):""}function Rr(r,e,t){if(!r)return"";let n=new Date(r);return Tt(n)?n.toLocaleString(e,t):""}function xc(r,e,t){return!r||!r.start&&!r.end?"":Rr(r.start,e,t)+" - "+Rr(r.end,e,t)}var vc={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Tc={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},bc={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Sc(r){if(!r)return"";let e=[];return Ec(e,r.repeat),r.event&&e.push(r.event.map(t=>Rr(t)).join(", ")),V(e.join(" ").trim())}function Ec(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(vc[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Tc[i]):r.push("per "+n+" "+bc[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(V).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>yo(o)).join(", "))}function Rc(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=Ac(n.value,e),`> ${de(n,e)}`):`>= ${de(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Pc(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 Cc(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=>Wn(t)).join(", "):"")}function Wn(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 go(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=>go(t)).join(" / ")),e.join(" / ").trim()}function _e(r){return typeof r=="string"?r:void 0}function Pc(r,e,t=1){return(xo(r,e)+t)*Math.pow(10,-e)}function Ac(r,e,t=1){return(xo(r,e)-t)*Math.pow(10,-e)}function xo(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 wc(r){for(let e of r.entry??g){let t=e.resource;t.resourceType==="SearchParameter"&&Cr(t)}}function vn(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)t?.resourceType==="StructureDefinition"&&t.kind==="resource"&&To(t.type)}function To(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 Cr(r){for(let e of r.base??g){let t=To(e);t.searchParams||(t.searchParams={}),t.searchParams[r.code]=r}}function sr(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?bo((r.base?.path??r.path)?.split(".")):e}function bo(r){return r.length===1?r[0]:r.map(V).join("")}function lr(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Oc(){return Object.values(hn()).filter(lr).map(r=>r.name)}function Ic(r){return U.types[r]?.searchParams}function kc(r,e){return U.types[r]?.searchParams?.[e]}function Dc(r){let e=r.replaceAll("[x]","").split(".").pop();return So(e)}function So(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(Mc).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Vc=new Set(["CDS","ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Mc(r){let e=r.toUpperCase();return r===e?r:Vc.has(e)?e:e.charAt(0)+r.slice(1)}function yt(r,e,t){let n=$e(r,t);if(n)return Eo(n.elements,e)}function Eo(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 _c(r){return!!(r&&typeof r=="object"&&"type"in r&&"value"in r)}function k(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 jn(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 vo(r.value);case d.CodeableConcept:return r.value.coding?.map(vo).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)?A(r.value):JSON.stringify(r)}}function vo(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)=>h(e.every(t=>C(t.value))),hasValue:(r,e)=>h(e.length!==0),exists:(r,e,t)=>t?h(e.some(n=>N(t.eval(r,[n])))):h(e.length>0&&e.every(n=>!C(n.value))),all:(r,e,t)=>h(e.every(n=>N(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return h(!1);return h(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return h(!0);return h(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return h(!1);return h(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return h(!0);return h(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return h(!0);let n=t.eval(r,Le(r));return n.length===0?h(!1):h(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?h(!0):e.length===0?h(!1):h(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)=>h(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 ft([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Le(r));return[...e,...n]},htmlChecks:(r,e,t)=>[b(!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 h(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return h(!0);if(["false","f","no","n","0","0.0"].includes(n))return h(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:h(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?[]:h(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?[]:h(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?[]:h(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?[]:h(M.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return I(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?[]:h(M.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=re(e,1);return t==null?[]:I(t)?[{type:d.string,value:`${t.value} '${t.unit}'`}]:[{type:d.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:h(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?[]:h(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=gt(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:mt(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 b(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"}}:k(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(b):[b(s)]}function te(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=re(t,1),o=I(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 me=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 k(t,this.name)?e:dr(e,this.name)}toString(){return this.name}},bt=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()}},he=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=I(s)?s.value:s,l=I(a)?a.value:a,p=this.impl(u,l);return typeof p=="boolean"?h(p):I(s)?[{type:d.Quantity,value:{...s,value:p}}]:[b(p)]}},Et=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}},Rt=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 h(n.some(o=>o.value===i[0].value))}},Ct=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?h(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()}`}},Se=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 ft([...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 Pn(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 An(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 yr(n,i)}},Ot=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(yr(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 h(mt(n[0],i))}},It=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?h(!0):n?.value===!1||i?.value===!1?h(!1):[]}},kt=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?h(!1):n?.value||i?.value?h(!0):[]}},Dt=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?[]:h(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?h(!0):!n||!i?[]:h(!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 Lc=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Fc={"'":"'",'"':'"',"`":"`",r:"\r",n:`
|
|
2
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=
|
|
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 kc(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Oc.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},Vc={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Dc={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Re(e,t)},precedence:v.Indexer},Mc={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 _c(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:_c(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("(",Vc).registerInfix("[",Dc).registerInfix("(",Mc).prefix("+",v.UnaryAdd,(r,e)=>new bt("+",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 Se(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 At(r,t)).infixLeft("!~",v.NotEquivalent,(r,e,t)=>new wt(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 St(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 Lc=Ze();function _t(r){return new he(r,Lc.construct(xo(r)).consumeAndParse())}function Fc(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]=b(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 Nc(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=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 Uc(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 Bc(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)qc(e,t,n);return t}function qc(r,e,t){let{type:n,value:i}=t;switch(n){case d.Identifier:Wc(e,r,i);break;case d.CodeableConcept:jc(e,r,i);break;case d.Coding:vo(e,r,i);break;case d.ContactPoint:$c(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 jc(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 $c(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 Hc=20,Gc=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 Qc(i,o)}function Qc(r,e){let t={resourceType:r};for(let[n,i]of e)zc(t,n,i);return t}function zc(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":Jc(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,Yc(n,i,t))}}}}function Jc(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 Kc=[h.MISSING,h.PRESENT];function Eo(r,e,t){if(Kc.includes(e))return{code:r.code,operator:e,value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=Xc(t,e||h.EQUALS);if(!bo(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(!bo(r,t))throw new f(R(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:Zc(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Yc(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 Xc(r,e){let t=r.substring(0,2),n=Qn[t];return n?{operator:n,value:r.substring(2)}:{operator:e,value:r}}function Zc(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 bo(r,e){return r.type==="date"?De(e):!0}var eu=/{{([^{}]+)}}/g;function tu(r,e,t=[]){return r=r.replaceAll(eu,(n,i)=>{let o=P(i,t,e);return o.length!==1?"":qn(o[0])}),et(r)}function ru(r){let e=[];r.fields&&e.push("_fields="+r.fields.join(","));for(let t of r.filters??g)e.push(nu(t));r.sortRules&&r.sortRules.length>0&&e.push(iu(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(So("_include",t));for(let t of r.revInclude??g)e.push(So("_revinclude",t));return e.length===0?"":(xt(e),"?"+e.join("&"))}function nu(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 iu(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 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 ou(r,e){return R(`Invalid modifier :${r} for ${e}`)}function su(r,e){return r in Gn?ou(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(!au(r,e,t))return!1;return!0}function au(r,e,t){let n=U.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;let i=P(n.expression,[b(r)]);if(t.operator===h.MISSING||t.operator===h.PRESENT)return cu(i,t);switch(n.type){case"reference":return uu(i,t);case"string":case"uri":return du(i,t);case"token":return lu(i,t);case"date":return hu(i,t);default:return!1}}function cu(r,e){let t=r.length>0;return(e.operator===h.MISSING&&e.value==="false"||e.operator===h.PRESENT&&e.value==="true")===t}function uu(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 lu(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(pu(o,s))return!i;return i}function pu(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 du(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(fu(o,s))return!i;return i}function fu(r,e){return r.toLowerCase().includes(e.toLowerCase())}function hu(r,e){let t=Wn(r),n=tt(e.value),i=Cr(e.operator);for(let o of t)for(let s of n)if(mu(o,e.operator,s))return!i;return i}function mu(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 yu={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 gu(r,e){return zn(r,Ce.SEARCH,e)}function xu(r,e){return Ro.includes(e)?!1:zn(r,Ce.UPDATE,e)}function zn(r,e,t){return!!r.resource?.some(n=>wo(n,t,e))}function vu(r,e){return!!Ao(e,Ce.UPDATE,r)}function Ao(r,e,t){return t?t.resource?.find(n=>Tu(r,e,n)):yu}function Tu(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&&!Lt(r,et(t.criteria))):!1}function wo(r,e,t){return r.resourceType!==e&&(r.resourceType!=="*"||Co.includes(e))?!1:r.interaction?r.interaction.includes(t):!r.readonly||Po.includes(t)}var bu={FIRST:"first",APPLICATION:"application"};function q(){return typeof window<"u"}function Su(){return typeof Buffer<"u"}function Eu(){return typeof window<"u"?window:void 0}function Pr(){return typeof Buffer<"u"?Buffer:void 0}var ie={assign(r){q()&&globalThis.location.assign(r)},reload(){q()&&globalThis.location.reload()},getSearch(){return q()?globalThis.location.search:""},getPathname(){return q()?globalThis.location.pathname:""},getLocation(){return q()?globalThis.location.toString():""},getOrigin(){return q()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function Oo(r){if(q()){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(q()){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 Ru(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 Ar(){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=be(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)=>Cu(i,o,e),2);return ko(JSON.parse(n))}function Cu(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=Au(r),{sorted:t,cycles:n}=Pu(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 Pu(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 Au(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 wu(r){r=be(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 Ou(r,e,t){return r.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===t)?.resource}async function Iu(r,e,t,n){return{hook:t.hook,hookInstance:oe(),context:n,prefetch:await ku(r,e,t,n)}}async function ku(r,e,t,n){if(!t.prefetch)return{};let i={};for(let[o,s]of Object.entries(t.prefetch)){let a=await Vu(r,e,n,s);i[o]=a??null}return i}function Vu(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 Du=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Do(r,e,t){return t.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Du.has(i))return r.id;if(i.startsWith("context.")){let o=i.substring(8),s=Mu(e,o);if(Me(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Mu(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 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];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 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 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 _u(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 Lu(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 _u(r,e.resource,t,n)}function Fu(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.`));Lu(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 Fu(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 Nu(r){return JSON.parse(Jn(r))}function ei(r){return r.split(".").length===3}function Bt(r){let[e,t,n]=r.split(".");return Nu(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 qt=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 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 Uu(){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,Wt=class r extends K{constructor(t,n,i={}){No||(Uu(),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 Bu=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 Wt(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??Bu,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 qu({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(!Wu(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 qo(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 Wu(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 qo(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":b(e),"%previous":b(i??{})};return P(n.valueString,[b(e)],o)?.[0]?.value===!0}var _r="5.0.13-f0defec",ju="medplum-cli",Ho=w.FHIR_JSON+", */*; q=0.1",$u="https://api.medplum.com/",Hu=1e3,Gu=6e4,Qu=0,zu=3e5,Ju="Binary/",Wo={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"},Ku={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"},Yu={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??Xu(),this.storage=t?.storage??new nt(void 0,t?.storagePrefix),this.createPdfImpl=t?.createPdf,this.baseUrl=Sr(t?.baseUrl??$u),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??zu,this.logLevel=this.initializeLogLevel(t),this.cacheTime=t?.cacheTime??(q()?Gu:Qu),this.cacheTime>0?this.requestCache=new Ae(t?.resourceCacheSize??Hu):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(),q()&&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,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(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 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 F(Promise.reject(new Error("Missing reference")));if(i==="system")return new F(Promise.resolve(Wo));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=`{
|
|
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=Fc[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()===" "&&Nc(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 Nc(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Lc.includes(r.value)))}var Mt=["true","false"],_t=["!=","!~","<=",">=","{}","->"];function Ro(r){return new ye(r,Mt,_t).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},Uc={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Bc={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Re(e,t)},precedence:v.Indexer},qc={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 Wc(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:Wc(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 bt}).registerPrefix("(",Uc).registerInfix("[",Bc).registerInfix("(",qc).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 Se(r,t)).infixLeft("=",v.Equals,(r,e,t)=>new Pt(r,t)).infixLeft("!=",v.NotEquals,(r,e,t)=>new At(r,t)).infixLeft("~",v.Equivalent,(r,e,t)=>new wt(r,t)).infixLeft("!~",v.NotEquivalent,(r,e,t)=>new Ot(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 Et(r,t)).infixLeft("and",v.And,(r,e,t)=>new It(r,t)).infixLeft("as",v.As,(r,e,t)=>new he(r,t)).infixLeft("contains",v.Contains,(r,e,t)=>new Rt(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 Ct(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 kt(r,t)).infixLeft("xor",v.Xor,(r,e,t)=>new Dt(r,t)).infixLeft("implies",v.Implies,(r,e,t)=>new Vt(r,t))}var jc=Ze();function Lt(r){return new me(r,jc.construct(Ro(r)).consumeAndParse())}function $c(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]=b(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??Lt(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 Hc(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 $n(r){let e=[];for(let t of r){let n=ht(t.value);n&&e.push(n)}return e}function Hn(r){let e=new Set;for(let t of r){let n=qn(t);n&&e.add(n)}return Array.from(e)}function Gn(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(A(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function Gc(r){let e=[];for(let t of r){let{value:n}=t;typeof n=="number"?e.push({value:n}):I(n)&&e.push(n)}return e}function Qc(r){let e=new Set;for(let t of r)Me(t.value)&&e.add(t.value);return Array.from(e)}function Qn(r,e={}){let t=[];for(let n of r)zc(e,t,n);return t}function zc(r,e,t){let{type:n,value:i}=t;switch(n){case d.Identifier:Jc(e,r,i);break;case d.CodeableConcept:Kc(e,r,i);break;case d.Coding:Co(e,r,i);break;case d.ContactPoint:Yc(e,r,i);break;default:Fe(e,r,void 0,i?.toString())}}function Jc(r,e,t){t?.type?.text&&Fe(r,e,e.textSearchSystem,t.type.text),Fe(r,e,t?.system,t?.value)}function Kc(r,e,t){t?.text&&Fe(r,e,e.textSearchSystem,t.text);for(let n of t?.coding??g)Co(r,e,n)}function Co(r,e,t){t&&(t.display&&Fe(r,e,e.textSearchSystem,t.display),Fe(r,e,t.system,t.code))}function Yc(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 Xc=20,Zc=1e3,m={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"},zn={contains:m.CONTAINS,exact:m.EXACT,above:m.ABOVE,below:m.BELOW,text:m.TEXT,not:m.NOT,in:m.IN,"not-in":m.NOT_IN,"of-type":m.OF_TYPE,missing:m.MISSING,identifier:m.IDENTIFIER,iterate:m.ITERATE},Jn={eq:m.EQUALS,ne:m.NOT_EQUALS,lt:m.LESS_THAN,le:m.LESS_THAN_OR_EQUALS,gt:m.GREATER_THAN,ge:m.GREATER_THAN_OR_EQUALS,sa:m.STARTS_AFTER,eb:m.ENDS_BEFORE,ap:m.APPROXIMATELY,sw:m.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 eu(i,o)}function eu(r,e){let t={resourceType:r};for(let[n,i]of e)tu(t,n,i);return t}function tu(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:m.EQUALS,value:t});return}switch(n){case"_sort":ru(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=Po(t);i==="iterate"&&(s.modifier=m.ITERATE),r.include=Q(r.include,s);break}case"_revinclude":{let s=Po(t);i==="iterate"&&(s.modifier=m.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,Oo(s,i,t)):r.filters=Q(r.filters,iu(n,i,t))}}}}function ru(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 nu=[m.MISSING,m.PRESENT];function Oo(r,e,t){if(nu.includes(e))return{code:r.code,operator:e,value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=ou(t,e||m.EQUALS);if(!Ao(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(!Ao(r,t))throw new f(R(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:su(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function iu(r,e,t){let n=m.EQUALS;if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Jn&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function ou(r,e){let t=r.substring(0,2),n=Jn[t];return n?{operator:n,value:r.substring(2)}:{operator:e,value:r}}function su(r){return zn[r]??m.EQUALS}function Po(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 Ao(r,e){return r.type==="date"?Ve(e):!0}var au=/{{([^{}]+)}}/g;function cu(r,e,t=[]){return r=r.replaceAll(au,(n,i)=>{let o=P(i,t,e);return o.length!==1?"":jn(o[0])}),et(r)}function uu(r){let e=[];r.fields&&e.push("_fields="+r.fields.join(","));for(let t of r.filters??g)e.push(lu(t));r.sortRules&&r.sortRules.length>0&&e.push(pu(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(wo("_include",t));for(let t of r.revInclude??g)e.push(wo("_revinclude",t));return e.length===0?"":(vt(e),"?"+e.join("&"))}function lu(r){let e=r.operator in zn?":"+r.operator:"",t=r.operator!==m.EQUALS&&r.operator in Jn?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function pu(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function wo(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 du(r,e){return R(`Invalid modifier :${r} for ${e}`)}function fu(r,e){return r in zn?du(r,e):R(`Invalid operator ${r} for ${e}`)}function Ft(r,e){if(e.resourceType!==r.resourceType)return!1;for(let t of e.filters??g)if(!mu(r,e,t))return!1;return!0}function mu(r,e,t){let n=U.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;let i=P(n.expression,[b(r)]);if(t.operator===m.MISSING||t.operator===m.PRESENT)return hu(i,t);switch(n.type){case"reference":return yu(i,t);case"string":case"uri":return vu(i,t);case"token":return gu(i,t);case"date":return bu(i,t);default:return!1}}function hu(r,e){let t=r.length>0;return(e.operator===m.MISSING&&e.value==="false"||e.operator===m.PRESENT&&e.value==="true")===t}function yu(r,e){let t=Pr(e.operator);if(e.value===""&&r.length===0)return e.operator===m.EQUALS;let n=Gn(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 gu(r,e){let t=Qn(r),n=tt(e.value),i=Pr(e.operator);for(let o of t)for(let s of n)if(xu(o,s))return!i;return i}function xu(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 vu(r,e){let t=Hn(r),n=tt(e.value),i=Pr(e.operator);for(let o of t)for(let s of n)if(Tu(o,s))return!i;return i}function Tu(r,e){return r.toLowerCase().includes(e.toLowerCase())}function bu(r,e){let t=$n(r),n=tt(e.value),i=Pr(e.operator);for(let o of t)for(let s of n)if(Su(o,e.operator,s))return!i;return i}function Su(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 m.APPROXIMATELY:case m.EQUALS:case m.NOT_EQUALS:return i<a&&o>s;case m.LESS_THAN:return i<s;case m.GREATER_THAN:return o>a;case m.LESS_THAN_OR_EQUALS:return i<=a;case m.GREATER_THAN_OR_EQUALS:return o>=s;case m.STARTS_AFTER:return i>a;case m.ENDS_BEFORE:return o<s;default:return!1}}function Pr(r){return r===m.NOT_EQUALS||r===m.NOT}var Eu={resourceType:"*"},Io=["DomainConfiguration","JsonWebKey","Login"],ko=["UserSecurityRequest","Project","ProjectMembership","User"],Ce={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Do=[Ce.READ,Ce.VREAD,Ce.HISTORY,Ce.SEARCH];function Ru(r,e){return Kn(r,Ce.SEARCH,e)}function Cu(r,e){return Io.includes(e)?!1:Kn(r,Ce.UPDATE,e)}function Kn(r,e,t){return!!r.resource?.some(n=>Mo(n,t,e))}function Pu(r,e){return!!Vo(e,Ce.UPDATE,r)}function Vo(r,e,t){return t?t.resource?.find(n=>Au(r,e,n)):Eu}function Au(r,e,t){let n=r.resourceType;return Mo(t,n,e)?n==="Binary"?!0:!(t.compartment&&!r.meta?.compartment?.some(i=>i.reference===t.compartment?.reference)||t.criteria&&!Ft(r,et(t.criteria))):!1}function Mo(r,e,t){return r.resourceType!==e&&(r.resourceType!=="*"||ko.includes(e))?!1:r.interaction?r.interaction.includes(t):!r.readonly||Do.includes(t)}var wu={FIRST:"first",APPLICATION:"application"};function q(){return typeof window<"u"}function Ou(){return typeof Buffer<"u"}function Iu(){return typeof window<"u"?window:void 0}function Ar(){return typeof Buffer<"u"?Buffer:void 0}var ie={assign(r){q()&&globalThis.location.assign(r)},reload(){q()&&globalThis.location.reload()},getSearch(){return q()?globalThis.location.search:""},getPathname(){return q()?globalThis.location.pathname:""},getLocation(){return q()?globalThis.location.toString():""},getOrigin(){return q()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function _o(r){if(q()){let t=window.atob(r),n=Uint8Array.from(t,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Ar();if(e)return e.from(r,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function Nt(r){if(q()){let t=new window.TextEncoder().encode(r),n=String.fromCodePoint.apply(null,t);return window.btoa(n)}let e=Ar();if(e)return e.from(r,"utf8").toString("base64");throw new Error("Unable to encode base64")}function ku(r){return Nt(r).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function Yn(r){r=r.padEnd(r.length+(4-r.length%4)%4,"=");let e=r.replaceAll("-","+").replaceAll("_","/");return _o(e)}function wr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Mn(r.buffer)}async function Xn(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 Lo(r){let e={};r=be(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)=>Du(i,o,e),2);return Fo(JSON.parse(n))}function Du(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function Fo(r){let e=Mu(r),{sorted:t,cycles:n}=Vu(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 Vu(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 No(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 No(n,e)}}function Mu(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&&No(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function _u(r){r=be(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 Lo(e)}function Lu(r,e,t){return r.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===t)?.resource}async function Fu(r,e,t,n){return{hook:t.hook,hookInstance:oe(),context:n,prefetch:await Nu(r,e,t,n)}}async function Nu(r,e,t,n){if(!t.prefetch)return{};let i={};for(let[o,s]of Object.entries(t.prefetch)){let a=await Uu(r,e,n,s);i[o]=a??null}return i}function Uu(r,e,t,n){if(n=Uo(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 Bu=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Uo(r,e,t){return t.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Bu.has(i))return r.id;if(i.startsWith("context.")){let o=i.substring(8),s=qu(e,o);if(Me(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function qu(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 O={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 Or=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 Or)}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 Ir={"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"},Bo=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],kr=["DiagnosticReport-update"];function Zn(r){return kr.includes(r)}function ei(r){if(kr.includes(r))throw new f(x(`'context.version' is required for '${r}'.`))}var qo={"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 Wo(r){return Bo.includes(r)}function ti(r){return!!r.endpoint}function Dr(r){if(!Bt(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 ti(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Bt(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(!Ir[o])return!1;return!(ti(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Wu(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(!Wo(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 ju(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 Wu(r,e.resource,t,n)}function $u(r,e){let t=new Map,n=qo[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.`));ju(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(!Ir[e])throw new f(x(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Ir).join(", ")}`));if(typeof t!="object")throw new f(x("context must be a context object or array of context objects."));if(kr.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 Ut=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(!Bt(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 Hu(r){return JSON.parse(Yn(r))}function ri(r){return r.split(".").length===3}function qt(r){let[e,t,n]=r.split(".");return Hu(t)}function ni(r){try{return typeof qt(r).login_id=="string"}catch{return!1}}function ii(r){try{let t=qt(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,O.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var jo;jo=Symbol.toStringTag;var F=class{constructor(e){c(this,jo,"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 Mr,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?xt(t):void 0)}},Mr=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]}},oi=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},$o=!1;function Gu(){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 Go(r,e){if(!r)throw new Error(e)}function _r(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},Ho=!1,jt=class r extends K{constructor(t,n,i={}){$o||(Gu(),$o=!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),Go(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(_r(t))});c(this,"_handleMessage",t=>{this._debug("message event"),this.onmessage&&this.onmessage(t),this.dispatchEvent(_r(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(_r(t)),this._connect()});c(this,"_handleClose",t=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(t),this.dispatchEvent(_r(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"&&!Ho&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),Ho=!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 Qu=[WebSocket.CLOSING,WebSocket.CLOSED],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)}},si=class{constructor(e,t){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"tokenExpiry");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,this.tokenExpiry=void 0}},$t=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,"tokenRefreshTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof Ht))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 jt(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??5e3,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(an(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.tokenRefreshTimer&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=void 0),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.tokenRefreshTimer??=setInterval(()=>{this.checkTokenExpirations()},6e4)}),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 ${A(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(a=>a.name==="token")?.valueString,o=n?.find(a=>a.name==="websocket-url")?.valueUrl,s=n?.find(a=>a.name==="expiration")?.valueDateTime;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"));if(!s)throw new f(x("Failed to get expiration from $get-ws-binding-token"));return[t,i,s]}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){this.wsClosed&&await this.reconnectIfNeeded(),!this.isReconnecting(e)&&(e.connecting=!0,await this.rebindCriteriaEntry(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)}isReconnecting(e){return!!(this.ws.readyState!==WebSocket.OPEN||e.connecting)}async rebindCriteriaEntry(e){try{let[t,n,i]=await this.getTokenForCriteria(e);e.token=n,e.tokenExpiry=new Date(i).getTime(),e.subscriptionId=t,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)}}checkTokenExpirations(){let e=Date.now();for(let t of this.criteriaEntries.values())for(let n of[...t.bareCriteria?[t.bareCriteria]:[],...t.criteriaWithProps])n.tokenExpiry&&n.tokenExpiry-e<=3e5&&!this.isReconnecting(n)&&this.rebindCriteriaEntry(n).catch(i=>{this.masterSubEmitter?.dispatchEvent({type:"error",payload:i})})}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 si(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 reconnectIfNeeded(){Qu.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let t=()=>{this.getWebSocket().removeEventListener("open",t),e()};this.getWebSocket().addEventListener("open",t),this.reconnectWebSocket()})}};async function zu({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(!Ju(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 Qo(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(!Ft(r,s))return!1;let l=Tr(e.meta)??[],p=Tr(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:A(r)}),!1):!0}function Ju(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 Qo(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":b(e),"%previous":b(i??{})};return P(n.valueString,[b(e)],o)?.[0]?.value===!0}var Lr="5.0.15-1509991",Ku="medplum-cli",Yo=O.FHIR_JSON+", */*; q=0.1",Yu="https://api.medplum.com/",Xu=1e3,Zu=6e4,el=0,tl=3e5,rl="Binary/",zo={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"},Xo={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"},nl={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Zo={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},il={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},Ht=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??ol(),this.storage=t?.storage??new nt(void 0,t?.storagePrefix),this.createPdfImpl=t?.createPdf,this.baseUrl=Er(t?.baseUrl??Yu),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??tl,this.logLevel=this.initializeLogLevel(t),this.cacheTime=t?.cacheTime??(q()?Zu:el),this.cacheTime>0?this.requestCache=new Ae(t?.resourceCacheSize??Xu):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(),q()&&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,O.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,i){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let o={grant_type:Ue.TokenExchange,subject_token_type:Xo.AccessToken,client_id:n,subject_token:t};return i&&(o.membership_id=i),this.fetchTokens(o)}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=Bn(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(Ko));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 Ko(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 zo;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(zo));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(yn(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," "),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===w.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: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=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,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,returnAck:l,...p}=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,...l!==void 0?{returnAck:l}:void 0},w.FHIR_JSON,p)}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||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(Ju)&&(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 qt(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||!tl(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??2e3;if(a>u)return s;await br(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 br(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",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)}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(we)}async startPkce(){let t=Ar();sessionStorage.setItem("pkceState",t);let n=Ar().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),w.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),w.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),w.JSON):(Xn(n),this.post(this.fhircastHubUrl,Vr(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 handleTokenError(t){try{let n=await t.json();throw We(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":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 ${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 Xu(){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(We(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 Zu(r){return E(r)&&"data"in r&&"contentType"in r}function oi(r,e,t,n){return Zu(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function el(r){return E(r)&&"docDefinition"in r}function zo(r,e,t,n){return el(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}function tl(r){return r.status===429||r.status>=500}var rl={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function nl(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(!il(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:ol(this.dataPoints,this.sampling)}}]}}};function il(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 ol(r,e){if(r.length)return r.map(t=>(t-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function sl(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=al(e,t,r,!!i),a=Ke(e,".",2)[1];s=cl(s,o,a),s=ul(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 al(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 cl(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 ul(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 ll(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=>ll(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=pl(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 pl(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 dl(r,e){let t=new Br(r,r.resourceType,"resource");return new Ht(e,t).crawlResource(),t.getDefaultValue()}function fl(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 hl(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=be(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){ml(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 ml(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:be(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=be(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=yl(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 yl(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=gl(i,o)),s&&t.push(...s)}return t}function gl(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 xl=[...Mt,"->","<<",">>","=="];function Xo(r){return new ye(r,Dt,xl).tokenize()}var vl={"-":"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=vl[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 Tl(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Tl(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 bl=Ze().registerInfix("->",{precedence:v.Arrow}).registerInfix(";",{precedence:v.Semicolon});function Sl(r){let e=bl.construct(Xo(r));return e.removeComments(),new di(e).parse()}var qr=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 El(r,e,t=new qr){return Rl({root:r,transformMaps:t},r,e)}function Rl(r,e,t){return Cl(r,e),ts(r,e),hi(r,e.group[0],t)}function Cl(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)Wr(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 Ol(r,n))Wr(r,"_",i),n.variable&&Wr(r,n.variable,i),t<e.source.length-1?ns(r,e,t+1):Pl(r,e)}function Pl(r,e){if(!Al(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)Ul(r,t)}}function Al(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=wl(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 wl(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 Ol(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=Il(e,i)),i}function es(r,e,t){return N(P(t,[r],e))}function Il(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=kl(r,e);break;case"cast":i=Vl(r,e);break;case"cc":i=Dl(r,e);break;case"copy":i=Ml(r,e);break;case"create":i=_l(r,e);break;case"evaluate":i=Ll(r,e);break;case"translate":i=Fl(r,e);break;case"truncate":i=Nl(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:{}}:b({})]:i=[a?{type:a,value:n}:b(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&&Wr(r,e.variable,Bl(n))}}function ss(r,e){return as(r,e)?.isArray}function as(r,e){return $e(r.type)?.elements?.[e]}function kl(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 Vl(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 Dl(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 Ml(r,e){return e.parameter.flatMap(t=>W(r,t))}function _l(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[b(t)]}function Ll(r,e){let n=W(r,e.parameter?.[0])[0].value;return P(n,[],cs(r))}function Fl(r,e){let t=e.parameter.flatMap(u=>W(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[b(a.match?.[0]?.concept?.code)]}function Nl(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 Ul(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 W(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 Wr(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 Bl(r){return r.length===1?r[0]:r}var ql=" ".repeat(2),mi=class{constructor(e=ql,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);cr(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)Cr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(t,n){if(!n?.expandProfile&&gn(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(),{});cr(u)}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${t}!`);return}ur(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=ai(t,n,i,o);if(a.contentType===O.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:O.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=ai(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(lt(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=es(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,O.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},O.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,returnAck:l,...p}=a??{};return this.post(this.fhirUrl("Agent",Te(t),"$push"),{destination:typeof n=="string"?n:A(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0,...l!==void 0?{returnAck:l}:void 0},O.FHIR_JSON,p)}getCdsServices(t){return this.get("/cds-services",t)}callCdsService(t,n,i){return this.post(`/cds-services/${t}`,n,O.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||A(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=ii(t),this.medplumServer=ni(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(rl)&&(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}),i?.signal&&i.signal.addEventListener("abort",()=>{this.requestCache.delete(t)}))}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(on);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(lt(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||!cl(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 vt(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(lt(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&&!or(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",Yo,!0),this.options.extendedMode!==!1&&this.setRequestHeader(t,"X-Medplum","extended"),t.body&&this.setRequestHeader(t,"Content-Type",O.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(we)}async startPkce(){let t=wr();sessionStorage.setItem("pkceState",t);let n=wr().slice(0,128);sessionStorage.setItem("codeVerifier",n);try{let i=await Xn(n);return{codeChallengeMethod:"S256",codeChallenge:_n(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:Zo.JwtBearer,client_assertion:t})}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Nt(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,Dr(i),O.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Bt(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,Dr(t),O.FORM_URL_ENCODED)}fhircastConnect(t){return new Ut(t)}async fhircastPublish(t,n,i,o){return Zn(n)?this.post(this.fhircastHubUrl,Vr(t,n,i,o),O.JSON):(ei(n),this.post(this.fhircastHubUrl,Vr(t,n,i),O.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 We(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":O.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 ${Nt(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(ri(n)){let i=qt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new f(sn);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new f(nr)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new f(nr)}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 $t(this,Un(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 ol(){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(We(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Ko(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function sl(r){return E(r)&&"data"in r&&"contentType"in r}function ai(r,e,t,n){return sl(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function al(r){return E(r)&&"docDefinition"in r}function es(r,e,t,n){return al(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}function cl(r){return r.status===429||r.status>=500}var ul={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function ll(r,e,t){let n=new Fr;Array.isArray(r)||(r=r.entry?.map(i=>i.resource)??[]);for(let i of r)n.addObservation(i);return n.summarize(e,t)}var Fr=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(!pl(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(...ci(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:dl(this.dataPoints,this.sampling)}}]}}};function pl(r,e){return!!r.coding?.some(t=>e.coding?.some(n=>t.system===n.system&&t.code===n.code))}function ci(r){return r.data?.split(" ").map(e=>Number.parseFloat(e)*(r.factor??1)+(r.origin.value??0))??[]}function dl(r,e){if(r.length)return r.map(t=>(t-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function fl(r){let e=[],t=r.effectiveInstant??r.effectiveDateTime??r.effectivePeriod?.start,n=t?Date.parse(t).valueOf():0;r.valueSampledData&&e.push(...ts(r.valueSampledData,n,r));for(let i of r.component??g)i.valueSampledData&&e.push(...ts(i.valueSampledData,n,{...r,...i}));return e}function ts(r,e,t){let n=[],i=ci(r),o=A(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 Ur({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=ml(e,t,r,!!i),a=Ke(e,".",2)[1];s=hl(s,o,a),s=yl(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=Nr(T,o?.hiddenFields);p[T]={hidden:G,readonly:G||Nr(T,o?.readonlyFields)}}return p[T]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function ml(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 hl(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!Nr(n+i,e.hiddenFields)))}function yl(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))Nr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Nr(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 ui(r){return r.type!==void 0&&r.type.length>0}function gl(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=>mr(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function li(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=>gl(o,s,i,i.typeSchema?.url??n)))return i.name}}var Gt=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=Ur({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=xl(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(!ui(o))continue;let s=o.type.find(a=>ee(a.profile))?.profile?.[0];if(ee(s)){let a=xn(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=Ur({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 xl(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 Br="__sliceName";function vl(r,e){let t=new qr(r,r.resourceType,"resource");return new Gt(e,t).crawlResource(),t.getDefaultValue()}function Tl(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Qt(r,n,i,e);continue}let o=pe(t,n);o!==void 0&&Qt(r,o,i,e)}return r}function bl(r,e,t,n){let i=new qr([{[Br]:e.name}],e.path,"element");return new Gt(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var qr=class{constructor(e,t,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=be(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){Sl(y,s,t,n.elements,l),Qt(y,s,t,n.elements);let T=di(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=di(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)&&pi(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[Br]??li(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(br(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];Br in i&&delete i[Br]}}getDefaultValue(){return this.rootValue}};function Sl(r,e,t,n,i){let o=di(r,e,n,i);t.min>0&&o===void 0&&br(t.type[0].code)&&(t.isArray?pi(r,[Object.create(null)],e,t):pi(r,Object.create(null),e,t))}function pi(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 di(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 Qt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Qt(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]=rs(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 rs(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:be(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=be(r)??Object.create(null);for(let n of Object.keys(e))t[n]=rs(t[n],e[n]);return t}return r}function fi(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=ns(e),n=El(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 ns(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 El(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=Rl(i,o)),s&&t.push(...s)}return t}function Rl(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 Cl=[..._t,"->","<<",">>","=="];function is(r){return new ye(r,Mt,Cl).tokenize()}var Pl={"-":"disjoint","==":"equal"},mi=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(os)):t instanceof B||t instanceof L?(e.transform="copy",e.parameter=[os(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=Pl[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 os(r){if(r instanceof L)return{valueId:r.name};if(r instanceof B)return Al(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Al(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 wl=Ze().registerInfix("->",{precedence:v.Arrow}).registerInfix(";",{precedence:v.Semicolon});function Ol(r){let e=wl.construct(is(r));return e.removeComments(),new mi(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 Il(r,e,t=new Wr){return kl({root:r,transformMaps:t},r,e)}function kl(r,e,t){return Dl(r,e),as(r,e),yi(r,e.group[0],t)}function Dl(r,e){let t=$r(r);if(t&&e.import)for(let n of e.import){let i=t.get("StructureMap",n);for(let o of i)as(r,o)}}function as(r,e){let t=$r(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)jr(r,n.name,{type:"StructureMapGroup",value:n})}function yi(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)zt(o,l.name,t[a++]);for(let l of i){let p=t[a++]??{type:l.type??"BackboneElement",value:{}};zt(o,l.name,p),s.push(p)}let u={root:r.root,parent:r,variables:o};for(let l of e.rule??g)cs(u,l);return s}function cs(r,e){e.source&&us(r,e,0)}function us(r,e,t){let n=e.source[t];for(let i of Ll(r,n))jr(r,"_",i),n.variable&&jr(r,n.variable,i),t<e.source.length-1?us(r,e,t+1):Vl(r,e)}function Vl(r,e){if(!Ml(r,e)){for(let t of e.target??g)ls(r,t);for(let t of e.rule??g)cs(r,t);for(let t of e.dependent??g)Gl(r,t)}}function Ml(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=_l(r,t);if(!n)return ls(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=ds(o,i.element)||Array.isArray(s),u={root:r.root,parent:r,variables:{}},l=yi(u,n,[t]);return ps(r,i,o,l,a,s),!0}function _l(r,e){let t=r;for(;t;){if(t.variables){for(let n of Object.values(t.variables))for(let i of hi(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 Ll(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&&!ss(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ss(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Fl(e,i)),i}function ss(r,e,t){return N(P(t,[r],e))}function Fl(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 ls(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=ds(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Nl(r,e);break;case"cast":i=Ul(r,e);break;case"cc":i=Bl(r,e);break;case"copy":i=ql(r,e);break;case"create":i=Wl(r,e);break;case"evaluate":i=jl(r,e);break;case"translate":i=$l(r,e);break;case"truncate":i=Hl(r,e);break;case"uuid":i=[{type:"string",value:oe()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=fs(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:b({})]:i=[a?{type:a,value:n}:b(n)]}ps(r,e,t,i,o,n)}function ps(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],zt(t.value,e.element,o));for(let s of n)o.push(s.value)}else zt(t.value,e.element,n[0].value);e.variable&&jr(r,e.variable,Ql(n))}}function ds(r,e){return fs(r,e)?.isArray}function fs(r,e){return $e(r.type)?.elements?.[e]}function Nl(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 Ul(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 Bl(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 ql(r,e){return e.parameter.flatMap(t=>W(r,t))}function Wl(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=W(r,e.parameter?.[0])?.[0]?.value),[b(t)]}function jl(r,e){let n=W(r,e.parameter?.[0])[0].value;return P(n,[],ms(r))}function $l(r,e){let t=e.parameter.flatMap(u=>W(r,u)),n=t[0].value,i=t[1].value,s=$r(r)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=fi(s,{system:s.group?.[0]?.source,code:n});return[b(a.match?.[0]?.concept?.code)]}function Hl(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 Gl(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:{}};yi(o,t.value,i)}function $r(r){if(r.transformMaps)return r.transformMaps;if(r.parent)return $r(r.parent)}function W(r,e){let n=D({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=hi(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 hi(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 ms(r,e={}){if(r.parent&&ms(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function jr(r,e,t){r.variables||(r.variables={}),zt(r.variables,e,t)}function zt(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function hi(r){return Array.isArray(r)?r:[r]}function Ql(r){return r.length===1?r[0]:r}var zl=" ".repeat(2),gi=class{constructor(e=zl,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 hs(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=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 Xl(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(S(e,"Invalid null value")):Array.isArray(r)?Zl(r,e,t):typeof r=="object"&&ep(r,e,t)}function Zl(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(S(`${e}[${n}]`,"Invalid undefined value")):vi(r[n],`${e}[${n}]`,t)}function ep(r,e,t){for(let[n,i]of Object.entries(r))vi(i,`${e}${e?".":""}${n}`,t)}function tp(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 bi(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 rp(r,e){let t=U.types[r]?.searchParamsDetails?.[e.code];return t||(t=ip(r,e)),t}function np(r,e,t){let n=U.types[r];n||(n={},U.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function ip(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 A?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=Si(r,u);s=bi(n,l)}else s=Si(r,n);let a={type:ap(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 np(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){op(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;sp(y)&&(y=s.type[0].code),fs(r,e,y,u)}}function op(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 sp(r){return r==="Element"||r==="BackboneElement"}function ap(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 cp(r,e){let t=Ei(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Si(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 Se(i,t[o]);return new he("<original-not-available>",i)}function Hr(r,e,t){e instanceof Se?(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 A)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 up(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 lp(r,e){let t=[];for(let n of e)t.push(...pp(r,n));return t}function pp(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=b(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(...dp(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 dp(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=fp(e,r[t]);return e}function fp(r,e){let t=[];for(let n of r)for(let i of e)t.push(hp(n,i));return t}function hp(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 mp(){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 yp(r,e){if(!ys(e))return!1;try{await Qr(r,e)}catch{return!1}return!0}async function gp(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 xp(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,ReturnAckCategory,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,isDefined,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 hs(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 Jl=[..._t,"eq","ne","co"];function ys(r){return new ye(r,Mt,Jl,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var Jt=class{constructor(e,t,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=t,this.value=n}},Kt=class{constructor(e){c(this,"child");this.child=e}},Yt=class{constructor(e,t,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=t,this.right=n}};var Kl={eq:m.EXACT,ne:m.NOT_EQUALS,co:m.CONTAINS,sw:m.STARTS_WITH,ew:void 0,gt:m.GREATER_THAN,lt:m.LESS_THAN,ge:m.GREATER_THAN_OR_EQUALS,le:m.LESS_THAN_OR_EQUALS,ap:m.APPROXIMATELY,sa:m.STARTS_AFTER,eb:m.ENDS_BEFORE,pr:m.PRESENT,po:void 0,ss:void 0,sb:void 0,in:m.IN,ni:m.NOT_IN,re:m.EQUALS,identifier:m.IDENTIFIER};function Yl(r){let e=Kl[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var xi=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 Kt(this.parse()),this.parser.consume(")")):e=new Jt(this.parser.consume("Symbol").value,Yl(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 Yt(t,e,this.parse())):e}},Xl=Ze();function Zl(r){let e=Xl.construct(ys(r));return e.removeComments(),new xi(e).parse()}var ep={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"},tp={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}},vi=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,gs(t),"",this.buildAckMessageType(n),t.getTime().toString(),"P",l],this.context),new st(["MSA",p,u,tp[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,Vn(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 rp(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=np(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 np(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 gs(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 qe={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},xs=["NONE","ERROR","WARN","INFO","DEBUG"],Ti=class r{constructor(e,t={},n=qe.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(qe.ERROR,e,t)}warn(e,t){this.log(qe.WARN,e,t)}info(e,t){this.log(qe.INFO,e,t)}debug(e,t){this.log(qe.DEBUG,e,t)}log(e,t,n){if(e>this.level)return;let i;if(ir(n))i=Xt(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=Xt(s))}this.write(JSON.stringify({level:xs[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...i,...this.metadata}))}};function ip(r){let e=qe[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function Xt(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=Xt(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]=Xt(s,e+1,t):n[o]=s}catch{}return n}var Gr=`${ut}/fhir/StructureDefinition/patient-preferredPharmacy`,Ei="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",Hr="primary",Ri="preferred";function bi(r){let e=r.extension?.find(t=>t.url==="pharmacy");return e?.valueReference?A(e.valueReference):void 0}function Si(r){return r.url===Gr&&!!r.extension}function op(r,e){let t=r.extension?.find(n=>n.url==="type");t&&(t.valueCodeableConcept={coding:[{system:e,code:Ri,display:"Preferred Pharmacy"}]})}function sp(r,e){if(!r.extension)return[];let t=[];for(let n of r.extension){if(n.url!==Gr||!n.extension)continue;let i=n.extension.find(s=>s.url==="pharmacy"),o=n.extension.find(s=>s.url==="type");if(i?.valueReference){let s=e?o?.valueCodeableConcept?.coding?.some(a=>a.system===e&&a.code===Hr)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===Hr)??!1;t.push({organizationRef:i.valueReference,isPrimary:s})}}return t}function vs(r,e,t=Ei){return{url:Gr,extension:[{url:"pharmacy",valueReference:r},{url:"type",valueCodeableConcept:{coding:[{system:t,code:e?Hr:Ri,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function ap(r,e,t,n=Ei){r.extension??=[];let i=A(e);if(t)for(let a of r.extension)Si(a)&&bi(a)!==i&&op(a,n);let o=r.extension.findIndex(a=>Si(a)&&bi(a)===i),s=vs(e,t,n);return o>=0?r.extension[o]=s:r.extension.push(s),r}function cp(r,e){if(!r.extension)return r;let t=A(e);return r.extension=r.extension.filter(n=>Si(n)?bi(n)!==t:!0),r}function up(r){if(!Array.isArray(r))return!1;if(r.length>0){let e=r[0];return typeof e=="object"&&e!==null&&e.resourceType==="Organization"}return!0}function lp(r){if(typeof r!="object"||r===null)return!1;let e=r;return typeof e.success=="boolean"&&typeof e.message=="string"}function pp(r){if(!r)throw new f(x("Resource type is null"));if(!pt(r))throw new f(x("Unknown resource type"))}function Ci(r,e,t){r===null?t.push(S(e,"Invalid null value")):Array.isArray(r)?dp(r,e,t):typeof r=="object"&&fp(r,e,t)}function dp(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(S(`${e}[${n}]`,"Invalid undefined value")):Ci(r[n],`${e}[${n}]`,t)}function fp(r,e,t){for(let[n,i]of Object.entries(r))Ci(i,`${e}${e?".":""}${n}`,t)}function mp(r){return{resourceType:"SearchParameter",code:r.code+":identifier",base:r.base,type:"token",expression:`(${r.expression}).identifier`}}function Pi(r){return r.match(/^\((.+)\)\.identifier$/)?.[1]}function Ai(r,e){return new me(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 hp(r,e){let t=U.types[r]?.searchParamsDetails?.[e.code];return t||(t=gp(r,e)),t}function yp(r,e,t){let n=U.types[r];n||(n={},U.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function gp(r,e){let t=e.code,n=e.expression,i=Oi(r,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let u of i){let l=Qr(u),p=Nn(()=>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")):Ts(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=Pi(n);if(u===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=wi(r,u);s=Ai(n,l)}else s=wi(r,n);let a={type:Tp(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 yp(r,t,a),a}function Ts(r,e,t,n){let i=e[n];if(i instanceof he){r.propertyTypes.add(i.right.toString());return}if(i instanceof ne){xp(r,i);return}let o=i.toString(),s=yt(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 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??g)r.propertyTypes.add(p.code);return}for(let p of s.type??g){let y=p.code;vp(y)&&(y=s.type[0].code),Ts(r,e,y,u)}}function xp(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 vp(r){return r==="Element"||r==="BackboneElement"}function Tp(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 Oi(r,e){let t=[],n=Lt(e);return zr(r,n.child,t),t}function bp(r,e){let t=Oi(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function wi(r,e){let t=[],n=Lt(e);if(zr(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 me("<original-not-available>",i)}function zr(r,e,t){e instanceof Se?(zr(r,e.left,t),zr(r,e.right,t)):e.toString().includes(r+".")&&t.push(e)}function Qr(r){if(r instanceof he||r instanceof Re)return[Qr(r.left),r].flat();if(r instanceof w)return[r];if(r instanceof J)return[Qr(r.left),Qr(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 Sp(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 Ep(r,e){let t=[];for(let n of e)t.push(...Rp(r,n));return t}function Rp(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]=D(o,"value")}let n=b(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 Ii(r,n,t)}function Ii(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=Ii(a,o,t);s.push(u)}if(r.unionAll){let a=[];for(let u of r.unionAll)for(let l of Ii(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??g)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=Pp(e,r[t]);return e}function Pp(r,e){let t=[];for(let n of r)for(let i of e)t.push(Ap(n,i));return t}function Ap(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}var bs="https://meta.medplum.com/releases",Jr=new Map;function wp(){Jr.clear()}function Ss(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 Kr(r,e,t){let n=Jr.get(e??"latest");if(!n){let i=e?`v${e}`:"latest",o=new URL(`${bs}/${i}.json`);if(o.searchParams.set("a",r),o.searchParams.set("c",Lr),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();Ss(a),n=a,Jr.set(e??"latest",n),e||Jr.set(n.tag_name.slice(1),n)}return n}function Es(r){return/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/.test(r)}async function Op(r,e){if(!Es(e))return!1;try{await Kr(r,e)}catch{return!1}return!0}async function Ip(r){let e=await Kr(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 kp(r,e){try{let t=Lr.split("-")[0],i=(await Kr(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,PATIENT_PREFERRED_PHARMACY_URL,PHARMACY_PREFERENCE_TYPE_SYSTEM,PHARMACY_TYPE_PREFERRED,PHARMACY_TYPE_PRIMARY,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,ReconnectingWebSocket,ReturnAckCategory,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TransformMapCollection,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,accessPolicySupportsInteraction,addPreferredPharmacyToPatient,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,createPreferredPharmacyExtension,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,getPreferredPharmaciesFromPatient,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,isAddPharmacyResponse,isBrowserEnvironment,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isConflict,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isDefined,isEmpty,isError,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNodeEnvironment,isNotFound,isObject,isOk,isOperationOutcome,isOrganizationArray,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,removePreferredPharmacyFromPatient,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>
|