@medplum/core 3.1.10 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- "use strict";var hr=Object.defineProperty;var ho=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var go=Object.prototype.hasOwnProperty;var xo=(r,e)=>{for(var t in e)hr(r,t,{get:e[t],enumerable:!0})},vo=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yo(e))!go.call(r,i)&&i!==t&&hr(r,i,{get:()=>e[i],enumerable:!(n=ho(e,i))||n.enumerable});return r};var To=r=>vo(hr({},"__esModule",{value:!0}),r);var hu={};xo(hu,{AccessPolicyInteraction:()=>Di,AndAtom:()=>ut,ArithemticOperatorAtom:()=>I,AsAtom:()=>ce,BooleanInfixOperatorAtom:()=>P,CPT:()=>Ro,ClientStorage:()=>De,ConcatAtom:()=>rt,ContainsAtom:()=>nt,ContentType:()=>k,DEFAULT_ACCEPT:()=>zi,DEFAULT_SEARCH_COUNT:()=>Ra,DotAtom:()=>X,EmptySetAtom:()=>et,EqualsAtom:()=>ot,EquivalentAtom:()=>at,EventTarget:()=>Ve,ExternalSecretSystems:()=>Tc,FHIRCAST_EVENT_NAMES:()=>nr,FHIRCAST_EVENT_RESOURCES:()=>ji,FHIRCAST_EVENT_VERSION_REQUIRED:()=>ir,FHIRCAST_RESOURCE_TYPES:()=>qi,FhirFilterComparison:()=>At,FhirFilterConnective:()=>It,FhirFilterNegation:()=>Ot,FhirPathAtom:()=>Xe,FhircastConnection:()=>vt,FunctionAtom:()=>H,HTTP_HL7_ORG:()=>gr,HTTP_TERMINOLOGY_HL7_ORG:()=>Co,Hl7Context:()=>re,Hl7Field:()=>be,Hl7Message:()=>On,Hl7Segment:()=>Le,ICD10:()=>Po,ImpliesAtom:()=>dt,InAtom:()=>it,IndexerAtom:()=>le,InfixOperatorAtom:()=>K,IsAtom:()=>ue,LOINC:()=>So,LRUCache:()=>xt,LiteralAtom:()=>M,LogLevel:()=>mr,Logger:()=>In,MEDPLUM_CLI_CLIENT_ID:()=>pc,MEDPLUM_VERSION:()=>lc,MedplumClient:()=>Rt,MedplumKeyValueClient:()=>Et,MemoryStorage:()=>ar,MockAsyncClientStorage:()=>vn,NotEqualsAtom:()=>st,NotEquivalentAtom:()=>ct,OAuthClientAssertionType:()=>Xi,OAuthGrantType:()=>Ji,OAuthTokenAuthMethod:()=>Zi,OAuthTokenType:()=>Yi,OperationOutcomeError:()=>f,Operator:()=>sn,OperatorPrecedence:()=>y,OrAtom:()=>lt,Parser:()=>kt,ParserBuilder:()=>Be,PrefixOperatorAtom:()=>Ue,PropertyType:()=>l,RXNORM:()=>bo,ReadablePromise:()=>V,RobustWebSocket:()=>cr,SNOMED:()=>Eo,SearchParameterType:()=>nn,SubscriptionEmitter:()=>Me,SubscriptionManager:()=>bt,SymbolAtom:()=>q,Tokenizer:()=>ee,TypedEventTarget:()=>de,UCUM:()=>yr,UnaryOperatorAtom:()=>tt,UnionAtom:()=>Te,VALID_HOSTNAME_REGEX:()=>hi,XorAtom:()=>pt,accepted:()=>Fo,addProfileToResource:()=>Bs,allOk:()=>wo,append:()=>xe,applyDefaultValuesToElement:()=>wc,applyDefaultValuesToElementWithVisitor:()=>Ac,applyDefaultValuesToResource:()=>Cc,applyFixedOrPatternValue:()=>Ct,arrayBufferToBase64:()=>Jr,arrayBufferToHex:()=>zr,arrayify:()=>we,assertContextVersionOptional:()=>mn,assertOk:()=>$o,badRequest:()=>R,booleanToTypedValue:()=>d,buildElementsContext:()=>lr,buildTypeName:()=>Si,calculateAge:()=>Je,calculateAgeString:()=>ys,canReadResourceType:()=>Za,canWriteResource:()=>Xa,canWriteResourceType:()=>Mi,capitalize:()=>C,checkForNull:()=>kn,compressElement:()=>Go,concatUrls:()=>B,conceptMapTranslate:()=>Pn,conflict:()=>Lo,convertContainedResourcesToBundle:()=>ic,convertToTransactionBundle:()=>Li,crawlResource:()=>Bt,createConstraintIssue:()=>Pr,createFhircastMessagePayload:()=>sr,createOperationOutcomeIssue:()=>ne,createProcessingIssue:()=>Cr,createReference:()=>Y,createStructureIssue:()=>v,created:()=>Ao,decodeBase64:()=>ln,deepClone:()=>se,deepEquals:()=>J,deepIncludes:()=>Ae,encodeBase64:()=>pn,encryptSHA256:()=>dn,ensureNoLeadingSlash:()=>mi,ensureTrailingSlash:()=>zt,evalFhirPath:()=>Se,evalFhirPathTyped:()=>F,fhirPathArrayEquals:()=>$t,fhirPathArrayEquivalent:()=>Wt,fhirPathEquals:()=>jr,fhirPathEquivalent:()=>Xn,fhirPathIs:()=>He,fhirPathNot:()=>jt,fhirTypeToJsType:()=>Ur,findObservationInterval:()=>Os,findObservationReferenceRange:()=>Is,findResourceByCode:()=>_s,forbidden:()=>ko,formatAddress:()=>$s,formatCodeableConcept:()=>Ke,formatCoding:()=>gi,formatDate:()=>Hs,formatDateTime:()=>Jt,formatFamilyName:()=>Gs,formatGivenName:()=>Ws,formatHl7DateTime:()=>mo,formatHumanName:()=>Ze,formatMoney:()=>ea,formatObservationValue:()=>xi,formatPeriod:()=>Qs,formatQuantity:()=>ae,formatRange:()=>Xs,formatSearchQuery:()=>_a,formatTime:()=>yi,formatTiming:()=>Ys,generateId:()=>pe,getAllDataTypes:()=>Vr,getAllQuestionnaireAnswers:()=>xs,getCodeBySystem:()=>Gt,getDataType:()=>z,getDateProperty:()=>hs,getDefaultValuesForNewSliceEntry:()=>Oc,getDisplayString:()=>ri,getElementDefinition:()=>Qe,getElementDefinitionFromElements:()=>bi,getElementDefinitionTypeName:()=>Nt,getExpressionForResourceType:()=>ba,getExpressionsForResourceType:()=>on,getExtension:()=>he,getExtensionValue:()=>Ts,getIdentifier:()=>oi,getImageSrc:()=>ms,getNestedProperty:()=>ye,getPathDifference:()=>ge,getPathDisplayName:()=>aa,getPropertyDisplayName:()=>Ei,getQueryString:()=>en,getQuestionnaireAnswers:()=>gs,getRandomString:()=>rr,getReferenceString:()=>oe,getResourceTypes:()=>ia,getSearchParameter:()=>sa,getSearchParameterDetails:()=>er,getSearchParameters:()=>oa,getStatus:()=>jo,getTypedPropertyValue:()=>w,getTypedPropertyValueWithPath:()=>Hn,getTypedPropertyValueWithSchema:()=>Zn,getValueSliceName:()=>Rn,getWebSocketUrl:()=>Xr,globalSchema:()=>D,gone:()=>Vo,indexSearchParameter:()=>Zt,indexSearchParameterBundle:()=>na,indexStructureDefinitionBundle:()=>Lt,inflateBaseSchema:()=>wr,inflateElement:()=>Bn,initFhirPathParserBuilder:()=>ke,isAccepted:()=>Uo,isCodeableConcept:()=>ci,isCoding:()=>ai,isCompletedSubscriptionRequest:()=>hn,isComplexTypeCode:()=>Ht,isContextVersionRequired:()=>fn,isCreated:()=>_o,isDataTypeLoaded:()=>Dr,isDateString:()=>$r,isDateTimeString:()=>We,isEmpty:()=>S,isFhirCriteriaMet:()=>Gi,isFhircastResourceType:()=>$i,isGone:()=>qo,isJwt:()=>yn,isLowerCase:()=>Ce,isMedplumAccessToken:()=>gn,isNotFound:()=>Bo,isObject:()=>E,isOk:()=>Mt,isOperationOutcome:()=>me,isPeriod:()=>Wr,isPopulated:()=>$,isProfileLoaded:()=>Nr,isProfileResource:()=>ti,isQuantity:()=>A,isQuantityEquivalent:()=>Gr,isReference:()=>ie,isResource:()=>N,isResourceType:()=>Mr,isResourceTypeSchema:()=>Ut,isSliceDefinitionWithTypes:()=>bn,isString:()=>si,isStringArray:()=>Kr,isTextObject:()=>ui,isUUID:()=>ws,isValidDate:()=>Yt,isValidHostname:()=>Us,lazy:()=>Zr,loadDataType:()=>_t,mapByIdentifier:()=>qs,matchDiscriminant:()=>qt,matchesAccessPolicy:()=>Ni,matchesRange:()=>Yr,matchesSearchRequest:()=>gt,multipleMatches:()=>Mo,normalizeCreateBinaryOptions:()=>En,normalizeCreatePdfOptions:()=>eo,normalizeErrorString:()=>_n,normalizeOperationOutcome:()=>qe,notFound:()=>Er,notModified:()=>Oo,operationOutcomeIssueToString:()=>Un,operationOutcomeToString:()=>Rr,parseCriteriaAsSearchRequest:()=>wa,parseFhirPath:()=>Xt,parseFilterParameter:()=>au,parseHl7DateTime:()=>cu,parseJWTPayload:()=>St,parseLogLevel:()=>lu,parseMappingLanguage:()=>Bc,parseParameter:()=>Oi,parseReference:()=>ps,parseSearchDefinition:()=>Ca,parseSearchRequest:()=>te,parseSearchUrl:()=>Pa,parseStructureDefinition:()=>Ft,parseXFhirQuery:()=>La,preciseEquals:()=>Ns,preciseGreaterThan:()=>Ls,preciseGreaterThanOrEquals:()=>fi,preciseLessThan:()=>Fs,preciseLessThanOrEquals:()=>di,preciseRound:()=>Ms,preconditionFailed:()=>Do,projectAdminResourceTypes:()=>Vi,protectedResourceTypes:()=>ki,removeDuplicates:()=>Ge,removeProfileFromResource:()=>js,reorderBundle:()=>_i,resolveId:()=>ze,resourceMatchesSubscriptionCriteria:()=>cc,satisfiedAccessPolicy:()=>ec,serializeFhircastSubscriptionRequest:()=>or,serverError:()=>br,setCodeBySystem:()=>As,setIdentifier:()=>vs,singleton:()=>U,sleep:()=>Qt,sortStringArray:()=>Ye,splitN:()=>Kt,splitSearchOnComma:()=>yt,streamToBuffer:()=>mu,stringify:()=>Qr,stringifyTypedValue:()=>tn,structureMapTransform:()=>qc,subsetResource:()=>Qo,toJsBoolean:()=>L,toPeriod:()=>us,toTypedValue:()=>x,tooManyRequests:()=>No,tryGetDataType:()=>Pe,tryGetJwtExpiration:()=>xn,tryGetProfile:()=>Fr,unauthorized:()=>Io,validateFhircastSubscriptionRequest:()=>Tt,validateResource:()=>rs,validateResourceType:()=>pu,validationError:()=>h,validationRegexes:()=>$e});module.exports=To(hu);var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},K=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Be=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new kt(e,this.prefixParselets,this.infixParselets)}},kt=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var yr="http://unitsofmeasure.org",So="http://loinc.org",Eo="http://snomed.info/sct",bo="http://www.nlm.nih.gov/research/umls/rxnorm",Ro="http://www.ama-assn.org/go/cpt",Po="http://hl7.org/fhir/sid/icd-10",gr="http://hl7.org",Co="http://terminology.hl7.org";var xr="ok",Vt="created",vr="gone",Tr="not-modified",Sr="not-found",Vn="conflict",Dn="unauthorized",Mn="forbidden",Nn="precondition-failed",Fn="multiple-matches",Ln="too-many-requests",Dt="accepted",wo={resourceType:"OperationOutcome",id:xr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ao={resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Oo={resourceType:"OperationOutcome",id:Tr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Er={resourceType:"OperationOutcome",id:Sr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Io={resourceType:"OperationOutcome",id:Dn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},ko={resourceType:"OperationOutcome",id:Mn,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Vo={resourceType:"OperationOutcome",id:vr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Do={resourceType:"OperationOutcome",id:Nn,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Mo={resourceType:"OperationOutcome",id:Fn,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},No={resourceType:"OperationOutcome",id:Ln,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Fo(r){return{resourceType:"OperationOutcome",id:Dt,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 Lo(r){return{resourceType:"OperationOutcome",id:Vn,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function br(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function me(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Mt(r){return r.id===xr||r.id===Vt||r.id===Tr||r.id===Dt}function _o(r){return r.id===Vt}function Uo(r){return r.id===Dt}function Bo(r){return r.id===Sr}function qo(r){return r.id===vr}function jo(r){switch(r.id){case xr:return 200;case Vt:return 201;case Dt:return 202;case Tr:return 304;case Dn:return 401;case Mn:return 403;case Sr:return 404;case Vn:return 409;case vr:return 410;case Nn:case Fn:return 412;case Ln:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function $o(r,e){if(!Mt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(Rr(e)),this.outcome=e,this.cause=t}};function qe(r){return r instanceof f?r.outcome:me(r)?r:R(_n(r))}function _n(r){return r?typeof r=="string"?r:r instanceof Error?r.message:me(r)?Rr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Rr(r){let e=r.issue?.map(Un)??[];return e.length>0?e.join("; "):"Unknown error"}function Un(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 ne(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 v(r,e){return ne("error","structure",e,r)}function Pr(r,e){return ne("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Cr(r,e,t,n){return ne("error","processing",e,r,{...n,error:t})}var Wo={"http://hl7.org/fhirpath/System.String":"string"};function Go(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:Wo[t.code]??t.code})),e}function Bn(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 wr(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Bn(i,o)])),constraints:[],innerTypes:[]};return e}var qn={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},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 Ft(r){return new Ir(r).parse()}var je=wr(qn),kr=Object.create(null),jn=Object.create(null);function Or(r){let e;return r?(e=jn[r],e||(e=jn[r]=Object.create(null))):e=je,e}function Lt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)_t(n,e)}function _t(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Ft(r),n=Or(e);n[r.name]=t,e&&r.url===e&&(kr[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Vr(){return je}function Dr(r){return!!je[r]}function Pe(r,e){let t=Or(e)[r];return!t&&e&&(t=Or()[r]),t}function z(r,e){let t=Pe(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function Mr(r){let e=je[r];return e&&Ut(e)}function Nr(r){return!!kr[r]}function Fr(r){return kr[r]}var Ir=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,title:e.title,type:e.type,url:e.url,kind:e.kind,description:Yo(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=Ar(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[Ar(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ar(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Re(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Nt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Re(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Jo(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Re(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Re(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!Re(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=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!!(Re(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Nt(e)),n||(n=he(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=Wn(e.max),n=e.base?.max?Wn(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:Gn(w(i,"fixed[x]")),pattern:Gn(w(i,"pattern[x]")),binding:e.binding}}};function Qo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=je[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+C(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Ko.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($n):[$n]},r}var $n={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ko=["resourceType","id","meta"];function Wn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ar(r,e=""){return zo(r.path,e)}function zo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Re(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Gn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function Jo(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 Yo(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 Zo(r){return"elements"in r}function Xo(r){return!!r.visitPropertyAsync}function Bt(r,e,t,n){let i;if(t&&Zo(t)?i={schema:t,initialPath:n}:i=t,Xo(e))return new _r(r,e,i).crawl();new Lr(r,e,i).crawl()}var Lr=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??z(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=N(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=ye(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of we(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ce(e.type.charAt(0))){let n=z(e.type);this.crawlObject(e,n,t)}}},_r=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??z(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=N(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)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=ye(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)if(s)for(let a of we(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!Ce(e.type.charAt(0))){let n=z(e.type);await this.crawlObject(e,n,t)}}};function ye(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Hn:w,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let p of u)c.push(n(p,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function Hn(r,e,t){let n=r.path;return es(w(r,e,t),n,e)}function es(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}`}}var Ur={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},$e={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},ts={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function rs(r,e){return new Br(r.resourceType,r,e).validate()}var Br=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=Ft(n.profile):this.schema=z(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new f(h("Missing resource type"));this.constraintsCheck(x(this.rootResource),this.schema,e),qr(this.rootResource,e,this.issues),Bt(this.rootResource,this,this.schema);let t=this.issues,n=!1;for(let i of t)i.severity==="error"&&(n=!0);if(n)throw new f({resourceType:"OperationOutcome",issue:t});return t}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),os(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let m=ss(p,s.slicing);m&&u&&(u[m]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ce(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(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=is(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&this.issues.push(ne("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(ne("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in ts)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Pr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!ie(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=gr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",m=p+o;for(let g of s)if(g===c||g===u||g===m||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(ne("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){try{let i=F(e.expression,[t],{"%context":t,"%resource":x(this.currentResource[this.currentResource.length-1]),"%rootResource":x(this.rootResource),"%ucum":x(yr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Cr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=as(e);if(n){let{type:o,value:s}=n;if(!(o in Ur)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Ur[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Bt(i.value,this,z("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):ns(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function ns(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function is(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 w(r,o)?n+a:void 0}}function qr(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(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&qr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&qr(i,o,t)}}function os(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&&!Ae(t,e.pattern)||e.fixed&&!J(t,e.fixed))}function qt(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 Ae(r,i.pattern);if(i.fixed)return J(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 ss(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>we(ye(r,n.path))?.some(i=>qt(i,n,t))))return t.name}}function as(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 d(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:A(r)?{type:l.Quantity,value:r}:N(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function L(r){return r.length===0?!1:!!r[0].value}function U(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function w(r,e,t){if(!r.value)return;let n=Qe(r.type,e,t?.profileUrl);return n?Zn(r,e,n):cs(r,e)}function Zn(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let p=c+C(u.code);if(o=n[p],a=n["_"+p],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=Yn(o[c],a[c])}else o=Yn(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Qn(c,s)):Qn(o,s)}function Qn(r,e){return e==="Resource"&&N(r)&&(e=r.resourceType),{type:e,value:r}}function cs(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+C(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function Ge(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(L(jr(t,i))){n=!0;break}n||e.push(t)}return e}function jt(r){return d(!L(r))}function $t(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>L(jr(t,e[n]))))}function jr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):A(t)&&A(n)?d(Gr(t,n)):d(typeof t=="object"&&typeof n=="object"?Hr(r,e):t===n)}function Wt(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(Kn),e.sort(Kn),d(r.every((t,n)=>L(Xn(t,e[n])))))}function Xn(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?d(Math.abs(s-a)<.01):A(s)&&A(a)?d(Gr(s,a)):d(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Hr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Kn(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 He(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return $r(t);case"DateTime":return We(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Wr(t);case"Quantity":return A(t);default:return typeof t=="object"&&t?.resourceType===e}}function $r(r){return typeof r=="string"&&!!$e.date.exec(r)}function We(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function Wr(r){return!!(r&&typeof r=="object"&&("start"in r&&We(r.start)||"end"in r&&We(r.end)))}function us(r){if(r){if($r(r))return{start:zn(r,"0000-00-00T00:00:00.000Z"),end:zn(r,"xxxx-12-31T23:59:59.999Z")};if(We(r))return{start:r,end:r};if(Wr(r))return r}}function zn(r,e){return r+e.substring(r.length)}function A(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Gr(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 Hr(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(Jn(o)&&Jn(s)){if(!Hr(o,s))return!1}else if(o!==s)return!1}return!0}function Jn(r){return r!==null&&typeof r=="object"}function Yn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ls(r??{},e)}return r}function ls(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Y(r){let e=oe(r),t=ri(r);return t===e?{reference:e}:{reference:e,display:t}}function oe(r){return ie(r)?r.reference:`${r.resourceType}/${r.id}`}function ze(r){if(r)return ie(r)?r.reference.split("/")[1]:r.id}function ps(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function ti(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function ri(r){if(ti(r)){let e=ds(r);if(e)return e}if(r.resourceType==="Device"){let e=fs(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return Ke(e)}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]),ci(e))return Ke(e);if(ui(e))return e.text}return oe(r)}function ds(r){let e=r.name;if(e&&e.length>0)return Ze(e[0])}function fs(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function ms(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=ei(t);if(n)return n}else return ei(e)}function ei(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function hs(r){return r?new Date(r):void 0}function Je(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c<o||c===o&&u<s)&&p--;let m=a*12+c-(i*12+o);u<s&&m--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:m,days:g}}function ys(r,e){let{years:t,months:n,days:i}=Je(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 gs(r){let e={};return ni(r.item,e),e}function ni(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ni(t.item,e)}function xs(r){let e={};return ii(r.item,e),e}function ii(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ii(t.item,e)}function oi(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 vs(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 Ts(r,...e){let t=he(r,...e);if(!t)return;let n=w({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function he(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 Qr(r,e){return JSON.stringify(r,Ss,e?2:void 0)}function Ss(r,e){return!Es(r)&&S(e)?void 0:e}function Es(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!$(r):!1}function $(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 J(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?bs(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Rs(r,e,t):(E(r)||E(e),!1)}function bs(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!J(r[t],e[t]))return!1;return!0}function Rs(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!J(o,s,i))return!1}return!0}function Ae(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ps(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Cs(r,e):E(r)||E(e)?!1:r===e}function Ps(r,e){return e.every(t=>r.some(n=>Ae(n,t)))}function Cs(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ae(r[t],n))}function se(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function ws(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function E(r){return r!==null&&typeof r=="object"}function Kr(r){return r.every(si)}function si(r){return typeof r=="string"}function ai(r){return E(r)&&"code"in r&&typeof r.code=="string"}function ci(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(ai)}function ui(r){return E(r)&&"text"in r&&typeof r.text=="string"}var li=[];for(let r=0;r<256;r++)li.push(r.toString(16).padStart(2,"0"));function zr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=li[e[n]];return t.join("")}function Jr(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function C(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ce(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Ht(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ge(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Gt(r,e){return r.coding?.find(t=>t.system===e)?.code}function As(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Os(r,e,t,n){return r.qualifiedInterval?.find(i=>pi(i,e)&&Ds(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Is(r,e,t){return r.qualifiedInterval?.find(n=>pi(n,e)&&t.includes(n.condition))}function pi(r,e){return ks(r,e)&&Vs(r,e)}function ks(r,e){return!r.gender||r.gender===e.gender}function Vs(r,e){return!r.age||Yr(Je(e.birthDate).years,r.age)}function Ds(r,e,t){return!!r.range&&Yr(e,r.range,t)}function Yr(r,e,t){return(e.low?.value===void 0||fi(r,e.low.value,t))&&(e.high?.value===void 0||di(r,e.high.value,t))}function Ms(r,e){return parseFloat(r.toFixed(e))}function Ns(r,e,t){return j(r,t)===j(e,t)}function Fs(r,e,t){return j(r,t)<j(e,t)}function Ls(r,e,t){return j(r,t)>j(e,t)}function di(r,e,t){return j(r,t)<=j(e,t)}function fi(r,e,t){return j(r,t)>=j(e,t)}function j(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function _s(r,e,t){return r.find(n=>typeof e=="string"?Gt(n.code||{},t)===e:Gt(n.code||{},t)===Gt(e,t))}function we(r){if(r)return Array.isArray(r)?r:[r]}var Qt=r=>new Promise(e=>{setTimeout(e,r)});function Kt(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 Zr(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function xe(r,e){return r?(r.push(e),r):[e]}function Ye(r){return r.sort((e,t)=>e.localeCompare(t))}function zt(r){return r.endsWith("/")?r:r+"/"}function mi(r){return r.startsWith("/")?r.slice(1):r}function B(r,e){return new URL(mi(e),zt(r.toString())).toString()}function Xr(r,e){return B(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function en(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 hi=/^(([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 Us(r){return hi.test(r)}function Bs(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 qs(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[oi(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function js(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function $s(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ze(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=Oe(r.text);if(n)return n}return t.join(" ").trim()}function Ws(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Gs(r){return Oe(r.family)??""}function Yt(r){return r instanceof Date&&!isNaN(r.getTime())}function Hs(r,e,t){if(!r)return"";let n=new Date(r);return Yt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function yi(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Yt(n)?n.toLocaleTimeString(e,t):""}function Jt(r,e,t){if(!r)return"";let n=new Date(r);return Yt(n)?n.toLocaleString(e,t):""}function Qs(r,e,t){return!r||!r.start&&!r.end?"":Jt(r.start,e,t)+" - "+Jt(r.end,e,t)}var Ks={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},zs={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Js={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Ys(r){if(!r)return"";let e=[];return Zs(e,r.repeat),r.event&&e.push(r.event.map(t=>Jt(t)).join(", ")),C(e.join(" ").trim())}function Zs(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Ks[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+zs[i]):r.push("per "+n+" "+Js[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(C).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>yi(o)).join(", "))}function Xs(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=ra(n.value,e),`> ${ae(n,e)}`):`>= ${ae(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ta(i.value,e),`< ${ae(i,e)}`):`<= ${ae(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${ae(n,e)} - ${ae(i,e)}`)}function ae(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function ea(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=Oe(r.text);return e||(r.coding?r.coding.map(t=>gi(t)).join(", "):"")}function gi(r){return Oe(r?.display)??Oe(r?.code)??""}function xi(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(ae(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=Oe(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>xi(t)).join(" / ")),e.join(" / ").trim()}function Oe(r){return typeof r=="string"?r:void 0}function ta(r,e,t=1){return(vi(r,e)+t)*Math.pow(10,-e)}function ra(r,e,t=1){return(vi(r,e)-t)*Math.pow(10,-e)}function vi(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function na(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Zt(t)}}function Zt(r){for(let e of r.base??[]){let t=D.types[e];t||(t={searchParamsDetails:{}},D.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function Nt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Si((r.base?.path??r.path)?.split(".")):e}function Si(r){return r.length===1?r[0]:r.map(C).join("")}function Ut(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function ia(){return Object.values(Vr()).filter(Ut).map(r=>r.name)}function oa(r){return D.types[r]?.searchParams}function sa(r,e){return D.types[r]?.searchParams?.[e]}function aa(r){let e=r.replaceAll("[x]","").split(".").pop();return Ei(e)}function Ei(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(ua).join(" ").replace("_"," ").replace(/\s+/g," ")}var ca=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function ua(r){let e=r.toUpperCase();return r===e?r:ca.has(e)?e:e.charAt(0)+r.slice(1)}function Qe(r,e,t){let n=Pe(r,t);if(n)return bi(n.elements,e)}function bi(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 N(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ie(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var D={types:{}};function tn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return Ti(r.value);case l.CodeableConcept:return r.value.coding?.map(Ti).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Ze(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return N(r.value)?Y(r.value).reference:JSON.stringify(r)}}function Ti(r){return r?`${r.system??""}|${r.code}`:""}function Ie(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var Z=()=>[],O={empty:(r,e)=>d(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>d(e.length!==0),exists:(r,e,t)=>t?d(e.filter(n=>L(t.eval(r,[n]))).length>0):d(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>d(e.every(n=>L(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return d(!0);let n=t.eval(r,ve(r));return n.length===0?d(!1):d(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,ve(r));return n.length===0?d(!0):e.length===0?d(!1):d(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:l.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===O.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>L(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Z,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,ve(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,ve(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,ve(r));return Ge([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,ve(r));return[...e,...n]},htmlChecks:(r,e,t)=>[x(!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 L(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(O.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(O.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:Ie(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(O.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:Ie(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(O.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(O.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return A(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(O.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return t==null?[]:A(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(O.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:Ie("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(O.toTime(r,e).length===1),indexOf:(r,e,t)=>_((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>_((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>_((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>_((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>_((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>_(t=>t.toUpperCase(),r,e),lower:(r,e)=>_(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>_((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>_((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>_((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>_(t=>t.length,r,e),toChars:(r,e)=>_(t=>t?t.split(""):void 0,r,e),encode:Z,decode:Z,escape:Z,unescape:Z,trim:Z,split:Z,join:(r,e,t)=>{let n=t?.eval(r,ve(r))[0]?.value??"";if(typeof n!="string")throw new Error("Separator must be a string.");return[{type:l.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>W(Math.abs,r,e),ceiling:(r,e)=>W(Math.ceil,r,e),exp:(r,e)=>W(Math.exp,r,e),floor:(r,e)=>W(Math.floor,r,e),ln:(r,e)=>W(Math.log,r,e),log:(r,e,t)=>W((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>W(Math.pow,r,e,t),round:(r,e)=>W(Math.round,r,e),sqrt:(r,e)=>W(Math.sqrt,r,e),truncate:(r,e)=>W(t=>t|0,r,e),children:Z,descendants:Z,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=O.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=O.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=Je(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof q?n=t.name:t instanceof X&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:He(i,n)})):[]},not:(r,e)=>O.toBoolean(r,e).map(t=>({type:l.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 x(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:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:N(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.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:l.boolean,value:o.value?.resourceType===i}))}};function _(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function W(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1),o=A(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function G(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 ve(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Xe=class{constructor(e,t){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()}},M=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},q=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;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 N(t)&&t.resourceType===this.name?e:w(e,this.name)}toString(){return this.name}},et=class{eval(){return[]}toString(){return"{}"}},tt=class extends Ue{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},ce=class extends K{constructor(e,t){super("as",e,t)}eval(e,t){return O.ofType(e,this.left.eval(e,t),this.right)}},P=class extends K{},I=class extends P{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=A(s)?s.value:s,u=A(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?d(p):A(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},rt=class extends K{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:l.string,value:o.map(s=>s.value).join("")}]:o}},nt=class extends P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},it=class extends P{constructor(e,t){super("in",e,t)}eval(e,t){let n=U(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},X=class extends K{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Te=class extends K{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ge([...n,...i])}},ot=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $t(n,i)}},st=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jt($t(n,i))}},at=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Wt(n,i)}},ct=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jt(Wt(n,i))}},ue=class extends P{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(He(n[0],i))}},ut=class extends P{constructor(e,t){super("and",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},lt=class extends P{constructor(e,t){super("or",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},pt=class extends P{constructor(e,t){super("xor",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},dt=class extends P{constructor(e,t){super("implies",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},H=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=O[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(", ")})`}},le=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var la=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],ee=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
2
- `))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;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()))));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()===" "&&pa(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
3
- `?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function pa(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&la.includes(r.value)))}var ft=["true","false"],mt=["!=","!~","<=",">=","{}","->"];function Ri(r){return new ee(r,ft,mt).tokenize()}var y={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},da={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},fa={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new le(e,t)},precedence:y.Indexer},ma={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new H(e.name,t)},precedence:y.FunctionCall};function ha(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function ke(){return new Be().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:Ie(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:ha(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new M({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new M({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new M({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new et}).registerPrefix("(",da).registerInfix("[",fa).registerInfix("(",ma).prefix("+",y.UnaryAdd,(r,e)=>new tt("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new X(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Te(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new ot(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new st(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new at(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new ct(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new rt(r,t)).infixLeft("and",y.And,(r,e,t)=>new ut(r,t)).infixLeft("as",y.As,(r,e,t)=>new ce(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new nt(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new it(r,t)).infixLeft("is",y.Is,(r,e,t)=>new ue(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new lt(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new pt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new dt(r,t))}var ya=ke();function Xt(r){return new Xe(r,ya.construct(Ri(r)).consumeAndParse())}function Se(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return F(r,t).map(n=>n.value)}function F(r,e,t){let n=t??{};return Xt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var nn=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(nn||{});function er(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=xa(r,e)),t}function ga(r,e,t){let n=D.types[r];n||(n={},D.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function xa(r,e){let t=e.code,n=Sa(t),i=on(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ht(a),u=Zr(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Pi(o,ht(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Ea(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ga(r,t,s),s}function Pi(r,e,t,n){let i=e[n];if(i instanceof ce){r.propertyTypes.add(i.right.toString());return}if(i instanceof H){va(r,i);return}let o=i.toString(),s=Qe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof le&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;Ta(p)&&(p=s.type[0].code),Pi(r,e,p,c)}}function va(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof ue){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Ta(r){return r==="Element"||r==="BackboneElement"}function Sa(r){return r.split("-").reduce((e,t,n)=>e+(n?C(t):t),"")}function Ea(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function on(r,e){let t=[],n=Xt(e);return rn(r,n.child,t),t}function ba(r,e){let t=on(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function rn(r,e,t){e instanceof Te?(rn(r,e.left,t),rn(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ht(r){if(r instanceof ce||r instanceof le)return[ht(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof X)return[ht(r.left),ht(r.right)].flat();if(r instanceof H){if(r.name==="where"&&!(r.args[0]instanceof ue))return[];if(r.name==="last")return[]}return[r]}var Ra=20,sn=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(sn||{}),Ai={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},an={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function te(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 c of a)o.push([s,c]);else o.push([s,a??""]);return Aa(i,o)}function Pa(r){return te(r)}function Ca(r){return te(r)}function wa(r){return te(r)}function Aa(r,e){let t={resourceType:r};for(let[n,i]of e)Oa(t,n,i);return t}function Oa(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=xe(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Ia(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Ci(t);i==="iterate"&&(s.modifier="iterate"),r.include=xe(r.include,s);break}case"_revinclude":{let s=Ci(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=xe(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=D.types[r.resourceType]?.searchParams?.[n];s?r.filters=xe(r.filters,Oi(s,i,t)):r.filters=xe(r.filters,Da(n,i,t))}}}}function Ia(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Oi(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return ka(r,t);case"reference":case"string":case"token":case"uri":return Va(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function ka(r,e){let{operator:t,value:n}=Ma(e);return{code:r.code,operator:t,value:n}}function Va(r,e,t){return{code:r.code,operator:Na(e),value:t}}function Da(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in an&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ma(r){let e=r.substring(0,2),t=an[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Na(r){return Ai[r]??"eq"}function Ci(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}'`))}var Fa=/{{([^{}]+)}}/g;function La(r,e){return r=r.replaceAll(Fa,(t,n)=>{let i=F(n,[],e);return i.length!==1?"":tn(i[0])}),te(r)}function _a(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Ua(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ba(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(wi("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(wi("_revinclude",t))),e.length===0?"":(Ye(e),"?"+e.join("&"))}function Ua(r){let e=r.operator in Ai?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in an?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ba(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function wi(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function yt(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 gt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!qa(r,e,t))return!1}return!0}function qa(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return ja(r,t,n);switch(n.type){case"reference":return $a(r,t,n);case"string":case"uri":return Ii(r,t,n);case"token":return Wa(r,t,n);case"date":return Ka(r,t,n);default:return!1}}function ja(r,e,t){let i=Se(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function $a(r,e,t){let n=Se(t.expression,r),i=tr(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of yt(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Wa(r,e,t){return er(r.resourceType,t).type==="BOOLEAN"?Ga(r,e,t):Ii(r,e,t,!0)}function Ga(r,e,t){let n=Se(t.expression,r),i=e.value==="true",o=n.includes(i);return tr(e.operator)?!o:o}function Ii(r,e,t,n){let o=er(r.resourceType,t).elementDefinitions?.[0].type?.[0].code,s=Se(t.expression,r),a=yt(e.value),c=tr(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=Ha(u,e.operator,p):o===l.CodeableConcept?m=Qa(u,e.operator,p):m=cn(u,e.operator,p,n),m)return!c}return c}function cn(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return cn(r,e,o,!1)&&(!s||cn(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function Ha(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function Qa(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function Ka(r,e,t){let n=Se(t.expression,r),i=yt(e.value),o=tr(e.operator);for(let s of n)for(let a of i)if(za(s,e.operator,a))return!o;return o}function za(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function tr(r){return r==="ne"||r==="not"}var Ja={resourceType:"*"},ki=["DomainConfiguration","JsonWebKey","Login"],Vi=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],Di=(b=>(b.READ="read",b.VREAD="vread",b.UPDATE="update",b.PATCH="patch",b.DELETE="delete",b.HISTORY="history",b.HISTORY_INSTANCE="history-instance",b.HISTORY_TYPE="history-type",b.HISTORY_SYSTEM="history-system",b.CREATE="create",b.SEARCH="search",b.SEARCH_TYPE="search-type",b.SEARCH_SYSTEM="search-system",b.SEARCH_COMPARTMENT="search-compartment",b.CAPABILITIES="capabilities",b.TRANSACTION="transaction",b.BATCH="batch",b.OPERATION="operation",b))(Di||{}),Ya=["read","vread","history","history-instance"];function Za(r,e){if(r.resource){for(let t of r.resource)if(un(t.resourceType,e))return!0}return!1}function Mi(r,e){if(ki.includes(e))return!1;if(r.resource){for(let t of r.resource)if(un(t.resourceType,e)&&!t.readonly)return!0}return!1}function Xa(r,e){let t=e.resourceType;return Mi(r,t)?Ni(r,e,!1):!1}function Ni(r,e,t){if(r.resource){for(let n of r.resource)if(Fi(e,t?"read":"update",n))return!0}return!1}function ec(r,e,t){if(!t)return Ja;if(t.resource){for(let n of t.resource)if(Fi(r,e,n))return n}}function Fi(r,e,t){let n=r.resourceType;return!(!un(t.resourceType,n)||t.readonly&&!Ya.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!gt(r,te(t.criteria)))}function un(r,e){return r===e||r==="*"&&!Vi.includes(e)}function ln(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function pn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function rr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),zr(r.buffer)}async function dn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function pe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Li(r){let e={};r=se(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=pe(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>tc(i,o,e),2);return _i(JSON.parse(n))}function tc(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function _i(r){let e=nc(r),{sorted:t,cycles:n}=rc(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function rc(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Ui(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ie(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ui(n,e)}}function nc(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&Ui(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ic(r){r=se(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=pe());return Li(e)}var xt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var k={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var Ve=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},de=class{constructor(){this.emitter=new Ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var nr={"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"},qi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],ir=["DiagnosticReport-update"];function fn(r){return ir.includes(r)}function mn(r){if(ir.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var ji={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function $i(r){return qi.includes(r)}function hn(r){return!!r.endpoint}function or(r){if(!Tt(r))throw new f(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return hn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Tt(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(!nr[o])return!1;return!(hn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Bi(r,e,t,n){if(typeof e!="object")throw new f(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!$i(e.resourceType))throw new f(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function oc(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Bi(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Bi(r,s,t,n)}}function sc(r,e){let t=new Map,n=ji[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));oc(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!nr[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(nr).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(ir.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return sc(e,i),{timestamp:new Date().toISOString(),id:pe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var vt=class extends de{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!Tt(e))throw new f(h("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function ac(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=ln(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function yn(r){return r.split(".").length===3}function St(r){let[e,t,n]=r.split(".");return ac(t)}function gn(r){try{return typeof St(r).login_id=="string"}catch{return!1}}function xn(r){try{let t=St(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Et=class{constructor(e){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,k.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Wi;Wi=Symbol.toStringTag;var V=class{constructor(e){this[Wi]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var De=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new ar)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Qr(t):void 0)}},ar=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},vn=class extends De{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var cr=class extends de{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Me=class extends de{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Tn=class{constructor(e,t){this.criteria=e,this.emitter=new Me(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}},bt=class{constructor(e,t,n){if(!(e instanceof Rt))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new cr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Me,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(ze(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}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(br(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.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e.subscriptionId}};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(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 ${oe(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(h("Failed to get token"));if(!o)throw new f(h("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(J(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 c=a.subscriptionProps;return!J(n,c)}):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.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}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 Tn(e,t);return this.addCriteriaEntry(i),this.getTokenForCriteria(i).then(([o,s])=>{i.subscriptionId=o,i.token=s,this.criteriaEntriesBySubscriptionId.set(o,i),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:s}}))}).catch(o=>{console.error(o.message),this.emitError(i,o),this.removeCriteriaEntry(i)}),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))}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Me(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function cc({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!uc(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=te(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Gi(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=he(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):gt(r,s)}function uc(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 Gi(r,e,t){let n=he(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})};return F(n.valueString,[x(e)],o)?.[0]?.value===!0}var lc="3.1.10-7ae504bff",pc="medplum-cli",zi=k.FHIR_JSON+", */*; q=0.1",dc="https://api.medplum.com/",fc=1e3,mc=6e4,hc=0,yc="Binary/",Hi={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ji=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(Ji||{}),Yi=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(Yi||{}),Zi=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(Zi||{}),Xi=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Xi||{}),Rt=class extends Ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??gc(),this.storage=t?.storage??new De,this.createPdfImpl=t?.createPdf,this.baseUrl=zt(t?.baseUrl??dc),this.fhirBaseUrl=B(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=B(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=B(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=B(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?hc:mc),this.cacheTime>0?this.requestCache=new xt(t?.resourceCacheSize??fc):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.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0}).catch(console.error)),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),typeof window<"u"&&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=B(this.fhirBaseUrl,t);if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new V(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,k.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(B(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=en(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 c=new V((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new V(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new V(this.search(t,n,i).then(Sn));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield Sn(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Hi;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new V(Promise.reject(new Error("Missing reference")));if(i==="system")return new V(Promise.resolve(Hi));let[o,s]=i.split("/");return!o||!s?new V(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Dr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new V((async()=>{let s=`{
1
+ "use strict";var gr=Object.defineProperty;var vo=Object.getOwnPropertyDescriptor;var To=Object.getOwnPropertyNames;var So=Object.prototype.hasOwnProperty;var Eo=(r,e)=>{for(var t in e)gr(r,t,{get:e[t],enumerable:!0})},bo=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of To(e))!So.call(r,i)&&i!==t&&gr(r,i,{get:()=>e[i],enumerable:!(n=vo(e,i))||n.enumerable});return r};var Ro=r=>bo(gr({},"__esModule",{value:!0}),r);var Pu={};Eo(Pu,{AccessPolicyInteraction:()=>Fi,AndAtom:()=>ct,ArithemticOperatorAtom:()=>V,AsAtom:()=>pe,BooleanInfixOperatorAtom:()=>P,CPT:()=>Ao,ClientStorage:()=>Me,ConcatAtom:()=>tt,ContainsAtom:()=>rt,ContentType:()=>D,DEFAULT_ACCEPT:()=>Zi,DEFAULT_SEARCH_COUNT:()=>Oa,DotAtom:()=>te,EmptySetAtom:()=>Xe,EqualsAtom:()=>it,EquivalentAtom:()=>st,EventTarget:()=>nr,ExternalSecretSystems:()=>Pc,FHIRCAST_EVENT_NAMES:()=>ir,FHIRCAST_EVENT_RESOURCES:()=>Gi,FHIRCAST_EVENT_VERSION_REQUIRED:()=>or,FHIRCAST_RESOURCE_TYPES:()=>Wi,FhirFilterComparison:()=>wt,FhirFilterConnective:()=>Ot,FhirFilterNegation:()=>At,FhirPathAtom:()=>Ze,FhircastConnection:()=>xt,FunctionAtom:()=>H,HTTP_HL7_ORG:()=>vr,HTTP_TERMINOLOGY_HL7_ORG:()=>Io,Hl7Context:()=>oe,Hl7Field:()=>Pe,Hl7Message:()=>kn,Hl7Segment:()=>Le,ICD10:()=>Oo,ImpliesAtom:()=>pt,InAtom:()=>nt,IndexerAtom:()=>fe,InfixOperatorAtom:()=>z,IsAtom:()=>de,LOINC:()=>Po,LRUCache:()=>gt,LiteralAtom:()=>F,LogLevel:()=>yr,Logger:()=>Vn,MEDPLUM_CLI_CLIENT_ID:()=>yc,MEDPLUM_VERSION:()=>hc,MedplumClient:()=>bt,MedplumKeyValueClient:()=>St,MemoryStorage:()=>cr,MockAsyncClientStorage:()=>Tn,NotEqualsAtom:()=>ot,NotEquivalentAtom:()=>at,OAuthClientAssertionType:()=>ro,OAuthGrantType:()=>Xi,OAuthTokenAuthMethod:()=>to,OAuthTokenType:()=>eo,OperationOutcomeError:()=>f,Operator:()=>an,OperatorPrecedence:()=>y,OrAtom:()=>ut,Parser:()=>It,ParserBuilder:()=>Be,PrefixOperatorAtom:()=>Ue,PropertyType:()=>l,RXNORM:()=>wo,ReadablePromise:()=>M,RobustWebSocket:()=>ur,SNOMED:()=>Co,SearchParameterType:()=>on,SubscriptionEmitter:()=>Ne,SubscriptionManager:()=>Et,SymbolAtom:()=>U,Tokenizer:()=>re,TypedEventTarget:()=>Q,UCUM:()=>xr,UnaryOperatorAtom:()=>et,UnionAtom:()=>Ee,VALID_HOSTNAME_REGEX:()=>xi,XorAtom:()=>lt,accepted:()=>Bo,addProfileToResource:()=>Gs,allOk:()=>ko,append:()=>Te,applyDefaultValuesToElement:()=>Vc,applyDefaultValuesToElementWithVisitor:()=>Dc,applyDefaultValuesToResource:()=>kc,applyFixedOrPatternValue:()=>Pt,arrayBufferToBase64:()=>Yr,arrayBufferToHex:()=>Jr,arrayify:()=>Oe,assertContextVersionOptional:()=>hn,assertOk:()=>Qo,badRequest:()=>R,booleanToTypedValue:()=>d,buildElementsContext:()=>pr,buildTypeName:()=>Ri,calculateAge:()=>ze,calculateAgeString:()=>Ss,canReadResourceType:()=>nc,canWriteResource:()=>ic,canWriteResourceType:()=>Li,capitalize:()=>w,checkForNull:()=>Dn,compressElement:()=>zo,concatUrls:()=>q,conceptMapTranslate:()=>Cn,conflict:()=>qo,convertContainedResourcesToBundle:()=>uc,convertToTransactionBundle:()=>Bi,crawlResource:()=>Ut,createConstraintIssue:()=>wr,createFhircastMessagePayload:()=>ar,createOperationOutcomeIssue:()=>se,createProcessingIssue:()=>Ar,createReference:()=>X,createStructureIssue:()=>v,created:()=>Vo,decodeBase64:()=>pn,deepClone:()=>ue,deepEquals:()=>Z,deepIncludes:()=>Ie,encodeBase64:()=>dn,encryptSHA256:()=>fn,ensureNoLeadingSlash:()=>gi,ensureTrailingSlash:()=>zt,evalFhirPath:()=>be,evalFhirPathTyped:()=>A,evalSqlOnFhir:()=>Tu,fhirPathArrayEquals:()=>$t,fhirPathArrayEquivalent:()=>Wt,fhirPathEquals:()=>$r,fhirPathEquivalent:()=>ri,fhirPathIs:()=>He,fhirPathNot:()=>jt,fhirTypeToJsType:()=>qr,findObservationInterval:()=>Ms,findObservationReferenceRange:()=>Ns,findResourceByCode:()=>$s,forbidden:()=>No,formatAddress:()=>Ks,formatCodeableConcept:()=>Ke,formatCoding:()=>Ti,formatDate:()=>Ys,formatDateTime:()=>Jt,formatFamilyName:()=>Js,formatGivenName:()=>zs,formatHl7DateTime:()=>xo,formatHumanName:()=>Ye,formatMoney:()=>oa,formatObservationValue:()=>Si,formatPeriod:()=>Zs,formatQuantity:()=>le,formatRange:()=>ia,formatSearchQuery:()=>$a,formatTime:()=>vi,formatTiming:()=>ra,generateId:()=>me,getAllDataTypes:()=>Mr,getAllQuestionnaireAnswers:()=>bs,getCodeBySystem:()=>Gt,getDataType:()=>J,getDateProperty:()=>Ts,getDefaultValuesForNewSliceEntry:()=>Mc,getDisplayString:()=>oi,getElementDefinition:()=>Qe,getElementDefinitionFromElements:()=>Ci,getElementDefinitionTypeName:()=>Mt,getExpressionForResourceType:()=>Aa,getExpressionsForResourceType:()=>sn,getExtension:()=>Y,getExtensionValue:()=>Ps,getIdentifier:()=>ci,getImageSrc:()=>vs,getNestedProperty:()=>ge,getPathDifference:()=>ve,getPathDisplayName:()=>da,getPropertyDisplayName:()=>Pi,getQueryString:()=>tn,getQuestionnaireAnswers:()=>Es,getRandomString:()=>rr,getReferenceString:()=>ce,getResourceTypes:()=>ua,getSearchParameter:()=>pa,getSearchParameterDetails:()=>er,getSearchParameters:()=>la,getStatus:()=>Ho,getTypedPropertyValue:()=>C,getTypedPropertyValueWithPath:()=>zn,getTypedPropertyValueWithSchema:()=>ti,getValueSliceName:()=>Pn,getWebSocketUrl:()=>en,globalSchema:()=>N,gone:()=>Fo,indexSearchParameter:()=>Zt,indexSearchParameterBundle:()=>ca,indexStructureDefinitionBundle:()=>Ft,inflateBaseSchema:()=>Or,inflateElement:()=>$n,initFhirPathParserBuilder:()=>De,isAccepted:()=>$o,isCodeableConcept:()=>pi,isCoding:()=>li,isCompletedSubscriptionRequest:()=>yn,isComplexTypeCode:()=>Ht,isContextVersionRequired:()=>mn,isCreated:()=>jo,isDataTypeLoaded:()=>Nr,isDateString:()=>Wr,isDateTimeString:()=>We,isEmpty:()=>S,isFhirCriteriaMet:()=>Ki,isFhircastResourceType:()=>Hi,isGone:()=>Go,isJwt:()=>gn,isLowerCase:()=>Ae,isMedplumAccessToken:()=>xn,isNotFound:()=>Wo,isObject:()=>E,isOk:()=>Dt,isOperationOutcome:()=>ye,isPeriod:()=>Gr,isPopulated:()=>$,isProfileLoaded:()=>Lr,isProfileResource:()=>ii,isQuantity:()=>I,isQuantityEquivalent:()=>Hr,isReference:()=>ae,isResource:()=>O,isResourceType:()=>Fr,isResourceTypeSchema:()=>_t,isSliceDefinitionWithTypes:()=>Rn,isString:()=>ui,isStringArray:()=>zr,isTextObject:()=>di,isUUID:()=>Vs,isValidDate:()=>Yt,isValidHostname:()=>Ws,lazy:()=>Xr,loadDataType:()=>Lt,mapByIdentifier:()=>Hs,matchDiscriminant:()=>qt,matchesAccessPolicy:()=>_i,matchesRange:()=>Zr,matchesSearchRequest:()=>yt,multipleMatches:()=>_o,normalizeCreateBinaryOptions:()=>bn,normalizeCreatePdfOptions:()=>no,normalizeErrorString:()=>qn,normalizeOperationOutcome:()=>qe,notFound:()=>Rr,notModified:()=>Do,operationOutcomeIssueToString:()=>jn,operationOutcomeToString:()=>Cr,parseCriteriaAsSearchRequest:()=>Va,parseFhirPath:()=>Xt,parseFilterParameter:()=>du,parseHl7DateTime:()=>fu,parseJWTPayload:()=>Tt,parseLogLevel:()=>hu,parseMappingLanguage:()=>Gc,parseParameter:()=>Vi,parseReference:()=>ys,parseSearchDefinition:()=>ka,parseSearchRequest:()=>ne,parseSearchUrl:()=>Ia,parseStructureDefinition:()=>Nt,parseXFhirQuery:()=>ja,preciseEquals:()=>Bs,preciseGreaterThan:()=>js,preciseGreaterThanOrEquals:()=>yi,preciseLessThan:()=>qs,preciseLessThanOrEquals:()=>hi,preciseRound:()=>Us,preconditionFailed:()=>Lo,projectAdminResourceTypes:()=>Ni,protectedResourceTypes:()=>Mi,removeDuplicates:()=>Ge,removeProfileFromResource:()=>Qs,reorderBundle:()=>qi,resolveId:()=>xe,resourceMatchesSubscriptionCriteria:()=>fc,satisfiedAccessPolicy:()=>oc,serializeFhircastSubscriptionRequest:()=>sr,serverError:()=>Pr,setCodeBySystem:()=>Ds,setIdentifier:()=>Rs,singleton:()=>B,sleep:()=>Qt,sortStringArray:()=>Je,splitN:()=>Kt,splitSearchOnComma:()=>ht,streamToBuffer:()=>vu,stringify:()=>Kr,stringifyTypedValue:()=>rn,structureMapTransform:()=>Hc,subsetResource:()=>Yo,toJsBoolean:()=>L,toPeriod:()=>ms,toTypedValue:()=>x,tooManyRequests:()=>Uo,tryGetDataType:()=>we,tryGetJwtExpiration:()=>vn,tryGetProfile:()=>_r,unauthorized:()=>Mo,validateFhircastSubscriptionRequest:()=>vt,validateResource:()=>ss,validateResourceType:()=>yu,validateTypedValue:()=>as,validationError:()=>h,validationRegexes:()=>$e});module.exports=Ro(Pu);var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},z=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Be=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new It(e,this.prefixParselets,this.infixParselets)}},It=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var xr="http://unitsofmeasure.org",Po="http://loinc.org",Co="http://snomed.info/sct",wo="http://www.nlm.nih.gov/research/umls/rxnorm",Ao="http://www.ama-assn.org/go/cpt",Oo="http://hl7.org/fhir/sid/icd-10",vr="http://hl7.org",Io="http://terminology.hl7.org";var Tr="ok",kt="created",Sr="gone",Er="not-modified",br="not-found",Nn="conflict",Fn="unauthorized",Ln="forbidden",_n="precondition-failed",Un="multiple-matches",Bn="too-many-requests",Vt="accepted",ko={resourceType:"OperationOutcome",id:Tr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Vo={resourceType:"OperationOutcome",id:kt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Do={resourceType:"OperationOutcome",id:Er,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Rr={resourceType:"OperationOutcome",id:br,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Mo={resourceType:"OperationOutcome",id:Fn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},No={resourceType:"OperationOutcome",id:Ln,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Fo={resourceType:"OperationOutcome",id:Sr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Lo={resourceType:"OperationOutcome",id:_n,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},_o={resourceType:"OperationOutcome",id:Un,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Uo={resourceType:"OperationOutcome",id:Bn,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Bo(r){return{resourceType:"OperationOutcome",id:Vt,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 qo(r){return{resourceType:"OperationOutcome",id:Nn,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Pr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ye(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Dt(r){return r.id===Tr||r.id===kt||r.id===Er||r.id===Vt}function jo(r){return r.id===kt}function $o(r){return r.id===Vt}function Wo(r){return r.id===br}function Go(r){return r.id===Sr}function Ho(r){switch(r.id){case Tr:return 200;case kt:return 201;case Vt:return 202;case Er:return 304;case Fn:return 401;case Ln:return 403;case br:return 404;case Nn:return 409;case Sr:return 410;case _n:case Un:return 412;case Bn:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Qo(r,e){if(!Dt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(Cr(e)),this.outcome=e,this.cause=t}};function qe(r){return r instanceof f?r.outcome:ye(r)?r:R(qn(r))}function qn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ye(r)?Cr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Cr(r){let e=r.issue?.map(jn)??[];return e.length>0?e.join("; "):"Unknown error"}function jn(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 se(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 v(r,e){return se("error","structure",e,r)}function wr(r,e){return se("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Ar(r,e,t,n){return se("error","processing",e,r,{...n,error:t})}var Ko={"http://hl7.org/fhirpath/System.String":"string"};function zo(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:Ko[t.code]??t.code})),e}function $n(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 Or(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,$n(i,o)])),constraints:[],innerTypes:[]};return e}var Wn={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},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 Nt(r){return new Vr(r).parse()}var je=Or(Wn),Dr=Object.create(null),Gn=Object.create(null);function kr(r){let e;return r?(e=Gn[r],e||(e=Gn[r]=Object.create(null))):e=je,e}function Ft(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)Lt(n,e)}function Lt(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Nt(r),n=kr(e);n[r.name]=t,e&&r.url===e&&(Dr[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Mr(){return je}function Nr(r){return!!je[r]}function we(r,e){let t=kr(e)[r];return!t&&e&&(t=kr()[r]),t}function J(r,e){let t=we(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function Fr(r){let e=je[r];return e&&_t(e)}function Lr(r){return!!Dr[r]}function _r(r){return Dr[r]}var Vr=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,title:e.title,type:e.type,url:e.url,kind:e.kind,description:ts(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=Ir(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[Ir(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ir(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Ce(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Mt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Ce(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){es(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Ce(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Ce(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!Ce(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=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!!(Ce(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Mt(e)),n||(n=Y(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=Qn(e.max),n=e.base?.max?Qn(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:Kn(C(i,"fixed[x]")),pattern:Kn(C(i,"pattern[x]")),binding:e.binding}}};function Yo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=je[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+w(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Zo.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(Hn):[Hn]},r}var Hn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Zo=["resourceType","id","meta"];function Qn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ir(r,e=""){return Xo(r.path,e)}function Xo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Ce(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Kn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function es(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 ts(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 rs(r){return"elements"in r}function ns(r){return!!r.visitPropertyAsync}function Ut(r,e,t,n){let i;if(t&&rs(t)?i={schema:t,initialPath:n}:i=t,ns(e))return new Br(r,e,i).crawl();new Ur(r,e,i).crawl()}var Ur=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??J(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=ge(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Oe(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ae(e.type.charAt(0))){let n=J(e.type);this.crawlObject(e,n,t)}}},Br=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??J(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)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=ge(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)if(s)for(let a of Oe(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!Ae(e.type.charAt(0))){let n=J(e.type);await this.crawlObject(e,n,t)}}};function ge(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?zn:C,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let p of u)c.push(n(p,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function zn(r,e,t){let n=r.path;return is(C(r,e,t),n,e)}function is(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}`}}var qr={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"},$e={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},os={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function ss(r,e){if(!r.resourceType)throw new f(h("Missing resource type"));return new Bt(x(r),e).validate()}function as(r,e){return new Bt(r,e).validate()}var Bt=class{constructor(e,t){this.issues=[],this.root=e,this.currentResource=[],O(e.value)&&this.currentResource.push(e.value),t?.profile?this.schema=Nt(t.profile):this.schema=J(e.type)}validate(){this.constraintsCheck(this.root,this.schema,this.root.type),jr(this.root.value,this.root.type,this.issues),Ut(this.root.value,this,this.schema,this.root.type);let e=this.issues,t=!1;for(let n of e)n.severity==="error"&&(t=!0);if(t)throw new f({resourceType:"OperationOutcome",issue:e});return e}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),ls(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let m=ps(p,s.slicing);m&&u&&(u[m]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ae(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(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=us(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&this.issues.push(se("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(se("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in os)&&!this.isExpressionTrue(o,e,n)){this.issues.push(wr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!ae(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=vr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",m=p+o;for(let g of s)if(g===c||g===u||g===m||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(se("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){let i={"%context":t,"%ucum":x(xr)};this.currentResource.length>0&&(i["%resource"]=x(this.currentResource[this.currentResource.length-1])),O(this.root.value)&&(i["%rootResource"]=this.root);try{let o=A(e.expression,[t],i);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Ar(n,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=ds(e);if(n){let{type:o,value:s}=n;if(!(o in qr)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=qr[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Ut(i.value,this,J("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):cs(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function cs(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function us(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 C(r,o)?n+a:void 0}}function jr(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(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&jr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&jr(i,o,t)}}function ls(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&&!Ie(t,e.pattern)||e.fixed&&!Z(t,e.fixed))}function qt(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 Ie(r,i.pattern);if(i.fixed)return Z(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 ps(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Oe(ge(r,n.path))?.some(i=>qt(i,n,t))))return t.name}}function ds(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 d(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:I(r)?{type:l.Quantity,value:r}:O(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function L(r){return r.length===0?!1:!!r[0].value}function B(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 C(r,e,t){if(!r.value)return;let n=Qe(r.type,e,t?.profileUrl);return n?ti(r,e,n):fs(r,e)}function ti(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let p=c+w(u.code);if(o=n[p],a=n["_"+p],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=ei(o[c],a[c])}else o=ei(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Jn(c,s)):Jn(o,s)}function Jn(r,e){return e==="Resource"&&O(r)&&(e=r.resourceType),{type:e,value:r}}function fs(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+w(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function Ge(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(L($r(t,i))){n=!0;break}n||e.push(t)}return e}function jt(r){return d(!L(r))}function $t(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>L($r(t,e[n]))))}function $r(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):I(t)&&I(n)?d(Hr(t,n)):d(typeof t=="object"&&typeof n=="object"?Qr(r,e):t===n)}function Wt(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(Yn),e.sort(Yn),d(r.every((t,n)=>L(ri(t,e[n])))))}function ri(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?d(Math.abs(s-a)<.01):I(s)&&I(a)?d(Hr(s,a)):d(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Qr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Yn(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 He(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return Wr(t);case"DateTime":return We(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Gr(t);case"Quantity":return I(t);default:return typeof t=="object"&&t?.resourceType===e}}function Wr(r){return typeof r=="string"&&!!$e.date.exec(r)}function We(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function Gr(r){return!!(r&&typeof r=="object"&&("start"in r&&We(r.start)||"end"in r&&We(r.end)))}function ms(r){if(r){if(Wr(r))return{start:Zn(r,"0000-00-00T00:00:00.000Z"),end:Zn(r,"xxxx-12-31T23:59:59.999Z")};if(We(r))return{start:r,end:r};if(Gr(r))return r}}function Zn(r,e){return r+e.substring(r.length)}function I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Hr(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 Qr(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(Xn(o)&&Xn(s)){if(!Qr(o,s))return!1}else if(o!==s)return!1}return!0}function Xn(r){return r!==null&&typeof r=="object"}function ei(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return hs(r??{},e)}return r}function hs(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function X(r){let e=ce(r),t=oi(r);return t===e?{reference:e}:{reference:e,display:t}}function ce(r){return ae(r)?r.reference:`${r.resourceType}/${r.id}`}function xe(r){if(r)return ae(r)?r.reference.split("/")[1]:r.id}function ys(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function ii(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function oi(r){if(ii(r)){let e=gs(r);if(e)return e}if(r.resourceType==="Device"){let e=xs(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return Ke(e)}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]),pi(e))return Ke(e);if(di(e))return e.text}return ce(r)}function gs(r){let e=r.name;if(e&&e.length>0)return Ye(e[0])}function xs(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function vs(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=ni(t);if(n)return n}else return ni(e)}function ni(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Ts(r){return r?new Date(r):void 0}function ze(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c<o||c===o&&u<s)&&p--;let m=a*12+c-(i*12+o);u<s&&m--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:m,days:g}}function Ss(r,e){let{years:t,months:n,days:i}=ze(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 Es(r){let e={};return si(r.item,e),e}function si(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),si(t.item,e)}function bs(r){let e={};return ai(r.item,e),e}function ai(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ai(t.item,e)}function ci(r,e){let t=r.identifier;if(!t)return;let n=Array.isArray(t)?t:[t];for(let i of n)if(i.system===e)return i.value}function Rs(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 Ps(r,...e){let t=Y(r,...e);if(!t)return;let n=C({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Y(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 Kr(r,e){return JSON.stringify(r,Cs,e?2:void 0)}function Cs(r,e){return!ws(r)&&S(e)?void 0:e}function ws(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!$(r):!1}function $(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 Z(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?As(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Os(r,e,t):(E(r)||E(e),!1)}function As(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Z(r[t],e[t]))return!1;return!0}function Os(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Z(o,s,i))return!1}return!0}function Ie(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Is(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?ks(r,e):E(r)||E(e)?!1:r===e}function Is(r,e){return e.every(t=>r.some(n=>Ie(n,t)))}function ks(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ie(r[t],n))}function ue(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Vs(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function E(r){return r!==null&&typeof r=="object"}function zr(r){return r.every(ui)}function ui(r){return typeof r=="string"}function li(r){return E(r)&&"code"in r&&typeof r.code=="string"}function pi(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(li)}function di(r){return E(r)&&"text"in r&&typeof r.text=="string"}var fi=[];for(let r=0;r<256;r++)fi.push(r.toString(16).padStart(2,"0"));function Jr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=fi[e[n]];return t.join("")}function Yr(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function w(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ae(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Ht(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ve(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Gt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ds(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Ms(r,e,t,n){return r.qualifiedInterval?.find(i=>mi(i,e)&&_s(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Ns(r,e,t){return r.qualifiedInterval?.find(n=>mi(n,e)&&t.includes(n.condition))}function mi(r,e){return Fs(r,e)&&Ls(r,e)}function Fs(r,e){return!r.gender||r.gender===e.gender}function Ls(r,e){return!r.age||Zr(ze(e.birthDate).years,r.age)}function _s(r,e,t){return!!r.range&&Zr(e,r.range,t)}function Zr(r,e,t){return(e.low?.value===void 0||yi(r,e.low.value,t))&&(e.high?.value===void 0||hi(r,e.high.value,t))}function Us(r,e){return parseFloat(r.toFixed(e))}function Bs(r,e,t){return j(r,t)===j(e,t)}function qs(r,e,t){return j(r,t)<j(e,t)}function js(r,e,t){return j(r,t)>j(e,t)}function hi(r,e,t){return j(r,t)<=j(e,t)}function yi(r,e,t){return j(r,t)>=j(e,t)}function j(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function $s(r,e,t){return r.find(n=>typeof e=="string"?Gt(n.code||{},t)===e:Gt(n.code||{},t)===Gt(e,t))}function Oe(r){if(r)return Array.isArray(r)?r:[r]}var Qt=r=>new Promise(e=>{setTimeout(e,r)});function Kt(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 Xr(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function Te(r,e){return r?(r.push(e),r):[e]}function Je(r){return r.sort((e,t)=>e.localeCompare(t))}function zt(r){return r.endsWith("/")?r:r+"/"}function gi(r){return r.startsWith("/")?r.slice(1):r}function q(r,e){return new URL(gi(e),zt(r.toString())).toString()}function en(r,e){return q(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function tn(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 xi=/^(([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 Ws(r){return xi.test(r)}function Gs(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 Hs(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[ci(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Qs(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function Ks(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ye(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=ke(r.text);if(n)return n}return t.join(" ").trim()}function zs(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Js(r){return ke(r.family)??""}function Yt(r){return r instanceof Date&&!isNaN(r.getTime())}function Ys(r,e,t){if(!r)return"";let n=new Date(r);return Yt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function vi(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Yt(n)?n.toLocaleTimeString(e,t):""}function Jt(r,e,t){if(!r)return"";let n=new Date(r);return Yt(n)?n.toLocaleString(e,t):""}function Zs(r,e,t){return!r||!r.start&&!r.end?"":Jt(r.start,e,t)+" - "+Jt(r.end,e,t)}var Xs={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ea={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},ta={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ra(r){if(!r)return"";let e=[];return na(e,r.repeat),r.event&&e.push(r.event.map(t=>Jt(t)).join(", ")),w(e.join(" ").trim())}function na(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Xs[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ea[i]):r.push("per "+n+" "+ta[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(w).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>vi(o)).join(", "))}function ia(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=aa(n.value,e),`> ${le(n,e)}`):`>= ${le(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=sa(i.value,e),`< ${le(i,e)}`):`<= ${le(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${le(n,e)} - ${le(i,e)}`)}function le(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function oa(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=ke(r.text);return e||(r.coding?r.coding.map(t=>Ti(t)).join(", "):"")}function Ti(r){return ke(r?.display)??ke(r?.code)??""}function Si(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(le(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=ke(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>Si(t)).join(" / ")),e.join(" / ").trim()}function ke(r){return typeof r=="string"?r:void 0}function sa(r,e,t=1){return(Ei(r,e)+t)*Math.pow(10,-e)}function aa(r,e,t=1){return(Ei(r,e)-t)*Math.pow(10,-e)}function Ei(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function ca(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Zt(t)}}function Zt(r){for(let e of r.base??[]){let t=N.types[e];t||(t={searchParamsDetails:{}},N.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function Mt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Ri((r.base?.path??r.path)?.split(".")):e}function Ri(r){return r.length===1?r[0]:r.map(w).join("")}function _t(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function ua(){return Object.values(Mr()).filter(_t).map(r=>r.name)}function la(r){return N.types[r]?.searchParams}function pa(r,e){return N.types[r]?.searchParams?.[e]}function da(r){let e=r.replaceAll("[x]","").split(".").pop();return Pi(e)}function Pi(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(ma).join(" ").replace("_"," ").replace(/\s+/g," ")}var fa=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function ma(r){let e=r.toUpperCase();return r===e?r:fa.has(e)?e:e.charAt(0)+r.slice(1)}function Qe(r,e,t){let n=we(r,t);if(n)return Ci(n.elements,e)}function Ci(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 O(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ae(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var N={types:{}};function rn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return bi(r.value);case l.CodeableConcept:return r.value.coding?.map(bi).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Ye(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return O(r.value)?X(r.value).reference:JSON.stringify(r)}}function bi(r){return r?`${r.system??""}|${r.code}`:""}function Ve(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 ee=()=>[],k={empty:(r,e)=>d(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>d(e.length!==0),exists:(r,e,t)=>t?d(e.filter(n=>L(t.eval(r,[n]))).length>0):d(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>d(e.every(n=>L(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return d(!0);let n=t.eval(r,Se(r));return n.length===0?d(!1):d(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Se(r));return n.length===0?d(!0):e.length===0?d(!1):d(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:l.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===k.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>L(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:ee,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(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,Se(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,Se(r));return Ge([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r));return[...e,...n]},htmlChecks:(r,e,t)=>[x(!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 L(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(k.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(k.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:Ve(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(k.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:Ve(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(k.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(k.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return I(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(k.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return t==null?[]:I(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(k.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:Ve("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(k.toTime(r,e).length===1),indexOf:(r,e,t)=>_((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>_((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>_((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>_((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>_((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>_(t=>t.toUpperCase(),r,e),lower:(r,e)=>_(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>_((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>_((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>_((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>_(t=>t.length,r,e),toChars:(r,e)=>_(t=>t?t.split(""):void 0,r,e),encode:ee,decode:ee,escape:ee,unescape:ee,trim:ee,split:ee,join:(r,e,t)=>{let n=t?.eval(r,Se(r))[0]?.value??"";if(typeof n!="string")throw new Error("Separator must be a string.");return[{type:l.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>W(Math.abs,r,e),ceiling:(r,e)=>W(Math.ceil,r,e),exp:(r,e)=>W(Math.exp,r,e),floor:(r,e)=>W(Math.floor,r,e),ln:(r,e)=>W(Math.log,r,e),log:(r,e,t)=>W((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>W(Math.pow,r,e,t),round:(r,e)=>W(Math.round,r,e),sqrt:(r,e)=>W(Math.sqrt,r,e),truncate:(r,e)=>W(t=>t|0,r,e),children:ee,descendants:ee,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=k.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=k.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=ze(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof U?n=t.name:t instanceof te&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:He(i,n)})):[]},not:(r,e)=>k.toBoolean(r,e).map(t=>({type:l.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 x(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:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:O(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.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:l.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:l.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof U&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:l.id,value:xe(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=Y(i,n);if(o)return[{type:l.Extension,value:o}]}return[]}};function _(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function W(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1),o=I(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function G(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 Se(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Ze=class{constructor(e,t){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()}},F=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},U=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return O(t)&&t.resourceType===this.name?e:C(e,this.name)}toString(){return this.name}},Xe=class{eval(){return[]}toString(){return"{}"}},et=class extends Ue{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},pe=class extends z{constructor(e,t){super("as",e,t)}eval(e,t){return k.ofType(e,this.left.eval(e,t),this.right)}},P=class extends z{},V=class extends P{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=I(s)?s.value:s,u=I(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?d(p):I(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},tt=class extends z{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:l.string,value:o.map(s=>s.value).join("")}]:o}},rt=class extends P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},nt=class extends P{constructor(e,t){super("in",e,t)}eval(e,t){let n=B(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},te=class extends z{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Ee=class extends z{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ge([...n,...i])}},it=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $t(n,i)}},ot=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jt($t(n,i))}},st=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Wt(n,i)}},at=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jt(Wt(n,i))}},de=class extends P{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(He(n[0],i))}},ct=class extends P{constructor(e,t){super("and",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},ut=class extends P{constructor(e,t){super("or",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},lt=class extends P{constructor(e,t){super("xor",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},pt=class extends P{constructor(e,t){super("implies",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},H=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=k[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(", ")})`}},fe=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var ha=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],re=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
2
+ `))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;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()===" "&&ya(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
3
+ `?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function ya(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&ha.includes(r.value)))}var dt=["true","false"],ft=["!=","!~","<=",">=","{}","->"];function wi(r){return new re(r,dt,ft).tokenize()}var y={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},ga={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},xa={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new fe(e,t)},precedence:y.Indexer},va={parse(r,e){if(!(e instanceof U))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new H(e.name,t)},precedence:y.FunctionCall};function Ta(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function De(){return new Be().registerPrefix("String",{parse:(r,e)=>new F({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new F({type:l.dateTime,value:Ve(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new F({type:l.Quantity,value:Ta(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new F({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new F({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new F({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new U(e.value)}).registerPrefix("{}",{parse:()=>new Xe}).registerPrefix("(",ga).registerInfix("[",xa).registerInfix("(",va).prefix("+",y.UnaryAdd,(r,e)=>new et("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new V("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new te(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new V("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new V("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new V("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new V("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Ee(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new it(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new ot(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new st(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new at(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new V("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new V("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new V(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new V(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new tt(r,t)).infixLeft("and",y.And,(r,e,t)=>new ct(r,t)).infixLeft("as",y.As,(r,e,t)=>new pe(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new rt(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new V("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new nt(r,t)).infixLeft("is",y.Is,(r,e,t)=>new de(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new V("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new ut(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new lt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new pt(r,t))}var Sa=De();function Xt(r){return new Ze(r,Sa.construct(wi(r)).consumeAndParse())}function be(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]=x(t[n]))}return A(r,t).map(n=>n.value)}function A(r,e,t={}){return Xt(r).eval({variables:t},e).map(i=>({type:i.type,value:i.value?.valueOf()}))}var on=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(on||{});function er(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=ba(r,e)),t}function Ea(r,e,t){let n=N.types[r];n||(n={},N.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function ba(r,e){let t=e.code,n=Ca(t),i=sn(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=mt(a),u=Xr(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Ai(o,mt(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:wa(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Ea(r,t,s),s}function Ai(r,e,t,n){let i=e[n];if(i instanceof pe){r.propertyTypes.add(i.right.toString());return}if(i instanceof H){Ra(r,i);return}let o=i.toString(),s=Qe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof fe&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;Pa(p)&&(p=s.type[0].code),Ai(r,e,p,c)}}function Ra(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof de){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Pa(r){return r==="Element"||r==="BackboneElement"}function Ca(r){return r.split("-").reduce((e,t,n)=>e+(n?w(t):t),"")}function wa(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function sn(r,e){let t=[],n=Xt(e);return nn(r,n.child,t),t}function Aa(r,e){let t=sn(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function nn(r,e,t){e instanceof Ee?(nn(r,e.left,t),nn(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function mt(r){if(r instanceof pe||r instanceof fe)return[mt(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof te)return[mt(r.left),mt(r.right)].flat();if(r instanceof H){if(r.name==="where"&&!(r.args[0]instanceof de))return[];if(r.name==="last")return[]}return[r]}var Oa=20,an=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(an||{}),ki={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},cn={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ne(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 c of a)o.push([s,c]);else o.push([s,a??""]);return Da(i,o)}function Ia(r){return ne(r)}function ka(r){return ne(r)}function Va(r){return ne(r)}function Da(r,e){let t={resourceType:r};for(let[n,i]of e)Ma(t,n,i);return t}function Ma(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=Te(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Na(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Oi(t);i==="iterate"&&(s.modifier="iterate"),r.include=Te(r.include,s);break}case"_revinclude":{let s=Oi(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=Te(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=N.types[r.resourceType]?.searchParams?.[n];s?r.filters=Te(r.filters,Vi(s,i,t)):r.filters=Te(r.filters,_a(n,i,t))}}}}function Na(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Vi(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Fa(r,t);case"reference":case"string":case"token":case"uri":return La(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Fa(r,e){let{operator:t,value:n}=Ua(e);return{code:r.code,operator:t,value:n}}function La(r,e,t){return{code:r.code,operator:Ba(e),value:t}}function _a(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in cn&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ua(r){let e=r.substring(0,2),t=cn[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ba(r){return ki[r]??"eq"}function Oi(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}'`))}var qa=/{{([^{}]+)}}/g;function ja(r,e){return r=r.replaceAll(qa,(t,n)=>{let i=A(n,[],e);return i.length!==1?"":rn(i[0])}),ne(r)}function $a(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Wa(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ga(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(Ii("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Ii("_revinclude",t))),e.length===0?"":(Je(e),"?"+e.join("&"))}function Wa(r){let e=r.operator in ki?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in cn?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ga(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Ii(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function ht(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 yt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Ha(r,e,t))return!1}return!0}function Ha(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return Qa(r,t,n);switch(n.type){case"reference":return Ka(r,t,n);case"string":case"uri":return Di(r,t,n);case"token":return za(r,t,n);case"date":return Xa(r,t,n);default:return!1}}function Qa(r,e,t){let i=be(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function Ka(r,e,t){let n=be(t.expression,r),i=tr(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of ht(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function za(r,e,t){return er(r.resourceType,t).type==="BOOLEAN"?Ja(r,e,t):Di(r,e,t,!0)}function Ja(r,e,t){let n=be(t.expression,r),i=e.value==="true",o=n.includes(i);return tr(e.operator)?!o:o}function Di(r,e,t,n){let o=er(r.resourceType,t).elementDefinitions?.[0]?.type?.[0]?.code,s=be(t.expression,r),a=ht(e.value),c=tr(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=Ya(u,e.operator,p):o===l.CodeableConcept?m=Za(u,e.operator,p):m=un(u,e.operator,p,n),m)return!c}return c}function un(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return un(r,e,o,!1)&&(!s||un(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function Ya(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function Za(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function Xa(r,e,t){let n=be(t.expression,r),i=ht(e.value),o=tr(e.operator);for(let s of n)for(let a of i)if(ec(s,e.operator,a))return!o;return o}function ec(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function tr(r){return r==="ne"||r==="not"}var tc={resourceType:"*"},Mi=["DomainConfiguration","JsonWebKey","Login"],Ni=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],Fi=(b=>(b.READ="read",b.VREAD="vread",b.UPDATE="update",b.PATCH="patch",b.DELETE="delete",b.HISTORY="history",b.HISTORY_INSTANCE="history-instance",b.HISTORY_TYPE="history-type",b.HISTORY_SYSTEM="history-system",b.CREATE="create",b.SEARCH="search",b.SEARCH_TYPE="search-type",b.SEARCH_SYSTEM="search-system",b.SEARCH_COMPARTMENT="search-compartment",b.CAPABILITIES="capabilities",b.TRANSACTION="transaction",b.BATCH="batch",b.OPERATION="operation",b))(Fi||{}),rc=["read","vread","history","history-instance"];function nc(r,e){if(r.resource){for(let t of r.resource)if(ln(t.resourceType,e))return!0}return!1}function Li(r,e){if(Mi.includes(e))return!1;if(r.resource){for(let t of r.resource)if(ln(t.resourceType,e)&&!t.readonly)return!0}return!1}function ic(r,e){let t=e.resourceType;return Li(r,t)?_i(r,e,!1):!1}function _i(r,e,t){if(r.resource){for(let n of r.resource)if(Ui(e,t?"read":"update",n))return!0}return!1}function oc(r,e,t){if(!t)return tc;if(t.resource){for(let n of t.resource)if(Ui(r,e,n))return n}}function Ui(r,e,t){let n=r.resourceType;return!(!ln(t.resourceType,n)||t.readonly&&!rc.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!yt(r,ne(t.criteria)))}function ln(r,e){return r===e||r==="*"&&!Ni.includes(e)}function pn(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function dn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function rr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Jr(r.buffer)}async function fn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function me(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Bi(r){let e={};r=ue(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=me(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>sc(i,o,e),2);return qi(JSON.parse(n))}function sc(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 qi(r){let e=cc(r),{sorted:t,cycles:n}=ac(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function ac(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function ji(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ae(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else ji(n,e)}}function cc(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&ji(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function uc(r){r=ue(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=me());return Bi(e)}var gt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var D={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var nr=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},Q=class{constructor(){this.emitter=new nr}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()}};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"},Wi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],or=["DiagnosticReport-update"];function mn(r){return or.includes(r)}function hn(r){if(or.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var Gi={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Hi(r){return Wi.includes(r)}function yn(r){return!!r.endpoint}function sr(r){if(!vt(r))throw new f(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return yn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function vt(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!(yn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function $i(r,e,t,n){if(typeof e!="object")throw new f(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Hi(e.resourceType))throw new f(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function lc(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)$i(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)$i(r,s,t,n)}}function pc(r,e){let t=new Map,n=Gi[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));lc(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function ar(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!ir[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(ir).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(or.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return pc(e,i),{timestamp:new Date().toISOString(),id:me(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var xt=class extends Q{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!vt(e))throw new f(h("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function dc(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=pn(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function gn(r){return r.split(".").length===3}function Tt(r){let[e,t,n]=r.split(".");return dc(t)}function xn(r){try{return typeof Tt(r).login_id=="string"}catch{return!1}}function vn(r){try{let t=Tt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var St=class{constructor(e){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,D.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Qi;Qi=Symbol.toStringTag;var M=class{constructor(e){this[Qi]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var Me=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new cr)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Kr(t):void 0)}},cr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Tn=class extends Me{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var ur=class extends Q{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Ne=class extends Q{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Sn=class{constructor(e,t){this.criteria=e,this.emitter=new Ne(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}},Et=class{constructor(e,t,n){if(!(e instanceof bt))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new ur(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Ne,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(xe(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}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(Pr(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.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e.subscriptionId}};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(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 ${ce(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(h("Failed to get token"));if(!o)throw new f(h("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(Z(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 c=a.subscriptionProps;return!Z(n,c)}):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.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}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 Sn(e,t);return this.addCriteriaEntry(i),this.getTokenForCriteria(i).then(([o,s])=>{i.subscriptionId=o,i.token=s,this.criteriaEntriesBySubscriptionId.set(o,i),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:s}}))}).catch(o=>{console.error(o.message),this.emitError(i,o),this.removeCriteriaEntry(i)}),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))}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Ne(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function fc({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!mc(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=ne(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Ki(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=Y(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):yt(r,s)}function mc(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 Ki(r,e,t){let n=Y(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})};return A(n.valueString,[x(e)],o)?.[0]?.value===!0}var hc="3.2.0-3522d7375",yc="medplum-cli",Zi=D.FHIR_JSON+", */*; q=0.1",gc="https://api.medplum.com/",xc=1e3,vc=6e4,Tc=0,Sc="Binary/",zi={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Xi=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(Xi||{}),eo=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(eo||{}),to=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(to||{}),ro=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(ro||{}),bt=class extends Q{constructor(t){super();this.initComplete=!0;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??Ec(),this.storage=t?.storage??new Me,this.createPdfImpl=t?.createPdf,this.baseUrl=zt(t?.baseUrl??gc),this.fhirBaseUrl=q(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=q(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=q(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=q(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?Tc:vc),this.cacheTime>0?this.requestCache=new gt(t?.resourceCacheSize??xc):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}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),typeof window<"u"&&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=q(this.fhirBaseUrl,t);if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new M(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,D.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(q(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=tn(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 c=new M((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M(this.search(t,n,i).then(En));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield En(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return zi;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new M(Promise.reject(new Error("Missing reference")));if(i==="system")return new M(Promise.resolve(zi));let[o,s]=i.split("/");return!o||!s?new M(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Nr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new M((async()=>{let s=`{
4
4
  StructureDefinitionList(name: "${t}") {
5
5
  resourceType,
6
6
  name,
@@ -39,6 +39,6 @@
39
39
  expression,
40
40
  target
41
41
  }
42
- }`.replace(/\s+/g," "),a=await this.graphql(s);Lt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)Zt(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Nr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new V((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return Sn(c).map(u=>(_t(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(Lt([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=En(t,n,i,o),c=s??(typeof n=="object"?n:{}),u=await this.createBinary(a,c);return{contentType:a.contentType,url:u.url,title:a.filename}}createBinary(t,n,i,o,s){let a=En(t,n,i,o),c=s??(typeof n=="object"?n:{}),{data:u,contentType:p,filename:m,securityContext:g,onProgress:Q}=a,_e=this.fhirUrl("Binary");return m&&_e.searchParams.set("_filename",m),g?.reference&&this.setRequestHeader(c,"X-Security-Context",g.reference),Q?this.uploadwithProgress(_e,u,p,Q,c):this.post(_e,u,p,c)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let m=g=>{s?.signal?.removeEventListener("abort",p),g instanceof Error?c(g):a(g)};if(u.responseType="json",u.onabort=()=>m(new Error("Request aborted")),u.onerror=()=>m(new Error("Request error")),o&&(u.upload.onprogress=g=>o(g),u.upload.onload=g=>o(g)),u.onload=()=>{u.status>=200&&u.status<300?m(u.response):m(new f(qe(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),s?.headers){let g=s.headers;for(let[Q,_e]of Object.entries(g))u.setRequestHeader(Q,_e)}u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=eo(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:c,tableLayouts:u,fonts:p,...m}=s,g=await this.createPdfImpl(c,u,p),Q={...m,data:g,contentType:"application/pdf"};return this.createBinary(Q,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=Y(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=Y(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[Y(t)],encounter:s,subject:a,sender:o?Y(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),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,k.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},k.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",ze(t),"$push"),{destination:typeof n=="string"?n:oe(n),body:i,contentType:o,waitForResponse:s},k.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||oe(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=xn(t),this.medplumServer=gn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(yc)&&(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=Y(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 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 Et(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new V(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new f(Er);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await Ki(s,u);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let m=await Ki(s,u)??o.statusUrl;if(m)return this.pollStatus(m,i,o)}if(s.status>=400)throw new f(qe(u));return u}async parseBody(t,n){let i;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=B(this.baseUrl,t));let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await Qt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers;for(let o of Ye(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}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 Qt(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,B(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(qe(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&&!Mt(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){this.setRequestHeader(t,"X-Medplum","extended"),this.setRequestHeader(t,"Accept",zi,!0),t.body&&this.setRequestHeader(t,"Content-Type",k.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}setRequestHeader(t,n,i,o=!1){t.headers||(t.headers={});let s=t.headers;o&&s[n]||(s[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))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clear(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=rr();sessionStorage.setItem("pkceState",t);let n=rr();sessionStorage.setItem("codeVerifier",n);let i=await dn(n),o=Jr(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??Qi()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??Qi()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=pn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",or(i),k.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Tt(t))throw new f(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",or(t),k.FORM_URL_ENCODED)}fhircastConnect(t){return new vt(t)}async fhircastPublish(t,n,i,o){return fn(n)?this.post(`/fhircast/STU3/${t}`,sr(t,n,i,o),k.JSON):(mn(n),this.post(`/fhircast/STU3/${t}`,sr(t,n,i),k.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":k.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new f(R(a.error_description))}catch(a){throw new f(R("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(yn(n)){let i=St(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new bt(this,Xr(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 gc(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Qi(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}async function Ki(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(me(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Sn(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function xc(r){return E(r)&&"data"in r&&"contentType"in r}function En(r,e,t,n){return xc(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function vc(r){return E(r)&&"docDefinition"in r}function eo(r,e,t,n){return vc(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}var Tc={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function lr({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=Sc(e,t,r,!!i),a=Kt(e,".",2)[1];s=Ec(s,o,a),s=bc(s,o,a);let c=Object.create(null);for(let[p,m]of Object.entries(s))c[e+"."+p]=m;let u;if(r&&!r.isDefaultContext)u=r.getExtendedProps;else{let p=Object.create(null);u=m=>{let g=Kt(m,".",2)[1];if(g){if(!p[g]){let Q=ur(g,o?.hiddenFields);p[g]={hidden:Q,readonly:Q||ur(g,o?.readonlyFields)}}return p[g]}}}return{path:e,elements:s,elementsByPath:c,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:u,accessPolicyResource:o}}function Sc(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=ge(r,s);c!==void 0&&(i[c]=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 Ec(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!ur(n+i,e.hiddenFields)))}function bc(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))ur(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function ur(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 bn(r){return r.type!==void 0&&r.type.length>0}function Rc(r,e,t,n){let i=ye(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>qt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Rn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>Rc(o,s,i,i.typeSchema?.url??n)))return i.name}}var Ne=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=lr({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[this.elementsContextStack.length-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(!$(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=Pc(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);$(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(!bn(o))continue;let s=o.type.find(a=>$(a.profile))?.profile?.[0];if($(s)){let a=Fr(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;$(s)&&(o=lr({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 Pc(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:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var pr="__sliceName";function Cc(r,e){let t=new Pt(r,r.resourceType,"resource");return new Ne(e,t).crawlResource(),t.getDefaultValue()}function wc(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Ct(r,n,i,e);continue}let o=ge(t,n);o!==void 0&&Ct(r,o,i,e)}return r}function Ac(r,e,t,n,i){let o=r??Object.create(null),[s,a]=kc(e,"."),c=Object.create(null);dr(c,o,a,t);let u=new Pt(c,s,"element");new Ne(i,u,n).crawlElement(t,a,s);let m=u.getDefaultValue();return fr(m,a,t,n)}function Oc(r,e,t,n){let i=new Pt([{[pr]:e.name}],e.path,"element");return new Ne(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Pt=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=se(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-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=ge(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){Ic(p,s,t,n.elements),Ct(p,s,t,n.elements);let m=fr(p,s,t,n.elements);m!==void 0&&a.push(m)}}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=ge(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=fr(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];$(u)||a.splice(c,1)}S(a)&&dr(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[pr]??Rn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Ht(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];pr in i&&delete i[pr]}}getDefaultValue(){return this.rootValue}};function Ic(r,e,t,n){let i=fr(r,e,t,n);t.min>0&&i===void 0&&Ht(t.type[0].code)&&(t.isArray?dr(r,[Object.create(null)],e,t):dr(r,Object.create(null),e,t))}function dr(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]",C(o))}e===void 0?delete r[i]:r[i]=e}function fr(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let p=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(E(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Ct(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Ct(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 c=o[a];if(c.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let p of u)t.fixed?p[c]??=t.fixed.value:t.pattern&&(p[c]=to(p[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function to(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:se(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=se(r)??Object.create(null);for(let n of Object.keys(e))t[n]=to(t[n],e[n]);return t}return r}function kc(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function Pn(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Vc(e);if(me(t))throw new f(t);let n=Mc(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 Vc(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?R("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?Dc(r.codeableConcept):r.code||r.coding||r.codeableConcept?R("Ambiguous input: multiple source codings provided"):R("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function Dc(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function Mc(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(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Nc(i,o)),s&&t.push(...s)}return t}function Nc(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 Fc=[...mt,"->","<<",">>","=="];function ro(r){return new ee(r,ft,Fc).tokenize()}var Lc={"-":"disjoint","==":"equal"},Cn=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){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(y.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(y.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(y.As);t instanceof H?(e.transform=t.name,e.parameter=t.args?.map(no)):t instanceof M||t instanceof q?(e.transform="copy",e.parameter=[no(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(y.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=Lc[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(m=>m.source===i&&m.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function no(r){if(r instanceof q)return{valueId:r.name};if(r instanceof M)return _c(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function _c(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 Uc=ke().registerInfix("->",{precedence:y.Arrow}).registerInfix(";",{precedence:y.Semicolon});function Bc(r){let e=Uc.construct(ro(r));return e.removeComments(),new Cn(e).parse()}function qc(r,e,t){return jc({root:r,loader:t},r,e)}function jc(r,e,t){return $c(r,e),so(r,e),ao(r,e.group[0],t)}function $c(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)so(r,i)}}function so(r,e){if(e.group)for(let t of e.group)wn(r,t.name,{type:"StructureMapGroup",value:t})}function ao(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);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 u of n)wt(o,u.name,t[a++]);for(let u of i){let p=t[a++]??x({});wt(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)co(c,u);return s}function co(r,e){e.source&&uo(r,e,0)}function uo(r,e,t){let n=e.source[t];for(let i of Gc(r,n))n.variable&&wn(r,n.variable,i),t<e.source.length-1?uo(r,e,t+1):Wc(r,e)}function Wc(r,e){if(e.target)for(let t of e.target)Qc(r,t);if(e.rule)for(let t of e.rule)co(r,t);if(e.dependent)for(let t of e.dependent)tu(r,t)}function Gc(r,e){let t=Fe(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=F(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!io(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!io(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Hc(e,i)),i}function io(r,e,t){return L(F(t,[r],e))}function Hc(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-1]];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function Qc(r,e){let t=Fe(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Kc(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=zc(r,e);break;case"copy":i=Jc(r,e);break;case"create":i=Yc(r,e);break;case"evaluate":i=Zc(r,e);break;case"translate":i=Xc(r,e);break;case"truncate":i=eu(r,e);break;case"uuid":i=[{type:"string",value:pe()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=lo(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:x({})]:i=[a?{type:a,value:n}:x(n)]}if(i.length!==0){if(o){n||(n=[],wt(t.value,e.element,n));for(let s of i)n.push(s.value)}else wt(t.value,e.element,i[0].value);e.variable&&wn(r,e.variable,ru(i))}}function Kc(r,e){return lo(r,e)?.isArray}function lo(r,e){return Pe(r.type)?.elements?.[e]}function zc(r,e){let t=fe(r,e.parameter?.[0])?.[0]?.value,n=fe(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Jc(r,e){return e.parameter.flatMap(t=>fe(r,t))}function Yc(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=fe(r,e.parameter?.[0])?.[0]?.value),[x(t)]}function Zc(r,e){let n=fe(r,e.parameter?.[0])[0].value;return F(n,[],po(r))}function Xc(r,e){let t=e.parameter.flatMap(a=>fe(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Pn(o,{system:o.group?.[0]?.source,code:n});return[x(s.match?.[0]?.concept?.code)]}function eu(r,e){let t=fe(r,e.parameter?.[0])?.[0],n=fe(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function tu(r,e){let t=Fe(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=Fe(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};ao(o,t.value,i)}function fe(r,e){let n=w({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=oo(n),n.length===1&&n[0].type==="id"){let i=Fe(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return oo(i)}return n}function Fe(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Fe(r.parent,e)}function po(r,e={}){if(r.parent&&po(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function wn(r,e,t){r.variables||(r.variables={}),wt(r.variables,e,t)}function wt(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function oo(r){return Array.isArray(r)?r:[r]}function ru(r){return r.length===1?r[0]:r}var nu=[...mt,"eq","ne","co"];function fo(r){return new ee(r,ft,nu,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var At=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},Ot=class{constructor(e){this.child=e}},It=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var iu={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"present",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function ou(r){let e=iu[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var An=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new Ot(this.parse()),this.parser.consume(")")):e=new At(this.parser.consume("Symbol").value,ou(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 It(t,e,this.parse())):e}},su=ke();function au(r){let e=su.construct(fo(r));return e.removeComments(),new An(e).parse()}var re=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},On=class r{constructor(e,t=new re){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new Le(["MSH",this.context.getMsh2(),o,s,n,i,mo(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new Le(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new re("\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=>Le.parse(n,t)),t)}},Le=class r{constructor(e,t=new re){this.context=t,Kr(e)?this.fields=e.map(n=>be.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 be([[this.context.getMsh1()]],this.context);if(e===2)return new be([[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 re){return new r(e.split(t.fieldSeparator).map(n=>be.parse(n,t)),t)}},be=class r{constructor(e,t=new re){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 re){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function cu(r,e){if(!r)return;let t=Ee(r.slice(0,4),0),n=Ee(r.slice(4,6),1)-1,i=Ee(r.slice(6,8),1),o=Ee(r.slice(8,10),0),s=Ee(r.slice(10,12),0),a=Ee(r.slice(12,14),0),c=0;r.includes(".")&&(c=Ee(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=uu(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function Ee(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function uu(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function mo(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var mr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(mr||{}),In=class r{constructor(e,t={},n=3,i){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(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
43
- `)}),this.write(JSON.stringify({level:mr[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...n,...this.metadata})))}};function lu(r){let e=mr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function pu(r){if(!r)throw new f(h("Resource type is null"));if(!Mr(r))throw new f(h("Unknown resource type"))}function kn(r,e,t){r===null?t.push(v(e,"Invalid null value")):Array.isArray(r)?du(r,e,t):typeof r=="object"&&fu(r,e,t)}function du(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(v(`${e}[${n}]`,"Invalid undefined value")):kn(r[n],`${e}[${n}]`,t)}function fu(r,e,t){for(let[n,i]of Object.entries(r))kn(i,`${e}${e?".":""}${n}`,t)}function mu(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()})})}0&&(module.exports={AccessPolicyInteraction,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_ACCEPT,DEFAULT_SEARCH_COUNT,DotAtom,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FunctionAtom,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,Logger,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_VERSION,MedplumClient,MedplumKeyValueClient,MemoryStorage,MockAsyncClientStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,RobustWebSocket,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,addProfileToResource,allOk,append,applyDefaultValuesToElement,applyDefaultValuesToElementWithVisitor,applyDefaultValuesToResource,applyFixedOrPatternValue,arrayBufferToBase64,arrayBufferToHex,arrayify,assertContextVersionOptional,assertOk,badRequest,booleanToTypedValue,buildElementsContext,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,concatUrls,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,evalFhirPath,evalFhirPathTyped,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,findObservationInterval,findObservationReferenceRange,findResourceByCode,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatSearchQuery,formatTime,formatTiming,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPathDifference,getPathDisplayName,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getValueSliceName,getWebSocketUrl,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isUUID,isValidDate,isValidHostname,lazy,loadDataType,mapByIdentifier,matchDiscriminant,matchesAccessPolicy,matchesRange,matchesSearchRequest,multipleMatches,normalizeCreateBinaryOptions,normalizeCreatePdfOptions,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseCriteriaAsSearchRequest,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseLogLevel,parseMappingLanguage,parseParameter,parseReference,parseSearchDefinition,parseSearchRequest,parseSearchUrl,parseStructureDefinition,parseXFhirQuery,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,preconditionFailed,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,removeProfileFromResource,reorderBundle,resolveId,resourceMatchesSubscriptionCriteria,satisfiedAccessPolicy,serializeFhircastSubscriptionRequest,serverError,setCodeBySystem,setIdentifier,singleton,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,toJsBoolean,toPeriod,toTypedValue,tooManyRequests,tryGetDataType,tryGetJwtExpiration,tryGetProfile,unauthorized,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validationError,validationRegexes});
42
+ }`.replace(/\s+/g," "),a=await this.graphql(s);Ft(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)Zt(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Lr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new M((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return En(c).map(u=>(Lt(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(Ft([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=bn(t,n,i,o),c=s??(typeof n=="object"?n:{}),u=await this.createBinary(a,c);return{contentType:a.contentType,url:u.url,title:a.filename}}createBinary(t,n,i,o,s){let a=bn(t,n,i,o),c=s??(typeof n=="object"?n:{}),{data:u,contentType:p,filename:m,securityContext:g,onProgress:K}=a,_e=this.fhirUrl("Binary");return m&&_e.searchParams.set("_filename",m),g?.reference&&this.setRequestHeader(c,"X-Security-Context",g.reference),K?this.uploadwithProgress(_e,u,p,K,c):this.post(_e,u,p,c)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let m=g=>{s?.signal?.removeEventListener("abort",p),g instanceof Error?c(g):a(g)};if(u.responseType="json",u.onabort=()=>m(new Error("Request aborted")),u.onerror=()=>m(new Error("Request error")),o&&(u.upload.onprogress=g=>o(g),u.upload.onload=g=>o(g)),u.onload=()=>{u.status>=200&&u.status<300?m(u.response):m(new f(qe(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),s?.headers){let g=s.headers;for(let[K,_e]of Object.entries(g))u.setRequestHeader(K,_e)}u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=no(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:c,tableLayouts:u,fonts:p,...m}=s,g=await this.createPdfImpl(c,u,p),K={...m,data:g,contentType:"application/pdf"};return this.createBinary(K,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=X(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=X(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[X(t)],encounter:s,subject:a,sender:o?X(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),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,D.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},D.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",xe(t),"$push"),{destination:typeof n=="string"?n:ce(n),body:i,contentType:o,waitForResponse:s},D.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||ce(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=vn(t),this.medplumServer=xn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.dispatchEvent({type:"profileRefreshing"}),this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),this.dispatchEvent({type:"profileRefreshed"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Sc)&&(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=X(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 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 St(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new M(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new f(Rr);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await Yi(s,u);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let m=await Yi(s,u)??o.statusUrl;if(m)return this.pollStatus(m,i,o)}if(s.status>=400)throw new f(qe(u));return u}async parseBody(t,n){let i;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=q(this.baseUrl,t));let i=n?.maxRetries??2,o=200;for(let s=0;s<=i;s++){try{this.options.verbose&&this.logRequest(t,n);let a=await this.fetch(t,n);if(this.options.verbose&&this.logResponse(a),a.status<500||s===i)return a}catch(a){if(a.message==="Failed to fetch"&&s===0&&this.dispatchEvent({type:"offline"}),a.name==="AbortError"||s===i)throw a}await Qt(o)}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers;for(let o of Je(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}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 Qt(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,q(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(qe(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&&!Dt(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){this.setRequestHeader(t,"X-Medplum","extended"),this.setRequestHeader(t,"Accept",Zi,!0),t.body&&this.setRequestHeader(t,"Content-Type",D.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}setRequestHeader(t,n,i,o=!1){t.headers||(t.headers={});let s=t.headers;o&&s[n]||(s[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))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clear(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=rr();sessionStorage.setItem("pkceState",t);let n=rr();sessionStorage.setItem("codeVerifier",n);let i=await fn(n),o=Yr(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??Ji()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??Ji()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=dn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",sr(i),D.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!vt(t))throw new f(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",sr(t),D.FORM_URL_ENCODED)}fhircastConnect(t){return new xt(t)}async fhircastPublish(t,n,i,o){return mn(n)?this.post(`/fhircast/STU3/${t}`,ar(t,n,i,o),D.JSON):(hn(n),this.post(`/fhircast/STU3/${t}`,ar(t,n,i),D.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":D.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new f(R(a.error_description))}catch(a){throw new f(R("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(gn(n)){let i=Tt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Et(this,en(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 Ec(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Ji(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}async function Yi(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(ye(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function En(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function bc(r){return E(r)&&"data"in r&&"contentType"in r}function bn(r,e,t,n){return bc(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function Rc(r){return E(r)&&"docDefinition"in r}function no(r,e,t,n){return Rc(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}var Pc={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function pr({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=Cc(e,t,r,!!i),a=Kt(e,".",2)[1];s=wc(s,o,a),s=Ac(s,o,a);let c=Object.create(null);for(let[p,m]of Object.entries(s))c[e+"."+p]=m;let u;if(r&&!r.isDefaultContext)u=r.getExtendedProps;else{let p=Object.create(null);u=m=>{let g=Kt(m,".",2)[1];if(g){if(!p[g]){let K=lr(g,o?.hiddenFields);p[g]={hidden:K,readonly:K||lr(g,o?.readonlyFields)}}return p[g]}}}return{path:e,elements:s,elementsByPath:c,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:u,accessPolicyResource:o}}function Cc(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=ve(r,s);c!==void 0&&(i[c]=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 wc(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!lr(n+i,e.hiddenFields)))}function Ac(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))lr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function lr(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function Rn(r){return r.type!==void 0&&r.type.length>0}function Oc(r,e,t,n){let i=ge(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>qt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Pn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>Oc(o,s,i,i.typeSchema?.url??n)))return i.name}}var Fe=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=pr({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[this.elementsContextStack.length-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(!$(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=Ic(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);$(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(!Rn(o))continue;let s=o.type.find(a=>$(a.profile))?.profile?.[0];if($(s)){let a=_r(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;$(s)&&(o=pr({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 Ic(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:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var dr="__sliceName";function kc(r,e){let t=new Rt(r,r.resourceType,"resource");return new Fe(e,t).crawlResource(),t.getDefaultValue()}function Vc(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Pt(r,n,i,e);continue}let o=ve(t,n);o!==void 0&&Pt(r,o,i,e)}return r}function Dc(r,e,t,n,i){let o=r??Object.create(null),[s,a]=Fc(e,"."),c=Object.create(null);fr(c,o,a,t);let u=new Rt(c,s,"element");new Fe(i,u,n).crawlElement(t,a,s);let m=u.getDefaultValue();return mr(m,a,t,n)}function Mc(r,e,t,n){let i=new Rt([{[dr]:e.name}],e.path,"element");return new Fe(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Rt=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=ue(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-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=ve(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){Nc(p,s,t,n.elements),Pt(p,s,t,n.elements);let m=mr(p,s,t,n.elements);m!==void 0&&a.push(m)}}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=ve(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=mr(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];$(u)||a.splice(c,1)}S(a)&&fr(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[dr]??Pn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Ht(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];dr in i&&delete i[dr]}}getDefaultValue(){return this.rootValue}};function Nc(r,e,t,n){let i=mr(r,e,t,n);t.min>0&&i===void 0&&Ht(t.type[0].code)&&(t.isArray?fr(r,[Object.create(null)],e,t):fr(r,Object.create(null),e,t))}function fr(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]",w(o))}e===void 0?delete r[i]:r[i]=e}function mr(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let p=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",w(p))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(E(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Pt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Pt(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 c=o[a];if(c.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",w(p))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let p of u)t.fixed?p[c]??=t.fixed.value:t.pattern&&(p[c]=io(p[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function io(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:ue(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=ue(r)??Object.create(null);for(let n of Object.keys(e))t[n]=io(t[n],e[n]);return t}return r}function Fc(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function Cn(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Lc(e);if(ye(t))throw new f(t);let n=Uc(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 Lc(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?R("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?_c(r.codeableConcept):r.code||r.coding||r.codeableConcept?R("Ambiguous input: multiple source codings provided"):R("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function _c(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function Uc(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(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Bc(i,o)),s&&t.push(...s)}return t}function Bc(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 qc=[...ft,"->","<<",">>","=="];function oo(r){return new re(r,dt,qc).tokenize()}var jc={"-":"disjoint","==":"equal"},wn=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){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(y.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(y.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(y.As);t instanceof H?(e.transform=t.name,e.parameter=t.args?.map(so)):t instanceof F||t instanceof U?(e.transform="copy",e.parameter=[so(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(y.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=jc[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(m=>m.source===i&&m.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function so(r){if(r instanceof U)return{valueId:r.name};if(r instanceof F)return $c(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function $c(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 Wc=De().registerInfix("->",{precedence:y.Arrow}).registerInfix(";",{precedence:y.Semicolon});function Gc(r){let e=Wc.construct(oo(r));return e.removeComments(),new wn(e).parse()}function Hc(r,e,t){return Qc({root:r,loader:t},r,e)}function Qc(r,e,t){return Kc(r,e),co(r,e),On(r,e.group[0],t)}function Kc(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)co(r,i)}}function co(r,e){if(e.group)for(let t of e.group)hr(r,t.name,{type:"StructureMapGroup",value:t})}function On(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);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 u of n)Ct(o,u.name,t[a++]);for(let u of i){let p=t[a++]??{type:u.type??"BackboneElement",value:{}};Ct(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)uo(c,u);return s}function uo(r,e){e.source&&lo(r,e,0)}function lo(r,e,t){let n=e.source[t];for(let i of Zc(r,n))hr(r,"_",i),n.variable&&hr(r,n.variable,i),t<e.source.length-1?lo(r,e,t+1):zc(r,e)}function zc(r,e){if(!Jc(r,e)){if(e.target)for(let t of e.target)po(r,t);if(e.rule)for(let t of e.rule)uo(r,t);if(e.dependent)for(let t of e.dependent)su(r,t)}}function Jc(r,e){if(!e.target||e.target.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let t=ie(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return!1;let n=Yc(r,e);if(!n)return po(r,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=ie(r,i.context),s=o.value[i.element],a=mo(o,i.element)||Array.isArray(s),c={root:r.root,parent:r,variables:{}},u=On(c,n,[t]);return fo(r,i,o,u,a,s),!0}function Yc(r,e){let t=ie(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return;let n=t.type;n.includes("/")&&(n=n.split("/").pop());let i=r;for(;i;){if(i.variables)for(let o of Object.values(i.variables)){let s=An(o);for(let a of s)if(a.type==="StructureMapGroup"){let c=a.value;if((c.typeMode==="types"||c.typeMode==="type-and-types")&&c.input.length===2&&c.input[0].mode==="source"&&c.input[0].type===n&&c.input[1].mode==="target")return c}}i=i.parent}}function Zc(r,e){let t=ie(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=A(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ao(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ao(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Xc(e,i)),i}function ao(r,e,t){return L(A(t,[r],e))}function Xc(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-1]];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function po(r,e){let t=ie(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=mo(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=eu(r,e);break;case"copy":i=tu(r,e);break;case"create":i=ru(r,e);break;case"evaluate":i=nu(r,e);break;case"translate":i=iu(r,e);break;case"truncate":i=ou(r,e);break;case"uuid":i=[{type:"string",value:me()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=ho(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:x({})]:i=[a?{type:a,value:n}:x(n)]}fo(r,e,t,i,o,n)}function fo(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],Ct(t.value,e.element,o));for(let s of n)o.push(s.value)}else Ct(t.value,e.element,n[0].value);e.variable&&hr(r,e.variable,au(n))}}function mo(r,e){return ho(r,e)?.isArray}function ho(r,e){return we(r.type)?.elements?.[e]}function eu(r,e){let t=he(r,e.parameter?.[0])?.[0]?.value,n=he(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function tu(r,e){return e.parameter.flatMap(t=>he(r,t))}function ru(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=he(r,e.parameter?.[0])?.[0]?.value),[x(t)]}function nu(r,e){let n=he(r,e.parameter?.[0])[0].value;return A(n,[],yo(r))}function iu(r,e){let t=e.parameter.flatMap(a=>he(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Cn(o,{system:o.group?.[0]?.source,code:n});return[x(s.match?.[0]?.concept?.code)]}function ou(r,e){let t=he(r,e.parameter?.[0])?.[0],n=he(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function su(r,e){let t=ie(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=ie(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};On(o,t.value,i)}function he(r,e){let n=C({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=An(n),n.length===1&&n[0].type==="id"){let i=ie(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return An(i)}return n}function ie(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ie(r.parent,e)}function yo(r,e={}){if(r.parent&&yo(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function hr(r,e,t){r.variables||(r.variables={}),Ct(r.variables,e,t)}function Ct(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function An(r){return Array.isArray(r)?r:[r]}function au(r){return r.length===1?r[0]:r}var cu=[...ft,"eq","ne","co"];function go(r){return new re(r,dt,cu,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var wt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},At=class{constructor(e){this.child=e}},Ot=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var uu={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"present",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function lu(r){let e=uu[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var In=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new At(this.parse()),this.parser.consume(")")):e=new wt(this.parser.consume("Symbol").value,lu(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 Ot(t,e,this.parse())):e}},pu=De();function du(r){let e=pu.construct(go(r));return e.removeComments(),new In(e).parse()}var oe=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},kn=class r{constructor(e,t=new oe){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new Le(["MSH",this.context.getMsh2(),o,s,n,i,xo(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new Le(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new oe("\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=>Le.parse(n,t)),t)}},Le=class r{constructor(e,t=new oe){this.context=t,zr(e)?this.fields=e.map(n=>Pe.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new Pe([[this.context.getMsh1()]],this.context);if(e===2)return new Pe([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new oe){return new r(e.split(t.fieldSeparator).map(n=>Pe.parse(n,t)),t)}},Pe=class r{constructor(e,t=new oe){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 oe){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function fu(r,e){if(!r)return;let t=Re(r.slice(0,4),0),n=Re(r.slice(4,6),1)-1,i=Re(r.slice(6,8),1),o=Re(r.slice(8,10),0),s=Re(r.slice(10,12),0),a=Re(r.slice(12,14),0),c=0;r.includes(".")&&(c=Re(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=mu(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function Re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function mu(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function xo(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var yr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(yr||{}),Vn=class r{constructor(e,t={},n=3,i){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(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
43
+ `)}),this.write(JSON.stringify({level:yr[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...n,...this.metadata})))}};function hu(r){let e=yr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function yu(r){if(!r)throw new f(h("Resource type is null"));if(!Fr(r))throw new f(h("Unknown resource type"))}function Dn(r,e,t){r===null?t.push(v(e,"Invalid null value")):Array.isArray(r)?gu(r,e,t):typeof r=="object"&&xu(r,e,t)}function gu(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(v(`${e}[${n}]`,"Invalid undefined value")):Dn(r[n],`${e}[${n}]`,t)}function xu(r,e,t){for(let[n,i]of Object.entries(r))Dn(i,`${e}${e?".":""}${n}`,t)}function vu(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 Tu(r,e){let t=[];for(let n of e)t.push(...Su(r,n));return t}function Su(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};if(r.constant)for(let i of r.constant){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=C(o,"value")}let n=x(e);if(r.where)for(let i of r.where){let o=A(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 Mn(r,n,t)}function Mn(r,e,t){let n=[],i;r.forEach?i=A(r.forEach,[e],t):r.forEachOrNull?i=A(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??[]){let c=A(a.path,[o],t),u;if(c.length===0)u={[a.name]:null};else if(a.collection)u={[a.name]:c.map(p=>p.value)};else if(c.length===1)u={[a.name]:c[0].value};else throw new Error("Multiple values found but not expected for column");s.push([u])}for(let a of r.select??[]){let c=Mn(a,o,t);s.push(c)}if(r.unionAll){let a=[];for(let c of r.unionAll)for(let u of Mn(c,o,t))a.push(u);s.push(a)}n.push(...Eu(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??[])o[s.name]=null;n.push(o)}return n}function Eu(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=bu(e,r[t]);return e}function bu(r,e){let t=[];for(let n of r)for(let i of e)t.push(Ru(n,i));return t}function Ru(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}0&&(module.exports={AccessPolicyInteraction,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_ACCEPT,DEFAULT_SEARCH_COUNT,DotAtom,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FunctionAtom,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,Logger,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_VERSION,MedplumClient,MedplumKeyValueClient,MemoryStorage,MockAsyncClientStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,RobustWebSocket,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,addProfileToResource,allOk,append,applyDefaultValuesToElement,applyDefaultValuesToElementWithVisitor,applyDefaultValuesToResource,applyFixedOrPatternValue,arrayBufferToBase64,arrayBufferToHex,arrayify,assertContextVersionOptional,assertOk,badRequest,booleanToTypedValue,buildElementsContext,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,concatUrls,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,findObservationInterval,findObservationReferenceRange,findResourceByCode,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatSearchQuery,formatTime,formatTiming,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPathDifference,getPathDisplayName,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getValueSliceName,getWebSocketUrl,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isUUID,isValidDate,isValidHostname,lazy,loadDataType,mapByIdentifier,matchDiscriminant,matchesAccessPolicy,matchesRange,matchesSearchRequest,multipleMatches,normalizeCreateBinaryOptions,normalizeCreatePdfOptions,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseCriteriaAsSearchRequest,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseLogLevel,parseMappingLanguage,parseParameter,parseReference,parseSearchDefinition,parseSearchRequest,parseSearchUrl,parseStructureDefinition,parseXFhirQuery,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,preconditionFailed,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,removeProfileFromResource,reorderBundle,resolveId,resourceMatchesSubscriptionCriteria,satisfiedAccessPolicy,serializeFhircastSubscriptionRequest,serverError,setCodeBySystem,setIdentifier,singleton,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,toJsBoolean,toPeriod,toTypedValue,tooManyRequests,tryGetDataType,tryGetJwtExpiration,tryGetProfile,unauthorized,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validateTypedValue,validationError,validationRegexes});
44
44
  //# sourceMappingURL=index.cjs.map