@medplum/core 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +5 -4
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.d.ts +59 -1
- package/dist/esm/index.d.ts +59 -1
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/index.mjs.map +4 -4
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var Mt=Object.defineProperty;var Ti=Object.getOwnPropertyDescriptor;var vi=Object.getOwnPropertyNames;var Si=Object.prototype.hasOwnProperty;var Ei=(r,e)=>{for(var t in e)Mt(r,t,{get:e[t],enumerable:!0})},bi=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vi(e))!Si.call(r,i)&&i!==t&&Mt(r,i,{get:()=>e[i],enumerable:!(n=Ti(e,i))||n.enumerable});return r};var Ri=r=>bi(Mt({},"__esModule",{value:!0}),r);var Qa={};Ei(Qa,{AccessPolicyInteraction:()=>Ln,AndAtom:()=>Qe,ArithemticOperatorAtom:()=>C,AsAtom:()=>Y,BooleanInfixOperatorAtom:()=>S,CPT:()=>ea,ClientStorage:()=>ge,ConcatAtom:()=>_e,ContainsAtom:()=>Le,ContentType:()=>O,DEFAULT_ACCEPT:()=>ti,DEFAULT_SEARCH_COUNT:()=>ls,DotAtom:()=>G,EmptySetAtom:()=>Me,EqualsAtom:()=>Be,EquivalentAtom:()=>je,EventTarget:()=>he,ExternalSecretSystems:()=>Js,FHIRCAST_EVENT_NAMES:()=>At,FHIRCAST_EVENT_RESOURCES:()=>Kn,FHIRCAST_EVENT_VERSION_REQUIRED:()=>wt,FHIRCAST_RESOURCE_TYPES:()=>Gn,FhirFilterComparison:()=>nt,FhirFilterConnective:()=>ot,FhirFilterNegation:()=>it,FhirPathAtom:()=>Ne,FhircastConnection:()=>Ze,FunctionAtom:()=>q,HTTP_HL7_ORG:()=>ra,Hl7Context:()=>W,Hl7Field:()=>ce,Hl7Message:()=>Fr,Hl7Segment:()=>xe,ICD10:()=>ta,ImpliesAtom:()=>Ke,InAtom:()=>Ue,IndexerAtom:()=>Z,InfixOperatorAtom:()=>Q,IsAtom:()=>X,LOINC:()=>Ys,LRUCache:()=>Ye,LiteralAtom:()=>k,MEDPLUM_VERSION:()=>Qs,MedplumClient:()=>kr,MemoryStorage:()=>Ot,MockAsyncClientStorage:()=>Ir,NotEqualsAtom:()=>qe,NotEquivalentAtom:()=>$e,OAuthClientAssertionType:()=>oi,OAuthGrantType:()=>ri,OAuthTokenAuthMethod:()=>ii,OAuthTokenType:()=>ni,OperationOutcomeError:()=>d,Operator:()=>On,OperatorPrecedence:()=>m,OrAtom:()=>He,Parser:()=>st,ParserBuilder:()=>ve,PrefixOperatorAtom:()=>Te,PropertyType:()=>c,RXNORM:()=>Zs,ReadablePromise:()=>w,SNOMED:()=>Xs,SearchParameterType:()=>pr,SymbolAtom:()=>_,Tokenizer:()=>K,TypedEventTarget:()=>Xe,UCUM:()=>Or,UnaryOperatorAtom:()=>Fe,UnionAtom:()=>oe,XorAtom:()=>Ge,accepted:()=>Vi,allOk:()=>Pi,append:()=>ne,arrayBufferToBase64:()=>Jt,arrayBufferToHex:()=>zt,arrayify:()=>Ce,assertContextVersionOptional:()=>Rr,assertOk:()=>Ui,badRequest:()=>v,booleanToTypedValue:()=>p,buildTypeName:()=>Rn,calculateAge:()=>Ee,calculateAgeString:()=>Hi,canReadResourceType:()=>Ds,canWriteResource:()=>Ns,canWriteResourceType:()=>Un,capitalize:()=>I,checkForNull:()=>_r,compressElement:()=>Do,conceptMapTranslate:()=>Vr,convertContainedResourcesToBundle:()=>Us,convertToTransactionBundle:()=>jn,crawlResource:()=>Dt,createConstraintIssue:()=>$t,createFhircastMessagePayload:()=>kt,createProcessingIssue:()=>Qt,createReference:()=>z,createStructureIssue:()=>g,created:()=>Ci,decodeBase64:()=>vr,deepClone:()=>dt,deepEquals:()=>be,deepIncludes:()=>Re,encodeBase64:()=>Sr,encryptSHA256:()=>Er,evalFhirPath:()=>se,evalFhirPathTyped:()=>j,fhirPathArrayEquals:()=>gt,fhirPathArrayEquivalent:()=>yt,fhirPathEquals:()=>Zt,fhirPathEquivalent:()=>gn,fhirPathIs:()=>Ie,fhirPathNot:()=>ht,fhirTypeToJsType:()=>Ur,findObservationInterval:()=>oo,findObservationReferenceRange:()=>so,findResourceByCode:()=>ho,forbidden:()=>Ii,formatAddress:()=>xo,formatCodeableConcept:()=>on,formatCoding:()=>sn,formatDate:()=>So,formatDateTime:()=>ft,formatFamilyName:()=>vo,formatGivenName:()=>To,formatHl7DateTime:()=>gi,formatHumanName:()=>Ae,formatMoney:()=>Io,formatObservationValue:()=>an,formatPeriod:()=>Eo,formatQuantity:()=>J,formatRange:()=>wo,formatSearchQuery:()=>Es,formatTime:()=>nn,formatTiming:()=>Co,generateId:()=>ee,getAllDataTypes:()=>sr,getAllQuestionnaireAnswers:()=>Ki,getCodeBySystem:()=>lt,getDataType:()=>ie,getDateProperty:()=>Qi,getDisplayString:()=>zr,getElementDefinition:()=>ke,getElementDefinitionFromElements:()=>Cn,getElementDefinitionTypeName:()=>xt,getExpressionForResourceType:()=>us,getExpressionsForResourceType:()=>mr,getExtension:()=>Gt,getExtensionValue:()=>Ji,getIdentifier:()=>Wi,getImageSrc:()=>$i,getNestedProperty:()=>Nt,getPathDisplayName:()=>Ko,getPropertyDisplayName:()=>Pn,getQuestionnaireAnswers:()=>Gi,getRandomString:()=>Ct,getReferenceString:()=>ue,getResourceTypes:()=>Qo,getSearchParameter:()=>Go,getSearchParameterDetails:()=>fr,getSearchParameters:()=>Ho,getStatus:()=>Li,getTypedPropertyValue:()=>A,getTypedPropertyValueWithSchema:()=>hn,globalSchema:()=>D,gone:()=>ki,indexSearchParameter:()=>Et,indexSearchParameterBundle:()=>$o,indexStructureDefinitionBundle:()=>vt,inflateBaseSchema:()=>Xt,inflateElement:()=>un,initFhirPathParserBuilder:()=>me,isAccepted:()=>Mi,isCompletedSubscriptionRequest:()=>Pr,isContextVersionRequired:()=>br,isCreated:()=>Ni,isDataTypeLoaded:()=>ar,isEmpty:()=>b,isFhircastResourceType:()=>Wn,isGone:()=>_i,isJwt:()=>Cr,isLowerCase:()=>Pe,isMedplumAccessToken:()=>Ar,isNotFound:()=>Fi,isObject:()=>H,isOk:()=>ut,isOperationOutcome:()=>re,isPeriod:()=>yn,isPopulated:()=>Xr,isProfileLoaded:()=>ur,isProfileResource:()=>Wr,isQuantity:()=>R,isQuantityEquivalent:()=>er,isReference:()=>le,isResource:()=>F,isResourceType:()=>cr,isResourceTypeSchema:()=>St,isStringArray:()=>Wt,isUUID:()=>no,isValidDate:()=>mt,lazy:()=>yo,loadDataType:()=>En,matchDiscriminant:()=>xi,matchesAccessPolicy:()=>Bn,matchesRange:()=>Yt,matchesSearchRequest:()=>xr,normalizeErrorString:()=>Hr,normalizeOperationOutcome:()=>Se,notFound:()=>Bt,notModified:()=>Ai,operationOutcomeIssueToString:()=>Gr,operationOutcomeToString:()=>qt,parseCriteriaAsSearchRequest:()=>Rt,parseFhirPath:()=>bt,parseFilterParameter:()=>ka,parseHl7DateTime:()=>Oa,parseJWTPayload:()=>tt,parseMappingLanguage:()=>da,parseParameter:()=>Nn,parseReference:()=>Bi,parseSearchDefinition:()=>ps,parseSearchRequest:()=>ds,parseSearchUrl:()=>gr,parseStructureDefinition:()=>Tt,parseXFhirQuery:()=>Ss,preciseEquals:()=>po,preciseGreaterThan:()=>mo,preciseGreaterThanOrEquals:()=>rn,preciseLessThan:()=>fo,preciseLessThanOrEquals:()=>tn,preciseRound:()=>lo,projectAdminResourceTypes:()=>_n,protectedResourceTypes:()=>Fn,removeDuplicates:()=>we,reorderBundle:()=>$n,resolveId:()=>Ht,satisfiedAccessPolicy:()=>Ms,serializeFhircastSubscriptionRequest:()=>It,serverError:()=>Di,setCodeBySystem:()=>io,setIdentifier:()=>zi,singleton:()=>M,sleep:()=>pt,splitN:()=>go,streamToBuffer:()=>Fa,stringify:()=>Kt,stringifyTypedValue:()=>lr,structureMapTransform:()=>pa,subsetResource:()=>Lo,toJsBoolean:()=>V,toTypedValue:()=>y,tooManyRequests:()=>Oi,tryGetDataType:()=>Ve,tryGetJwtExpiration:()=>wr,tryGetProfile:()=>_o,unauthorized:()=>wi,validateFhircastSubscriptionRequest:()=>et,validateResource:()=>Ua,validateResourceType:()=>Da,validationError:()=>h});module.exports=Ri(Qa);var Te=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},Q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},ve=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new st(e,this.prefixParselets,this.infixParselets)}},st=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 Ft="ok",at="created",_t="gone",Lt="not-modified",Ut="not-found",jr="unauthorized",$r="forbidden",Qr="too-many-requests",ct="accepted",Pi={resourceType:"OperationOutcome",id:Ft,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ci={resourceType:"OperationOutcome",id:at,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Ai={resourceType:"OperationOutcome",id:Lt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Bt={resourceType:"OperationOutcome",id:Ut,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},wi={resourceType:"OperationOutcome",id:jr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Ii={resourceType:"OperationOutcome",id:$r,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},ki={resourceType:"OperationOutcome",id:_t,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Oi={resourceType:"OperationOutcome",id:Qr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Vi(r){return{resourceType:"OperationOutcome",id:ct,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function v(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Di(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function re(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function ut(r){return r.id===Ft||r.id===at||r.id===Lt||r.id===ct}function Ni(r){return r.id===at}function Mi(r){return r.id===ct}function Fi(r){return r.id===Ut}function _i(r){return r.id===_t}function Li(r){switch(r.id){case Ft:return 200;case at:return 201;case ct:return 202;case Lt:return 304;case jr:return 401;case $r:return 403;case Ut:return 404;case _t:return 410;case Qr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Ui(r,e){if(!ut(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(qt(e)),this.outcome=e,this.cause=t}};function Se(r){return r instanceof d?r.outcome:re(r)?r:v(Hr(r))}function Hr(r){return r?typeof r=="string"?r:r instanceof Error?r.message:re(r)?qt(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function qt(r){let e=r.issue?.map(Gr)??[];return e.length>0?e.join("; "):"Unknown error"}function Gr(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 jt(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function g(r,e){return jt("structure",e,r)}function $t(r,e){return jt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Qt(r,e,t,n){return jt("processing",e,r,{...n,error:t})}function z(r){let e=ue(r),t=zr(r);return t===e?{reference:e}:{reference:e,display:t}}function ue(r){return le(r)?r.reference:`${r.resourceType}/${r.id}`}function Ht(r){if(r)return le(r)?r.reference.split("/")[1]:r.id}function Bi(r){if(r?.reference===void 0)throw new d(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(h("Unable to parse reference string."));return[e,t]}function Wr(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function zr(r){if(Wr(r)){let e=qi(r);if(e)return e}if(r.resourceType==="Device"){let e=ji(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:ue(r)}function qi(r){let e=r.name;if(e&&e.length>0)return Ae(e[0])}function ji(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function $i(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Kr(t);if(n)return n}else return Kr(e)}function Kr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Qi(r){return r?new Date(r):void 0}function Ee(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let E=a*12+u-(i*12+o);l<s&&E--;let $=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:E,days:$}}function Hi(r,e){let{years:t,months:n,days:i}=Ee(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 Gi(r){let e={};return Jr(r.item,e),e}function Jr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Jr(t.item,e)}function Ki(r){let e={};return Yr(r.item,e),e}function Yr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Yr(t.item,e)}function Wi(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 zi(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 Ji(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function Gt(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 Kt(r,e){return JSON.stringify(r,Yi,e?2:void 0)}function Yi(r,e){return!Xi(r)&&b(e)?void 0:e}function Xi(r){return!!/\d+$/.exec(r)}function b(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!Xr(r):!1}function Xr(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 be(r,e,t){return r===e||b(r)&&b(e)?!0:b(r)||b(e)?!1:Array.isArray(r)&&Array.isArray(e)?Zi(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?eo(r,e,t):(H(r)||H(e),!1)}function Zi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!be(r[t],e[t]))return!1;return!0}function eo(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(!be(o,s,i))return!1}return!0}function Re(r,e){return b(r)?!0:b(e)?!1:Array.isArray(r)&&Array.isArray(e)?to(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?ro(r,e):H(r)||H(e)?!1:r===e}function to(r,e){return e.every(t=>r.some(n=>Re(n,t)))}function ro(r,e){return Object.entries(e).every(([t,n])=>t in r&&Re(r[t],n))}function dt(r){return JSON.parse(JSON.stringify(r))}function no(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function H(r){return r!==null&&typeof r=="object"}function Wt(r){return r.every(e=>typeof e=="string")}var Zr=[];for(let r=0;r<256;r++)Zr.push(r.toString(16).padStart(2,"0"));function zt(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Zr[e[n]];return t.join("")}function Jt(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 I(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Pe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function lt(r,e){return r.coding?.find(t=>t.system===e)?.code}function io(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 oo(r,e,t,n){return r.qualifiedInterval?.find(i=>en(i,e)&&uo(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function so(r,e,t){return r.qualifiedInterval?.find(n=>en(n,e)&&t.includes(n.condition))}function en(r,e){return ao(r,e)&&co(r,e)}function ao(r,e){return!r.gender||r.gender===e.gender}function co(r,e){return!r.age||Yt(Ee(e.birthDate).years,r.age)}function uo(r,e,t){return!!r.range&&Yt(e,r.range,t)}function Yt(r,e,t){return(e.low?.value===void 0||rn(r,e.low.value,t))&&(e.high?.value===void 0||tn(r,e.high.value,t))}function lo(r,e){return parseFloat(r.toFixed(e))}function po(r,e,t){return L(r,t)===L(e,t)}function fo(r,e,t){return L(r,t)<L(e,t)}function mo(r,e,t){return L(r,t)>L(e,t)}function tn(r,e,t){return L(r,t)<=L(e,t)}function rn(r,e,t){return L(r,t)>=L(e,t)}function L(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function ho(r,e,t){return r.find(n=>typeof e=="string"?lt(n.code||{},t)===e:lt(n.code||{},t)===lt(e,t))}function Ce(r){if(r)return Array.isArray(r)?r:[r]}var pt=r=>new Promise(e=>{setTimeout(e,r)});function go(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);o<0&&(o=r.length),n.push(r.slice(0,o)),r=r.slice(o+e.length)}return r&&n.push(r),n}function yo(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ne(r,e){return r?(r.push(e),r):[e]}function xo(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ae(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=de(r.text);if(n)return n}return t.join(" ").trim()}function To(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function vo(r){return de(r.family)??""}function mt(r){return r instanceof Date&&!isNaN(r.getTime())}function So(r,e,t){if(!r)return"";let n=new Date(r);return mt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function nn(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return mt(n)?n.toLocaleTimeString(e,t):""}function ft(r,e,t){if(!r)return"";let n=new Date(r);return mt(n)?n.toLocaleString(e,t):""}function Eo(r,e,t){return!r||!r.start&&!r.end?"":ft(r.start,e,t)+" - "+ft(r.end,e,t)}var bo={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Ro={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Po={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Co(r){if(!r)return"";let e=[];return Ao(e,r.repeat),r.event&&e.push(r.event.map(t=>ft(t)).join(", ")),I(e.join(" ").trim())}function Ao(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(bo[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Ro[i]):r.push("per "+n+" "+Po[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(I).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>nn(o)).join(", "))}function wo(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=Oo(n.value,e),`> ${J(n,e)}`):`>= ${J(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ko(i.value,e),`< ${J(i,e)}`):`<= ${J(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${J(n,e)} - ${J(i,e)}`)}function J(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function Io(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function on(r){if(!r)return"";let e=de(r.text);return e||(r.coding?r.coding.map(t=>sn(t)).join(", "):"")}function sn(r){return de(r?.display)??de(r?.code)??""}function an(r){if(!r)return"";if("component"in r)return r.component.map(t=>an(t)).join(" / ");if(r.valueQuantity)return J(r.valueQuantity);if(r.valueCodeableConcept)return on(r.valueCodeableConcept);let e=de(r.valueString);return e||""}function de(r){return typeof r=="string"?r:void 0}function ko(r,e,t=1){return(cn(r,e)+t)*Math.pow(10,-e)}function Oo(r,e,t=1){return(cn(r,e)-t)*Math.pow(10,-e)}function cn(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Vo={"http://hl7.org/fhirpath/System.String":"string"};function Do(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:Vo[t.code]??t.code})),e}function un(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 Xt(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,un(i,o)])),constraints:[],innerTypes:[]};return e}var ln={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"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function p(r){return[{type:c.boolean,value:r}]}function y(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:R(r)?{type:c.Quantity,value:r}:F(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function V(r){return r.length===0?!1:!!r[0].value}function M(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 A(r,e){if(!r.value)return;let t=ke(r.type,e);return t?hn(r.value,e,t):Mo(r,e)}function hn(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined",s;if(t.path.endsWith("[x]")){let a=t.path.split(".").pop().replace("[x]","");for(let u of n){let l=a+I(u.code);if(i=r[l],s=r["_"+l],i!==void 0||s!==void 0){o=u.code;break}}}else console.assert(n.length===1,"Expected single type",t.path),i=r[e],o=n[0].code,s=r["_"+e];if(s)if(Array.isArray(i))for(let a=0;a<Math.max(i.length,s.length);a++)i[a]=mn(i[a],s[a]);else i=mn(i,s);if(!b(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>dn(a,o)):dn(i,o)}function dn(r,e){return e==="Resource"&&F(r)&&(e=r.resourceType),{type:e,value:r}}function Mo(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in c){let o=e+I(i);if(o in t){n=t[o];break}}if(!b(n))return Array.isArray(n)?n.map(y):y(n)}function we(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(V(Zt(t,i))){n=!0;break}n||e.push(t)}return e}function ht(r){return p(!V(r))}function gt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?p(!1):p(r.every((t,n)=>V(Zt(t,e[n]))))}function Zt(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?p(Math.abs(t-n)<1e-8):R(t)&&R(n)?p(er(t,n)):p(typeof t=="object"&&typeof n=="object"?tr(r,e):t===n)}function yt(r,e){return r.length===0&&e.length===0?p(!0):r.length!==e.length?p(!1):(r.sort(pn),e.sort(pn),p(r.every((t,n)=>V(gn(t,e[n])))))}function gn(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"?p(Math.abs(s-a)<.01):R(s)&&R(a)?p(er(s,a)):p(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"?tr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function pn(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 Ie(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return yn(t);case"Quantity":return R(t);default:return typeof t=="object"&&t?.resourceType===e}}function yn(r){return!!(r&&typeof r=="object"&&"start"in r)}function R(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function er(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 tr(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(fn(o)&&fn(s)){if(!tr(o,s))return!1}else if(o!==s)return!1}return!0}function fn(r){return r!==null&&typeof r=="object"}function mn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Fo(r??{},e)}return r}function Fo(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Tt(r){return new nr(r).parse()}var Oe=Xt(ln),ir=Object.create(null),xn=Object.create(null);function or(r){let e;return r?(e=xn[r],e||(e=xn[r]=Object.create(null))):e=Oe,e}function vt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)En(n,e)}function En(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Tt(r),n=or(e);n[r.name]=t,e&&r.url===e&&(ir[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function sr(){return Oe}function ar(r){return!!Oe[r]}function Ve(r,e){return or(e)[r]}function ie(r,e){let t=or(e)[r];if(!t)throw new d(v("Unknown data type: "+r));return t}function cr(r){let e=Oe[r];return e&&St(e)}function ur(r){return!!ir[r]}function _o(r){return ir[r]}var nr=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:jo(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=rr(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[rr(e,n.path)]=t;break}n=n.parent}if(!n){let i=rr(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&&!pe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:xt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:pe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){qo(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&&!pe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!pe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!pe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(pe(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator: "+e.sliceName);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=xt(e)),n||(n=Gt(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=vn(e.max),n=e.base?.max?vn(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:Sn(A(i,"fixed[x]")),pattern:Sn(A(i,"pattern[x]")),binding:e.binding}}};function Lo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Oe[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+I(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Uo.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(Tn):[Tn]},r}var Tn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Uo=["resourceType","id","meta"];function vn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function rr(r,e=""){return Bo(r.path,e)}function Bo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function pe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Sn(r){return Array.isArray(r)&&r.length>0?r[0]:b(r)?void 0:r}function qo(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 jo(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}var c={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function $o(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Et(t)}}function Et(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 xt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Rn((r.base?.path??r.path)?.split(".")):e}function Rn(r){return r.length===1?r[0]:r.map(I).join("")}function St(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Qo(){return Object.values(sr()).filter(St).map(r=>r.name)}function Ho(r){return D.types[r]?.searchParams}function Go(r,e){return D.types[r]?.searchParams?.[e]}function Ko(r){let e=r.replaceAll("[x]","").split(".").pop();return Pn(e)}function Pn(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(zo).join(" ").replace("_"," ").replace(/\s+/g," ")}var Wo=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function zo(r){let e=r.toUpperCase();return r===e?r:Wo.has(e)?e:e.charAt(0)+r.slice(1)}function ke(r,e){let t=Ve(r);if(t)return Cn(t.elements,e)}function Cn(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 F(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function le(r){return!!(r&&typeof r=="object"&&"reference"in r)}var D={types:{}};function lr(r){switch(r.type){case c.uuid:case c.uri:case c.url:case c.string:case c.oid:case c.markdown:case c.id:case c.code:case c.canonical:case c.base64Binary:case c.SystemString:case c.date:case c.dateTime:case c.instant:return r.value;case c.Identifier:return`${r.value.system??""}|${r.value.value}`;case c.Coding:return bn(r.value);case c.CodeableConcept:return r.value.coding?.map(bn).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ae(r.value);case c.unsignedInt:case c.positiveInt:case c.integer:case c.decimal:return r.value.toString();case c.boolean:return r.value?"true":"false";case c.Extension:return r.value.url;case c.ContactPoint:return r.value.value;case c.Quantity:case c.Age:case c.Count:case c.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case c.Reference:return r.value.reference;default:return F(r.value)?z(r.value).reference:JSON.stringify(r)}}function bn(r){return r?`${r.system??""}|${r.code}`:""}function fe(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var De=()=>[],P={empty:(r,e)=>p(e.length===0),exists:(r,e,t)=>t?p(e.filter(n=>V(t.eval(r,[n]))).length>0):p(e.length>0),all:(r,e,t)=>p(e.every(n=>V(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return p(!1);return p(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return p(!0);return p(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return p(!1);return p(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return p(!0);return p(!1)},subsetOf:De,supersetOf:De,count:(r,e)=>[{type:c.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>p(e.length===P.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>V(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:De,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return we([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[y(!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 V(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return p(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return p(!0);if(["false","f","no","n","0","0.0"].includes(n))return p(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:p(P.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:p(P.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:fe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:p(P.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:fe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:p(P.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:p(P.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);return R(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:p(P.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);return t==null?[]:R(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:p(P.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=B(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:fe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:p(P.toTime(r,e).length===1),indexOf:(r,e,t)=>N((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>N((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>N((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>N((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>N((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>N(t=>t.toUpperCase(),r,e),lower:(r,e)=>N(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>N((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>N((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>N((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>N(t=>t.length,r,e),toChars:(r,e)=>N(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>U(Math.abs,r,e),ceiling:(r,e)=>U(Math.ceil,r,e),exp:(r,e)=>U(Math.exp,r,e),floor:(r,e)=>U(Math.floor,r,e),ln:(r,e)=>U(Math.log,r,e),log:(r,e,t)=>U((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>U(Math.pow,r,e,t),round:(r,e)=>U(Math.round,r,e),sqrt:(r,e)=>U(Math.sqrt,r,e),truncate:(r,e)=>U(t=>t|0,r,e),children:De,descendants:De,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=P.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=P.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Ee(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof _?n=t.name:t instanceof G&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:Ie(i,n)})):[]},not:(r,e)=>P.toBoolean(r,e).map(t=>({type:c.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return y(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:c.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:c.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:c.BackboneElement,value:{namespace:"System",name:"Integer"}}:F(t)?{type:c.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:c.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:c.boolean,value:o.value?.resourceType===i}))}};function N(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=B(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(y):[y(o)]}function U(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=B(t,1),o=R(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function B(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Ne=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},k=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},_=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=e.variables[this.name];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)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return F(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},Me=class{eval(){return[]}toString(){return"{}"}},Fe=class extends Te{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},Y=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return P.ofType(e,this.left.eval(e,t),this.right)}},S=class extends Q{},C=class extends S{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=R(s)?s.value:s,l=R(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?p(f):R(s)?[{type:c.Quantity,value:{...s,value:f}}]:[y(f)]}},_e=class extends Q{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:c.string,value:o.map(s=>s.value).join("")}]:o}},Le=class extends S{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return p(n.some(o=>o.value===i[0].value))}},Ue=class extends S{constructor(e,t){super("in",e,t)}eval(e,t){let n=M(this.left.eval(e,t)),i=this.right.eval(e,t);return n?p(i.some(o=>o.value===n.value)):[]}},G=class extends Q{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},oe=class extends Q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return we([...n,...i])}},Be=class extends S{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return gt(n,i)}},qe=class extends S{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ht(gt(n,i))}},je=class extends S{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return yt(n,i)}},$e=class extends S{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ht(yt(n,i))}},X=class extends S{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 p(Ie(n[0],i))}},Qe=class extends S{constructor(e,t){super("and",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?p(!0):n?.value===!1||i?.value===!1?p(!1):[]}},He=class extends S{constructor(e,t){super("or",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?p(!1):n?.value||i?.value?p(!0):[]}},Ge=class extends S{constructor(e,t){super("xor",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return!n||!i?[]:p(n.value!==i.value)}},Ke=class extends S{constructor(e,t){super("implies",e,t)}eval(e,t){let n=M(this.left.eval(e,t),"boolean"),i=M(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?p(!0):!n||!i?[]:p(!1)}},q=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=P[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},Z=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var Jo=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
|
|
2
|
-
`))}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;
|
|
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 Yo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&Jo.includes(r.value)))}var We=["true","false"],ze=["!=","!~","<=",">=","{}","->"];function An(r){return new K(r,We,ze).tokenize()}var m={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},Xo={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Zo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:m.Indexer},es={parse(r,e){if(!(e instanceof _))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new q(e.name,t)},precedence:m.FunctionCall};function ts(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 me(){return new ve().registerPrefix("String",{parse:(r,e)=>new k({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new k({type:c.dateTime,value:fe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new k({type:c.Quantity,value:ts(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new k({type:e.value.includes(".")?c.decimal:c.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new k({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new k({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new _(e.value)}).registerPrefix("{}",{parse:()=>new Me}).registerPrefix("(",Xo).registerInfix("[",Zo).registerInfix("(",es).prefix("+",m.UnaryAdd,(r,e)=>new Fe("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new C("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new G(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new C("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new C("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new C("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new C("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new oe(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new Be(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new qe(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new je(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new $e(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new C("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new C("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new C(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new C(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new _e(r,t)).infixLeft("and",m.And,(r,e,t)=>new Qe(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Le(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new C("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new Ue(r,t)).infixLeft("is",m.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new C("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new He(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new Ge(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new Ke(r,t))}var rs=me();function bt(r){return new Ne(r,rs.construct(An(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]=y(t[n]))}return j(r,t).map(n=>n.value)}function j(r,e,t){let n=t??{};return bt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var pr=(f=>(f.BOOLEAN="BOOLEAN",f.NUMBER="NUMBER",f.QUANTITY="QUANTITY",f.TEXT="TEXT",f.REFERENCE="REFERENCE",f.CANONICAL="CANONICAL",f.DATE="DATE",f.DATETIME="DATETIME",f.PERIOD="PERIOD",f.UUID="UUID",f))(pr||{});function fr(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=is(r,e)),t}function ns(r,e,t){let n=D.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function is(r,e){let t=e.code,n=as(t),i=mr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=Je(a);u.length===1&&u[0]instanceof S?o.propertyTypes.add("boolean"):wn(o,Je(a),r,1)}let s={columnName:n,type:cs(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ns(r,t,s),s}function wn(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof q){os(r,i);return}let o=i.toString(),s=ke(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof Z&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;ss(f)&&(f=s.type[0].code),wn(r,e,f,u)}}function os(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function ss(r){return r==="Element"||r==="BackboneElement"}function as(r){return r.split("-").reduce((e,t,n)=>e+(n?I(t):t),"")}function cs(r,e){switch(r.type){case"date":return e.size===1&&e.has(c.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(c.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(c.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function mr(r,e){let t=[],n=bt(e);return dr(r,n.child,t),t}function us(r,e){let t=mr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function dr(r,e,t){e instanceof oe?(dr(r,e.left,t),dr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Je(r){if(r instanceof Y||r instanceof Z)return[Je(r.left),r].flat();if(r instanceof S)return[r];if(r instanceof G)return[Je(r.left),Je(r.right)].flat();if(r instanceof q){if(r.name==="where"&&!(r.args[0]instanceof X))return[];if(r.name==="last")return[]}return[r]}var ls=20,On=(x=>(x.EQUALS="eq",x.NOT_EQUALS="ne",x.GREATER_THAN="gt",x.LESS_THAN="lt",x.GREATER_THAN_OR_EQUALS="ge",x.LESS_THAN_OR_EQUALS="le",x.STARTS_AFTER="sa",x.ENDS_BEFORE="eb",x.APPROXIMATELY="ap",x.CONTAINS="contains",x.EXACT="exact",x.TEXT="text",x.NOT="not",x.ABOVE="above",x.BELOW="below",x.IN="in",x.NOT_IN="not-in",x.OF_TYPE="of-type",x.MISSING="missing",x.IDENTIFIER="identifier",x.ITERATE="iterate",x))(On||{}),Vn={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"},hr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ds(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return Dn(r,t)}function gr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return Dn(e,r.searchParams.entries())}function ps(r){return gr(new URL(r,"https://example.com/"))}function Rt(r){return gr(new URL(r,"https://api.medplum.com/"))}function Dn(r,e){let t={resourceType:r};for(let[n,i]of e)fs(t,n,i);return t}function fs(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n==="_has"||e.includes(".")){r.filters=ne(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":ms(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=In(t);i==="iterate"&&(s.modifier="iterate"),r.include=ne(r.include,s);break}case"_revinclude":{let s=In(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=ne(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=D.types[r.resourceType]?.searchParams?.[n];s?r.filters=ne(r.filters,Nn(s,i,t)):r.filters=ne(r.filters,ys(n,i,t))}}}function ms(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 Nn(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return hs(r,t);case"reference":case"string":case"token":case"uri":return gs(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function hs(r,e){let{operator:t,value:n}=xs(e);return{code:r.code,operator:t,value:n}}function gs(r,e,t){return{code:r.code,operator:Ts(e),value:t}}function ys(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in hr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function xs(r){let e=r.substring(0,2),t=hr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Ts(r){return Vn[r]??"eq"}function In(r){let e=r.split(":");if(e.includes("*"))throw new d(v("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(v(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new d(v(`Invalid include value '${r}'`))}var vs=/{{([^{}]+)}}/g;function Ss(r,e){return r=r.replaceAll(vs,(t,n)=>{let i=j(n,[],e);return i.length!==1?"":lr(i[0])}),Rt(r)}function Es(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(bs(t))),r.sortRules&&r.sortRules.length>0&&e.push(Rs(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(kn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(kn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function bs(r){let e=r.operator in Vn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in hr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Rs(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function kn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function xr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Ps(r,e,t))return!1}return!0}function Ps(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=se(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Cs(r,t,n);case"string":case"uri":return Mn(r,t,n);case"token":return As(r,t,n);case"date":return Is(r,t,n);default:return!1}}function Cs(r,e,t){let n=se(t.expression,r),i=Pt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(u=>u?.endsWith("/"+s))),a)return!i}return i}function As(r,e,t){return fr(r.resourceType,t).type==="BOOLEAN"?ws(r,e,t):Mn(r,e,t,!0)}function ws(r,e,t){let n=se(t.expression,r),i=e.value==="true",o=n.includes(i);return Pt(e.operator)?!o:o}function Mn(r,e,t,n){let i=se(t.expression,r),o=e.value.split(","),s=Pt(e.operator);for(let a of i)for(let u of o)if(yr(a,e.operator,u,n))return!s;return s}function yr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return yr(r,e,o,!1)&&(!s||yr(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function Is(r,e,t){let n=se(t.expression,r),i=e.value.split(","),o=Pt(e.operator);for(let s of n)for(let a of i)if(ks(s,e.operator,a))return!o;return o}function ks(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 Pt(r){return r==="ne"||r==="not"}var Os={resourceType:"*"},Fn=["DomainConfiguration","JsonWebKey","Login"],_n=["PasswordChangeRequest","Project","ProjectMembership","User"],Ln=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(Ln||{}),Vs=["read","vread","history","history-instance"];function Ds(r,e){if(r.resource){for(let t of r.resource)if(Tr(t.resourceType,e))return!0}return!1}function Un(r,e){if(Fn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Tr(t.resourceType,e)&&!t.readonly)return!0}return!1}function Ns(r,e){let t=e.resourceType;return Un(r,t)?Bn(r,e,!1):!1}function Bn(r,e,t){if(r.resource){for(let n of r.resource)if(qn(e,t?"read":"update",n))return!0}return!1}function Ms(r,e,t){if(!t)return Os;if(t.resource){for(let n of t.resource)if(qn(r,e,n))return n}}function qn(r,e,t){let n=r.resourceType;return!(!Tr(t.resourceType,n)||t.readonly&&!Vs.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!xr(r,Rt(t.criteria)))}function Tr(r,e){return r===e||r==="*"&&!_n.includes(e)}function vr(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 Sr(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 Ct(){let r=new Uint32Array(28);return crypto.getRandomValues(r),zt(r.buffer)}async function Er(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ee(){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 jn(r){let e={};r=dt(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=ee(),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)=>Fs(i,o,e),2);return $n(JSON.parse(n))}function Fs(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 $n(r){let e=Ls(r),{sorted:t,cycles:n}=_s(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let u=i[a],l={...u,request:{...u.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function _s(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=1,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Qn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(le(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Qn(n,e)}}function Ls(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&&Qn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Us(r){r=dt(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=ee());return jn(e)}var Ye=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 O={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var he=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}},Xe=class{constructor(){this.emitter=new he}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var At={"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"},Gn=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],wt=["DiagnosticReport-update"];function br(r){return wt.includes(r)}function Rr(r){if(wt.includes(r))throw new d(h(`'context.version' is required for '${r}'.`))}var Kn={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Wn(r){return Gn.includes(r)}function Pr(r){return!!r.endpoint}function It(r){if(!et(r))throw new d(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return Pr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function et(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(!At[o])return!1;return!(Pr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Hn(r,e,t,n){if(typeof e!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Wn(e.resourceType))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function Bs(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Hn(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Hn(r,s,t,n)}}function qs(r,e){let t=new Map,n=Kn[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));Bs(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function kt(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!At[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(At).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if(wt.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return qs(e,i),{timestamp:new Date().toISOString(),id:ee(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Ze=class extends Xe{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!et(e))throw new d(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 js(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=vr(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 Cr(r){return r.split(".").length===3}function tt(r){let[e,t,n]=r.split(".");return js(t)}function Ar(r){try{return typeof tt(r).login_id=="string"}catch{return!1}}function wr(r){try{let t=tt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var $s,w=class{constructor(e){this[$s]="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)}};$s=Symbol.toStringTag;var ge=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Ot)}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?Kt(t):void 0)}},Ot=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]}},Ir=class extends ge{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 Qs="3.0.0-0cc50f0d",ti=O.FHIR_JSON+", */*; q=0.1",Hs="https://api.medplum.com/",Gs=1e3,Ks=6e4,Ws=0,zn="Binary/",Jn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},ri=(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))(ri||{}),ni=(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))(ni||{}),ii=(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))(ii||{}),oi=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(oi||{}),kr=class extends he{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??zs(),this.storage=t?.storage??new ge,this.createPdfImpl=t?.createPdf,this.baseUrl=Xn(t?.baseUrl??Hs),this.fhirBaseUrl=Xn(Vt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=Vt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=Vt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=Vt(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"?Ws:Ks),this.cacheTime>0?this.requestCache=new Ye(t?.resourceCacheSize??Gs):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new w(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,O.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(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:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,n,i).then(ei));return this.setCacheEntry(s,u),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield ei(a),o=u?.url?new URL(u.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 Jn;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 w(Promise.reject(new Error("Missing reference")));if(i==="system")return new w(Promise.resolve(Jn));let[o,s]=i.split("/");return!o||!s?new w(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(ar(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=`{
|
|
1
|
+
"use strict";var Ut=Object.defineProperty;var Ci=Object.getOwnPropertyDescriptor;var Ai=Object.getOwnPropertyNames;var wi=Object.prototype.hasOwnProperty;var Ii=(r,e)=>{for(var t in e)Ut(r,t,{get:e[t],enumerable:!0})},ki=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ai(e))!wi.call(r,i)&&i!==t&&Ut(r,i,{get:()=>e[i],enumerable:!(n=Ci(e,i))||n.enumerable});return r};var Oi=r=>ki(Ut({},"__esModule",{value:!0}),r);var Xa={};Ii(Xa,{AccessPolicyInteraction:()=>Kn,AndAtom:()=>Ge,ArithemticOperatorAtom:()=>C,AsAtom:()=>Y,BooleanInfixOperatorAtom:()=>S,CPT:()=>Go,ClientStorage:()=>ge,ConcatAtom:()=>Le,ContainsAtom:()=>Be,ContentType:()=>O,DEFAULT_ACCEPT:()=>li,DEFAULT_SEARCH_COUNT:()=>Os,DotAtom:()=>G,EmptySetAtom:()=>_e,EqualsAtom:()=>$e,EquivalentAtom:()=>Qe,EventTarget:()=>he,ExternalSecretSystems:()=>ya,FHIRCAST_EVENT_NAMES:()=>Ot,FHIRCAST_EVENT_RESOURCES:()=>ri,FHIRCAST_EVENT_VERSION_REQUIRED:()=>Vt,FHIRCAST_RESOURCE_TYPES:()=>ti,FhirFilterComparison:()=>ot,FhirFilterConnective:()=>at,FhirFilterNegation:()=>st,FhirPathAtom:()=>Fe,FhircastConnection:()=>tt,FunctionAtom:()=>$,HTTP_HL7_ORG:()=>Wo,Hl7Context:()=>W,Hl7Field:()=>ce,Hl7Message:()=>Hr,Hl7Segment:()=>xe,ICD10:()=>Ko,ImpliesAtom:()=>ze,InAtom:()=>qe,IndexerAtom:()=>X,InfixOperatorAtom:()=>Q,IsAtom:()=>Z,LOINC:()=>jo,LRUCache:()=>Xe,LiteralAtom:()=>k,LogLevel:()=>_t,Logger:()=>Gr,MEDPLUM_VERSION:()=>da,MedplumClient:()=>Br,MemoryStorage:()=>Mt,MockAsyncClientStorage:()=>Lr,NotEqualsAtom:()=>je,NotEquivalentAtom:()=>He,OAuthClientAssertionType:()=>mi,OAuthGrantType:()=>di,OAuthTokenAuthMethod:()=>fi,OAuthTokenType:()=>pi,OperationOutcomeError:()=>p,Operator:()=>Bn,OperatorPrecedence:()=>m,OrAtom:()=>Ke,Parser:()=>ct,ParserBuilder:()=>ve,PrefixOperatorAtom:()=>Te,PropertyType:()=>c,RXNORM:()=>Ho,ReadablePromise:()=>w,SNOMED:()=>Qo,SearchParameterType:()=>Er,SymbolAtom:()=>_,Tokenizer:()=>K,TypedEventTarget:()=>et,UCUM:()=>rr,UnaryOperatorAtom:()=>Ue,UnionAtom:()=>oe,XorAtom:()=>We,accepted:()=>Li,allOk:()=>Vi,append:()=>ne,arrayBufferToBase64:()=>Xt,arrayBufferToHex:()=>Zt,arrayify:()=>Ce,assertContextVersionOptional:()=>Nr,assertOk:()=>Ki,badRequest:()=>v,booleanToTypedValue:()=>d,buildTypeName:()=>Dn,calculateAge:()=>Ee,calculateAgeString:()=>Xi,canReadResourceType:()=>ea,canWriteResource:()=>ta,canWriteResourceType:()=>Wn,capitalize:()=>I,checkForNull:()=>Kr,compressElement:()=>qo,conceptMapTranslate:()=>qr,conflict:()=>Bi,convertContainedResourcesToBundle:()=>sa,convertToTransactionBundle:()=>Yn,crawlResource:()=>yt,createConstraintIssue:()=>Gt,createFhircastMessagePayload:()=>Nt,createProcessingIssue:()=>Kt,createReference:()=>z,createStructureIssue:()=>y,created:()=>Di,decodeBase64:()=>kr,deepClone:()=>ft,deepEquals:()=>be,deepIncludes:()=>Re,encodeBase64:()=>Or,encryptSHA256:()=>Vr,evalFhirPath:()=>se,evalFhirPathTyped:()=>L,fhirPathArrayEquals:()=>St,fhirPathArrayEquivalent:()=>Et,fhirPathEquals:()=>ar,fhirPathEquivalent:()=>Cn,fhirPathIs:()=>Oe,fhirPathNot:()=>vt,fhirTypeToJsType:()=>ir,findObservationInterval:()=>mo,findObservationReferenceRange:()=>ho,findResourceByCode:()=>bo,forbidden:()=>Fi,formatAddress:()=>Co,formatCodeableConcept:()=>pn,formatCoding:()=>fn,formatDate:()=>Io,formatDateTime:()=>ht,formatFamilyName:()=>wo,formatGivenName:()=>Ao,formatHl7DateTime:()=>Pi,formatHumanName:()=>Ae,formatMoney:()=>_o,formatObservationValue:()=>mn,formatPeriod:()=>ko,formatQuantity:()=>J,formatRange:()=>Fo,formatSearchQuery:()=>js,formatTime:()=>dn,formatTiming:()=>No,generateId:()=>ee,getAllDataTypes:()=>gr,getAllQuestionnaireAnswers:()=>to,getCodeBySystem:()=>pt,getDataType:()=>ie,getDateProperty:()=>Zi,getDisplayString:()=>rn,getElementDefinition:()=>Ve,getElementDefinitionFromElements:()=>Mn,getElementDefinitionTypeName:()=>bt,getExpressionForResourceType:()=>ks,getExpressionsForResourceType:()=>Rr,getExtension:()=>zt,getExtensionValue:()=>io,getIdentifier:()=>ro,getImageSrc:()=>Yi,getNestedProperty:()=>xt,getPathDisplayName:()=>ms,getPropertyDisplayName:()=>Nn,getQuestionnaireAnswers:()=>eo,getRandomString:()=>kt,getReferenceString:()=>ue,getResourceTypes:()=>ds,getSearchParameter:()=>fs,getSearchParameterDetails:()=>br,getSearchParameters:()=>ps,getStatus:()=>Gi,getTypedPropertyValue:()=>A,getTypedPropertyValueWithSchema:()=>Pn,globalSchema:()=>D,gone:()=>_i,indexSearchParameter:()=>Ct,indexSearchParameterBundle:()=>ls,indexStructureDefinitionBundle:()=>Rt,inflateBaseSchema:()=>tr,inflateElement:()=>gn,initFhirPathParserBuilder:()=>me,isAccepted:()=>ji,isCompletedSubscriptionRequest:()=>Mr,isContextVersionRequired:()=>Dr,isCreated:()=>$i,isDataTypeLoaded:()=>yr,isDateString:()=>cr,isDateTimeString:()=>Ie,isEmpty:()=>b,isFhircastResourceType:()=>ni,isGone:()=>Hi,isJwt:()=>Fr,isLowerCase:()=>Pe,isMedplumAccessToken:()=>_r,isNotFound:()=>Qi,isObject:()=>H,isOk:()=>dt,isOperationOutcome:()=>re,isPeriod:()=>ur,isPopulated:()=>sn,isProfileLoaded:()=>Tr,isProfileResource:()=>tn,isQuantity:()=>R,isQuantityEquivalent:()=>lr,isReference:()=>le,isResource:()=>M,isResourceType:()=>xr,isResourceTypeSchema:()=>Pt,isStringArray:()=>Yt,isUUID:()=>po,isValidDate:()=>gt,lazy:()=>Po,loadDataType:()=>On,matchDiscriminant:()=>Tn,matchesAccessPolicy:()=>zn,matchesRange:()=>er,matchesSearchRequest:()=>wr,normalizeErrorString:()=>Zr,normalizeOperationOutcome:()=>Se,notFound:()=>jt,notModified:()=>Ni,operationOutcomeIssueToString:()=>Xr,operationOutcomeToString:()=>Qt,parseCriteriaAsSearchRequest:()=>wt,parseFhirPath:()=>At,parseFilterParameter:()=>Ha,parseHl7DateTime:()=>Ga,parseJWTPayload:()=>nt,parseLogLevel:()=>Wa,parseMappingLanguage:()=>Ca,parseParameter:()=>jn,parseReference:()=>Wi,parseSearchDefinition:()=>Ds,parseSearchRequest:()=>Vs,parseSearchUrl:()=>Cr,parseStructureDefinition:()=>Tt,parseXFhirQuery:()=>$s,preciseEquals:()=>vo,preciseGreaterThan:()=>Eo,preciseGreaterThanOrEquals:()=>ln,preciseLessThan:()=>So,preciseLessThanOrEquals:()=>un,preciseRound:()=>To,projectAdminResourceTypes:()=>Gn,protectedResourceTypes:()=>Hn,removeDuplicates:()=>ke,reorderBundle:()=>Zn,resolveId:()=>Wt,satisfiedAccessPolicy:()=>ra,serializeFhircastSubscriptionRequest:()=>Dt,serverError:()=>qi,setCodeBySystem:()=>fo,setIdentifier:()=>no,singleton:()=>F,sleep:()=>mt,splitN:()=>Ro,streamToBuffer:()=>Za,stringify:()=>Jt,stringifyTypedValue:()=>vr,structureMapTransform:()=>Aa,subsetResource:()=>os,toJsBoolean:()=>V,toPeriod:()=>rs,toTypedValue:()=>g,tooManyRequests:()=>Ui,tryGetDataType:()=>Ne,tryGetJwtExpiration:()=>Ur,tryGetProfile:()=>is,unauthorized:()=>Mi,validateFhircastSubscriptionRequest:()=>rt,validateResource:()=>Jo,validateResourceType:()=>za,validationError:()=>h,validationRegexes:()=>we});module.exports=Oi(Xa);var Te=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},Q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},ve=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new ct(e,this.prefixParselets,this.infixParselets)}},ct=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 Lt="ok",ut="created",Bt="gone",qt="not-modified",$t="not-found",Wr="conflict",zr="unauthorized",Jr="forbidden",Yr="too-many-requests",lt="accepted",Vi={resourceType:"OperationOutcome",id:Lt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Di={resourceType:"OperationOutcome",id:ut,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Ni={resourceType:"OperationOutcome",id:qt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},jt={resourceType:"OperationOutcome",id:$t,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Mi={resourceType:"OperationOutcome",id:zr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Fi={resourceType:"OperationOutcome",id:Jr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},_i={resourceType:"OperationOutcome",id:Bt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ui={resourceType:"OperationOutcome",id:Yr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Li(r){return{resourceType:"OperationOutcome",id:lt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function v(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function Bi(r){return{resourceType:"OperationOutcome",id:Wr,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function qi(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function re(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function dt(r){return r.id===Lt||r.id===ut||r.id===qt||r.id===lt}function $i(r){return r.id===ut}function ji(r){return r.id===lt}function Qi(r){return r.id===$t}function Hi(r){return r.id===Bt}function Gi(r){switch(r.id){case Lt:return 200;case ut:return 201;case lt:return 202;case qt:return 304;case zr:return 401;case Jr:return 403;case $t:return 404;case Wr:return 409;case Bt:return 410;case Yr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Ki(r,e){if(!dt(r)||e===void 0)throw new p(r)}var p=class extends Error{constructor(e,t){super(Qt(e)),this.outcome=e,this.cause=t}};function Se(r){return r instanceof p?r.outcome:re(r)?r:v(Zr(r))}function Zr(r){return r?typeof r=="string"?r:r instanceof Error?r.message:re(r)?Qt(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Qt(r){let e=r.issue?.map(Xr)??[];return e.length>0?e.join("; "):"Unknown error"}function Xr(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function Ht(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function y(r,e){return Ht("structure",e,r)}function Gt(r,e){return Ht("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Kt(r,e,t,n){return Ht("processing",e,r,{...n,error:t})}function z(r){let e=ue(r),t=rn(r);return t===e?{reference:e}:{reference:e,display:t}}function ue(r){return le(r)?r.reference:`${r.resourceType}/${r.id}`}function Wt(r){if(r)return le(r)?r.reference.split("/")[1]:r.id}function Wi(r){if(r?.reference===void 0)throw new p(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new p(h("Unable to parse reference string."));return[e,t]}function tn(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function rn(r){if(tn(r)){let e=zi(r);if(e)return e}if(r.resourceType==="Device"){let e=Ji(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:ue(r)}function zi(r){let e=r.name;if(e&&e.length>0)return Ae(e[0])}function Ji(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Yi(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=en(t);if(n)return n}else return en(e)}function en(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Zi(r){return r?new Date(r):void 0}function Ee(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),f=a-i;(u<o||u===o&&l<s)&&f--;let E=a*12+u-(i*12+o);l<s&&E--;let j=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:f,months:E,days:j}}function Xi(r,e){let{years:t,months:n,days:i}=Ee(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 eo(r){let e={};return nn(r.item,e),e}function nn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),nn(t.item,e)}function to(r){let e={};return on(r.item,e),e}function on(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),on(t.item,e)}function ro(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 no(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 io(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t?.valueString}function zt(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 Jt(r,e){return JSON.stringify(r,oo,e?2:void 0)}function oo(r,e){return!so(r)&&b(e)?void 0:e}function so(r){return!!/\d+$/.exec(r)}function b(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!sn(r):!1}function sn(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 be(r,e,t){return r===e||b(r)&&b(e)?!0:b(r)||b(e)?!1:Array.isArray(r)&&Array.isArray(e)?ao(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?co(r,e,t):(H(r)||H(e),!1)}function ao(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!be(r[t],e[t]))return!1;return!0}function co(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(!be(o,s,i))return!1}return!0}function Re(r,e){return b(r)?!0:b(e)?!1:Array.isArray(r)&&Array.isArray(e)?uo(r,e):Array.isArray(r)||Array.isArray(e)?!1:H(r)&&H(e)?lo(r,e):H(r)||H(e)?!1:r===e}function uo(r,e){return e.every(t=>r.some(n=>Re(n,t)))}function lo(r,e){return Object.entries(e).every(([t,n])=>t in r&&Re(r[t],n))}function ft(r){return JSON.parse(JSON.stringify(r))}function po(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function H(r){return r!==null&&typeof r=="object"}function Yt(r){return r.every(e=>typeof e=="string")}var an=[];for(let r=0;r<256;r++)an.push(r.toString(16).padStart(2,"0"));function Zt(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=an[e[n]];return t.join("")}function Xt(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 I(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Pe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function pt(r,e){return r.coding?.find(t=>t.system===e)?.code}function fo(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 mo(r,e,t,n){return r.qualifiedInterval?.find(i=>cn(i,e)&&xo(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function ho(r,e,t){return r.qualifiedInterval?.find(n=>cn(n,e)&&t.includes(n.condition))}function cn(r,e){return go(r,e)&&yo(r,e)}function go(r,e){return!r.gender||r.gender===e.gender}function yo(r,e){return!r.age||er(Ee(e.birthDate).years,r.age)}function xo(r,e,t){return!!r.range&&er(e,r.range,t)}function er(r,e,t){return(e.low?.value===void 0||ln(r,e.low.value,t))&&(e.high?.value===void 0||un(r,e.high.value,t))}function To(r,e){return parseFloat(r.toFixed(e))}function vo(r,e,t){return U(r,t)===U(e,t)}function So(r,e,t){return U(r,t)<U(e,t)}function Eo(r,e,t){return U(r,t)>U(e,t)}function un(r,e,t){return U(r,t)<=U(e,t)}function ln(r,e,t){return U(r,t)>=U(e,t)}function U(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function bo(r,e,t){return r.find(n=>typeof e=="string"?pt(n.code||{},t)===e:pt(n.code||{},t)===pt(e,t))}function Ce(r){if(r)return Array.isArray(r)?r:[r]}var mt=r=>new Promise(e=>{setTimeout(e,r)});function Ro(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);o<0&&(o=r.length),n.push(r.slice(0,o)),r=r.slice(o+e.length)}return r&&n.push(r),n}function Po(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function ne(r,e){return r?(r.push(e),r):[e]}function Co(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ae(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=de(r.text);if(n)return n}return t.join(" ").trim()}function Ao(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function wo(r){return de(r.family)??""}function gt(r){return r instanceof Date&&!isNaN(r.getTime())}function Io(r,e,t){if(!r)return"";let n=new Date(r);return gt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function dn(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return gt(n)?n.toLocaleTimeString(e,t):""}function ht(r,e,t){if(!r)return"";let n=new Date(r);return gt(n)?n.toLocaleString(e,t):""}function ko(r,e,t){return!r||!r.start&&!r.end?"":ht(r.start,e,t)+" - "+ht(r.end,e,t)}var Oo={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Vo={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Do={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function No(r){if(!r)return"";let e=[];return Mo(e,r.repeat),r.event&&e.push(r.event.map(t=>ht(t)).join(", ")),I(e.join(" ").trim())}function Mo(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Oo[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Vo[i]):r.push("per "+n+" "+Do[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(I).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>dn(o)).join(", "))}function Fo(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=Lo(n.value,e),`> ${J(n,e)}`):`>= ${J(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Uo(i.value,e),`< ${J(i,e)}`):`<= ${J(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${J(n,e)} - ${J(i,e)}`)}function J(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function _o(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function pn(r){if(!r)return"";let e=de(r.text);return e||(r.coding?r.coding.map(t=>fn(t)).join(", "):"")}function fn(r){return de(r?.display)??de(r?.code)??""}function mn(r){if(!r)return"";if("component"in r)return r.component.map(t=>mn(t)).join(" / ");if(r.valueQuantity)return J(r.valueQuantity);if(r.valueCodeableConcept)return pn(r.valueCodeableConcept);let e=de(r.valueString);return e||""}function de(r){return typeof r=="string"?r:void 0}function Uo(r,e,t=1){return(hn(r,e)+t)*Math.pow(10,-e)}function Lo(r,e,t=1){return(hn(r,e)-t)*Math.pow(10,-e)}function hn(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Bo={"http://hl7.org/fhirpath/System.String":"string"};function qo(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:Bo[t.code]??t.code})),e}function gn(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 tr(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,gn(i,o)])),constraints:[],innerTypes:[]};return e}var yn={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"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};var rr="http://unitsofmeasure.org",jo="http://loinc.org",Qo="http://snomed.info/sct",Ho="http://www.nlm.nih.gov/research/umls/rxnorm",Go="http://www.ama-assn.org/go/cpt",Ko="http://hl7.org/fhir/sid/icd-10",Wo="http://hl7.org";function yt(r,e,t,n){new nr(r,e,t,n).crawl()}var nr=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=ie(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(g(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=M(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);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=xt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Ce(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Pe(e.type.charAt(0))){let n=ie(e.type);this.crawlObject(e,n,t)}}};function xt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let u of a)s.push(A(u,o));else a!==void 0&&s.push(A(a,o));i=s}return i}var ir={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"},we={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:/.*/},zo={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Jo(r,e){new or(r.resourceType,r,e).validate()}var or=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?this.schema=Tt(n):this.schema=ie(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new p(h("Missing resource type"));this.constraintsCheck(g(this.rootResource),this.schema,e),sr(this.rootResource,e,this.issues),yt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new p({resourceType:"OperationOutcome",issue: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 u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(y(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(y(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(y(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),xn(a,s)||this.issues.push(y(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(f=>[f.name,0])):void 0;for(let f of u){this.constraintsCheck(f,s,n),this.checkPropertyValue(f,n);let E=Xo(f,s.slicing);E&&l&&(l[E]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(y(n,"Missing required property")),!1):b(e)?(this.issues.push(y(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Pe(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(y(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)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!Zo(e,o,t)&&this.issues.push(y(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in zo)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Gt(n,o));return}}}isExpressionTrue(e,t,n){try{let i=L(e.expression,[t],{"%context":t,"%resource":g(this.currentResource[this.currentResource.length-1]),"%rootResource":g(this.rootResource),"%ucum":g(rr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Kt(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=es(e);if(n){let{type:o,value:s}=n;if(!(o in ir)){this.issues.push(y(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=ir[o];if(typeof s!==a){s!==null&&this.issues.push(y(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&&yt(i.value,this,ie("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(y(n,"String must contain non-whitespace content"));return}let i=we[t];i&&!i.exec(e)&&this.issues.push(y(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(y(n,"Invalid numeric value")):Yo(t)&&!Number.isInteger(e)?this.issues.push(y(n,"Expected number to be an integer")):t===c.positiveInt&&e<=0?this.issues.push(y(n,"Expected number to be positive")):t===c.unsignedInt&&e<0&&this.issues.push(y(n,"Expected number to be non-negative"))}};function Yo(r){return r===c.integer||r===c.positiveInt||r===c.unsignedInt}function Zo(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!A(r,i);return!1}function sr(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(y(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(y(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(y(`${o}[${a}]`,"Invalid null value")):i[a]&&sr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&sr(i,o,t)}}function xn(r,e){return!(e.pattern&&!Re(r,e.pattern)||e.fixed&&!be(r,e.fixed))}function Tn(r,e,t,n){if(Array.isArray(r))return!1;let i=(n??t.elements)[e.path],o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(xn(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Xo(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Ce(xt(r,n.path))?.some(i=>Tn(i,n,t))))return t.name}}function es(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:c.boolean,value:r}]}function g(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:c.integer,value:r}:typeof r=="number"?{type:c.decimal,value:r}:typeof r=="boolean"?{type:c.boolean,value:r}:typeof r=="string"?{type:c.string,value:r}:R(r)?{type:c.Quantity,value:r}:M(r)?{type:r.resourceType,value:r}:{type:c.BackboneElement,value:r}}function V(r){return r.length===0?!1:!!r[0].value}function F(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function A(r,e){if(!r.value)return;let t=Ve(r.type,e);return t?Pn(r.value,e,t):ts(r,e)}function Pn(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined",s;if(t.path.endsWith("[x]")){let a=t.path.split(".").pop().replace("[x]","");for(let u of n){let l=a+I(u.code);if(i=r[l],s=r["_"+l],i!==void 0||s!==void 0){o=u.code;break}}}else console.assert(n.length===1,"Expected single type",t.path),i=r[e],o=n[0].code,s=r["_"+e];if(s)if(Array.isArray(i))for(let a=0;a<Math.max(i.length,s.length);a++)i[a]=Rn(i[a],s[a]);else i=Rn(i,s);if(!b(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>vn(a,o)):vn(i,o)}function vn(r,e){return e==="Resource"&&M(r)&&(e=r.resourceType),{type:e,value:r}}function ts(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in c){let o=e+I(i);if(o in t){n=t[o];break}}if(!b(n))return Array.isArray(n)?n.map(g):g(n)}function ke(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(V(ar(t,i))){n=!0;break}n||e.push(t)}return e}function vt(r){return d(!V(r))}function St(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>V(ar(t,e[n]))))}function ar(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):R(t)&&R(n)?d(lr(t,n)):d(typeof t=="object"&&typeof n=="object"?dr(r,e):t===n)}function Et(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(Sn),e.sort(Sn),d(r.every((t,n)=>V(Cn(t,e[n])))))}function Cn(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):R(s)&&R(a)?d(lr(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"?dr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Sn(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 Oe(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 cr(t);case"DateTime":return Ie(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return ur(t);case"Quantity":return R(t);default:return typeof t=="object"&&t?.resourceType===e}}function cr(r){return typeof r=="string"&&!!we.date.exec(r)}function Ie(r){return typeof r=="string"&&!!we.dateTime.exec(r)}function ur(r){return!!(r&&typeof r=="object"&&("start"in r&&Ie(r.start)||"end"in r&&Ie(r.end)))}function rs(r){if(r){if(cr(r))return{start:En(r,"0000-00-00T00:00:00.000Z"),end:En(r,"xxxx-12-31T23:59:59.999Z")};if(Ie(r))return{start:r,end:r};if(ur(r))return r}}function En(r,e){return r+e.substring(r.length)}function R(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function lr(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 dr(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(bn(o)&&bn(s)){if(!dr(o,s))return!1}else if(o!==s)return!1}return!0}function bn(r){return r!==null&&typeof r=="object"}function Rn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ns(r??{},e)}return r}function ns(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Tt(r){return new fr(r).parse()}var De=tr(yn),mr=Object.create(null),An=Object.create(null);function hr(r){let e;return r?(e=An[r],e||(e=An[r]=Object.create(null))):e=De,e}function Rt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)On(n,e)}function On(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Tt(r),n=hr(e);n[r.name]=t,e&&r.url===e&&(mr[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function gr(){return De}function yr(r){return!!De[r]}function Ne(r,e){return hr(e)[r]}function ie(r,e){let t=hr(e)[r];if(!t)throw new p(v("Unknown data type: "+r));return t}function xr(r){let e=De[r];return e&&Pt(e)}function Tr(r){return!!mr[r]}function is(r){return mr[r]}var fr=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:us(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=pr(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[pr(e,n.path)]=t;break}n=n.parent}if(!n){let i=pr(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&&!pe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:bt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:pe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){cs(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&&!pe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!pe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!pe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(pe(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={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=bt(e)),n||(n=zt(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=In(e.max),n=e.base?.max?In(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(A(i,"fixed[x]")),pattern:kn(A(i,"pattern[x]")),binding:e.binding}}};function os(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=De[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+I(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!ss.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(wn):[wn]},r}var wn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},ss=["resourceType","id","meta"];function In(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function pr(r,e=""){return as(r.path,e)}function as(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function pe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function kn(r){return Array.isArray(r)&&r.length>0?r[0]:b(r)?void 0:r}function cs(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 us(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}var c={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function ls(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Ct(t)}}function Ct(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 bt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Dn((r.base?.path??r.path)?.split(".")):e}function Dn(r){return r.length===1?r[0]:r.map(I).join("")}function Pt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function ds(){return Object.values(gr()).filter(Pt).map(r=>r.name)}function ps(r){return D.types[r]?.searchParams}function fs(r,e){return D.types[r]?.searchParams?.[e]}function ms(r){let e=r.replaceAll("[x]","").split(".").pop();return Nn(e)}function Nn(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(gs).join(" ").replace("_"," ").replace(/\s+/g," ")}var hs=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function gs(r){let e=r.toUpperCase();return r===e?r:hs.has(e)?e:e.charAt(0)+r.slice(1)}function Ve(r,e){let t=Ne(r);if(t)return Mn(t.elements,e)}function Mn(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 M(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function le(r){return!!(r&&typeof r=="object"&&"reference"in r)}var D={types:{}};function vr(r){switch(r.type){case c.uuid:case c.uri:case c.url:case c.string:case c.oid:case c.markdown:case c.id:case c.code:case c.canonical:case c.base64Binary:case c.SystemString:case c.date:case c.dateTime:case c.instant:return r.value;case c.Identifier:return`${r.value.system??""}|${r.value.value}`;case c.Coding:return Vn(r.value);case c.CodeableConcept:return r.value.coding?.map(Vn).join(",")??r.value.text;case c.HumanName:return r.value.text?r.value.text:Ae(r.value);case c.unsignedInt:case c.positiveInt:case c.integer:case c.decimal:return r.value.toString();case c.boolean:return r.value?"true":"false";case c.Extension:return r.value.url;case c.ContactPoint:return r.value.value;case c.Quantity:case c.Age:case c.Count:case c.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case c.Reference:return r.value.reference;default:return M(r.value)?z(r.value).reference:JSON.stringify(r)}}function Vn(r){return r?`${r.system??""}|${r.code}`:""}function fe(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 Me=()=>[],P={empty:(r,e)=>d(e.length===0),hasValue:(r,e)=>d(e.length!==0),exists:(r,e,t)=>t?d(e.filter(n=>V(t.eval(r,[n]))).length>0):d(e.length>0),all:(r,e,t)=>d(e.every(n=>V(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:Me,supersetOf:Me,count:(r,e)=>[{type:c.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===P.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>V(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Me,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return ke([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[g(!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 V(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);if(typeof t=="boolean")return[{type:c.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(P.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="number"?[{type:c.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:c.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:c.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(P.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.date,value:fe(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(P.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:c.dateTime,value:fe(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(P.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="number"?[{type:c.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:c.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:c.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(P.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return R(t)?[{type:c.Quantity,value:t}]:typeof t=="number"?[{type:c.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:c.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:c.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(P.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return t==null?[]:R(t)?[{type:c.string,value:`${t.value} '${t.unit}'`}]:[{type:c.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(P.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:c.time,value:fe("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(P.toTime(r,e).length===1),indexOf:(r,e,t)=>N((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>N((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},r,e,t,n),startsWith:(r,e,t)=>N((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>N((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>N((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>N(t=>t.toUpperCase(),r,e),lower:(r,e)=>N(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>N((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>N((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>N((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>N(t=>t.length,r,e),toChars:(r,e)=>N(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>B(Math.abs,r,e),ceiling:(r,e)=>B(Math.ceil,r,e),exp:(r,e)=>B(Math.exp,r,e),floor:(r,e)=>B(Math.floor,r,e),ln:(r,e)=>B(Math.log,r,e),log:(r,e,t)=>B((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>B(Math.pow,r,e,t),round:(r,e)=>B(Math.round,r,e),sqrt:(r,e)=>B(Math.sqrt,r,e),truncate:(r,e)=>B(t=>t|0,r,e),children:Me,descendants:Me,trace:(r,e,t)=>e,now:()=>[{type:c.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:c.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:c.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=P.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=P.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Ee(o[0].value,s[0].value);return[{type:c.Quantity,value:{value:u[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof _?n=t.name:t instanceof G&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:c.boolean,value:Oe(i,n)})):[]},not:(r,e)=>P.toBoolean(r,e).map(t=>({type:c.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return g(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:c.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:c.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:c.BackboneElement,value:{namespace:"System",name:"Integer"}}:M(t)?{type:c.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:c.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:c.boolean,value:o.value?.resourceType===i}))}};function N(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(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(g):[g(o)]}function B(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(t,1),o=R(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(f=>f.eval(e,t)[0]?.value)),u=o?c.Quantity:t[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function q(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var Fe=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},k=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},_=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=e.variables[this.name];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)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return M(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},_e=class{eval(){return[]}toString(){return"{}"}},Ue=class extends Te{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},Y=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return P.ofType(e,this.left.eval(e,t),this.right)}},S=class extends Q{},C=class extends S{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,u=R(s)?s.value:s,l=R(a)?a.value:a,f=this.impl(u,l);return typeof f=="boolean"?d(f):R(s)?[{type:c.Quantity,value:{...s,value:f}}]:[g(f)]}},Le=class extends Q{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:c.string,value:o.map(s=>s.value).join("")}]:o}},Be=class extends S{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))}},qe=class extends S{constructor(e,t){super("in",e,t)}eval(e,t){let n=F(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},G=class extends Q{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},oe=class extends Q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ke([...n,...i])}},$e=class extends S{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return St(n,i)}},je=class extends S{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return vt(St(n,i))}},Qe=class extends S{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Et(n,i)}},He=class extends S{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return vt(Et(n,i))}},Z=class extends S{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(Oe(n[0],i))}},Ge=class extends S{constructor(e,t){super("and",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},Ke=class extends S{constructor(e,t){super("or",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},We=class extends S{constructor(e,t){super("xor",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},ze=class extends S{constructor(e,t){super("implies",e,t)}eval(e,t){let n=F(this.left.eval(e,t),"boolean"),i=F(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},$=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=P[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},X=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var ys=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
|
|
2
|
+
`))}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()===" "&&xs(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 xs(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&ys.includes(r.value)))}var Je=["true","false"],Ye=["!=","!~","<=",">=","{}","->"];function Fn(r){return new K(r,Je,Ye).tokenize()}var m={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},Ts={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},vs={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new X(e,t)},precedence:m.Indexer},Ss={parse(r,e){if(!(e instanceof _))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:m.FunctionCall};function Es(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 me(){return new ve().registerPrefix("String",{parse:(r,e)=>new k({type:c.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new k({type:c.dateTime,value:fe(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new k({type:c.Quantity,value:Es(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new k({type:e.value.includes(".")?c.decimal:c.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new k({type:c.boolean,value:!0})}).registerPrefix("false",{parse:()=>new k({type:c.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new _(e.value)}).registerPrefix("{}",{parse:()=>new _e}).registerPrefix("(",Ts).registerInfix("[",vs).registerInfix("(",Ss).prefix("+",m.UnaryAdd,(r,e)=>new Ue("+",e,t=>t)).prefix("-",m.UnarySubtract,(r,e)=>new C("-",e,e,(t,n)=>-n)).infixLeft(".",m.Dot,(r,e,t)=>new G(r,t)).infixLeft("/",m.Divide,(r,e,t)=>new C("/",r,t,(n,i)=>n/i)).infixLeft("*",m.Multiply,(r,e,t)=>new C("*",r,t,(n,i)=>n*i)).infixLeft("+",m.Add,(r,e,t)=>new C("+",r,t,(n,i)=>n+i)).infixLeft("-",m.Subtract,(r,e,t)=>new C("-",r,t,(n,i)=>n-i)).infixLeft("|",m.Union,(r,e,t)=>new oe(r,t)).infixLeft("=",m.Equals,(r,e,t)=>new $e(r,t)).infixLeft("!=",m.NotEquals,(r,e,t)=>new je(r,t)).infixLeft("~",m.Equivalent,(r,e,t)=>new Qe(r,t)).infixLeft("!~",m.NotEquivalent,(r,e,t)=>new He(r,t)).infixLeft("<",m.LessThan,(r,e,t)=>new C("<",r,t,(n,i)=>n<i)).infixLeft("<=",m.LessThanOrEquals,(r,e,t)=>new C("<=",r,t,(n,i)=>n<=i)).infixLeft(">",m.GreaterThan,(r,e,t)=>new C(">",r,t,(n,i)=>n>i)).infixLeft(">=",m.GreaterThanOrEquals,(r,e,t)=>new C(">=",r,t,(n,i)=>n>=i)).infixLeft("&",m.Ampersand,(r,e,t)=>new Le(r,t)).infixLeft("and",m.And,(r,e,t)=>new Ge(r,t)).infixLeft("as",m.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",m.Contains,(r,e,t)=>new Be(r,t)).infixLeft("div",m.Divide,(r,e,t)=>new C("div",r,t,(n,i)=>n/i|0)).infixLeft("in",m.In,(r,e,t)=>new qe(r,t)).infixLeft("is",m.Is,(r,e,t)=>new Z(r,t)).infixLeft("mod",m.Modulo,(r,e,t)=>new C("mod",r,t,(n,i)=>n%i)).infixLeft("or",m.Or,(r,e,t)=>new Ke(r,t)).infixLeft("xor",m.Xor,(r,e,t)=>new We(r,t)).infixLeft("implies",m.Implies,(r,e,t)=>new ze(r,t))}var bs=me();function At(r){return new Fe(r,bs.construct(Fn(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]=g(t[n]))}return L(r,t).map(n=>n.value)}function L(r,e,t){let n=t??{};return At(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Er=(f=>(f.BOOLEAN="BOOLEAN",f.NUMBER="NUMBER",f.QUANTITY="QUANTITY",f.TEXT="TEXT",f.REFERENCE="REFERENCE",f.CANONICAL="CANONICAL",f.DATE="DATE",f.DATETIME="DATETIME",f.PERIOD="PERIOD",f.UUID="UUID",f))(Er||{});function br(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=Ps(r,e)),t}function Rs(r,e,t){let n=D.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Ps(r,e){let t=e.code,n=ws(t),i=Rr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let u=Ze(a);u.length===1&&u[0]instanceof S?o.propertyTypes.add("boolean"):_n(o,Ze(a),r,1)}let s={columnName:n,type:Is(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Rs(r,t,s),s}function _n(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){Cs(r,i);return}let o=i.toString(),s=Ve(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,u=n+1;if(u<e.length&&e[u]instanceof X&&(a=!0,u++),s.isArray&&!a&&(r.array=!0),u>=e.length){r.elementDefinitions.push(s);for(let l of s.type)r.propertyTypes.add(l.code);return}for(let l of s.type){let f=l.code;As(f)&&(f=s.type[0].code),_n(r,e,f,u)}}function Cs(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 Z){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function As(r){return r==="Element"||r==="BackboneElement"}function ws(r){return r.split("-").reduce((e,t,n)=>e+(n?I(t):t),"")}function Is(r,e){switch(r.type){case"date":return e.size===1&&e.has(c.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(c.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(c.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function Rr(r,e){let t=[],n=At(e);return Sr(r,n.child,t),t}function ks(r,e){let t=Rr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Sr(r,e,t){e instanceof oe?(Sr(r,e.left,t),Sr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Ze(r){if(r instanceof Y||r instanceof X)return[Ze(r.left),r].flat();if(r instanceof S)return[r];if(r instanceof G)return[Ze(r.left),Ze(r.right)].flat();if(r instanceof $){if(r.name==="where"&&!(r.args[0]instanceof Z))return[];if(r.name==="last")return[]}return[r]}var Os=20,Bn=(x=>(x.EQUALS="eq",x.NOT_EQUALS="ne",x.GREATER_THAN="gt",x.LESS_THAN="lt",x.GREATER_THAN_OR_EQUALS="ge",x.LESS_THAN_OR_EQUALS="le",x.STARTS_AFTER="sa",x.ENDS_BEFORE="eb",x.APPROXIMATELY="ap",x.CONTAINS="contains",x.EXACT="exact",x.TEXT="text",x.NOT="not",x.ABOVE="above",x.BELOW="below",x.IN="in",x.NOT_IN="not-in",x.OF_TYPE="of-type",x.MISSING="missing",x.IDENTIFIER="identifier",x.ITERATE="iterate",x))(Bn||{}),qn={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"},Pr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Vs(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return $n(r,t)}function Cr(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return $n(e,r.searchParams.entries())}function Ds(r){return Cr(new URL(r,"https://example.com/"))}function wt(r){return Cr(new URL(r,"https://api.medplum.com/"))}function $n(r,e){let t={resourceType:r};for(let[n,i]of e)Ns(t,n,i);return t}function Ns(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n==="_has"||e.includes(".")){r.filters=ne(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Ms(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=Un(t);i==="iterate"&&(s.modifier="iterate"),r.include=ne(r.include,s);break}case"_revinclude":{let s=Un(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=ne(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=D.types[r.resourceType]?.searchParams?.[n];s?r.filters=ne(r.filters,jn(s,i,t)):r.filters=ne(r.filters,Us(n,i,t))}}}function Ms(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 jn(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Fs(r,t);case"reference":case"string":case"token":case"uri":return _s(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Fs(r,e){let{operator:t,value:n}=Ls(e);return{code:r.code,operator:t,value:n}}function _s(r,e,t){return{code:r.code,operator:Bs(e),value:t}}function Us(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Pr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ls(r){let e=r.substring(0,2),t=Pr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Bs(r){return qn[r]??"eq"}function Un(r){let e=r.split(":");if(e.includes("*"))throw new p(v("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new p(v(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new p(v(`Invalid include value '${r}'`))}var qs=/{{([^{}]+)}}/g;function $s(r,e){return r=r.replaceAll(qs,(t,n)=>{let i=L(n,[],e);return i.length!==1?"":vr(i[0])}),wt(r)}function js(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Qs(t))),r.sortRules&&r.sortRules.length>0&&e.push(Hs(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(Ln("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Ln("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Qs(r){let e=r.operator in qn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in Pr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Hs(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Ln(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function wr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Gs(r,e,t))return!1}return!0}function Gs(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=se(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Ks(r,t,n);case"string":case"uri":return Qn(r,t,n);case"token":return Ws(r,t,n);case"date":return Js(r,t,n);default:return!1}}function Ks(r,e,t){let n=se(t.expression,r),i=It(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(u=>u?.endsWith("/"+s))),a)return!i}return i}function Ws(r,e,t){return br(r.resourceType,t).type==="BOOLEAN"?zs(r,e,t):Qn(r,e,t,!0)}function zs(r,e,t){let n=se(t.expression,r),i=e.value==="true",o=n.includes(i);return It(e.operator)?!o:o}function Qn(r,e,t,n){let i=se(t.expression,r),o=e.value.split(","),s=It(e.operator);for(let a of i)for(let u of o)if(Ar(a,e.operator,u,n))return!s;return s}function Ar(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Ar(r,e,o,!1)&&(!s||Ar(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 Js(r,e,t){let n=se(t.expression,r),i=e.value.split(","),o=It(e.operator);for(let s of n)for(let a of i)if(Ys(s,e.operator,a))return!o;return o}function Ys(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 It(r){return r==="ne"||r==="not"}var Zs={resourceType:"*"},Hn=["DomainConfiguration","JsonWebKey","Login"],Gn=["PasswordChangeRequest","Project","ProjectMembership","User"],Kn=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(Kn||{}),Xs=["read","vread","history","history-instance"];function ea(r,e){if(r.resource){for(let t of r.resource)if(Ir(t.resourceType,e))return!0}return!1}function Wn(r,e){if(Hn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Ir(t.resourceType,e)&&!t.readonly)return!0}return!1}function ta(r,e){let t=e.resourceType;return Wn(r,t)?zn(r,e,!1):!1}function zn(r,e,t){if(r.resource){for(let n of r.resource)if(Jn(e,t?"read":"update",n))return!0}return!1}function ra(r,e,t){if(!t)return Zs;if(t.resource){for(let n of t.resource)if(Jn(r,e,n))return n}}function Jn(r,e,t){let n=r.resourceType;return!(!Ir(t.resourceType,n)||t.readonly&&!Xs.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!wr(r,wt(t.criteria)))}function Ir(r,e){return r===e||r==="*"&&!Gn.includes(e)}function kr(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 Or(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 kt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Zt(r.buffer)}async function Vr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ee(){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 Yn(r){let e={};r=ft(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=ee(),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)=>na(i,o,e),2);return Zn(JSON.parse(n))}function na(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 Zn(r){let e=oa(r),{sorted:t,cycles:n}=ia(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let u=i[a],l={...u,request:{...u.request,method:"PUT"}};o.push(l)}return{...r,entry:o}}function ia(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}t[o]=1,s.push(o);let a=!1;for(let u of r[o])i(u,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Xn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(le(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Xn(n,e)}}function oa(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&&Xn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function sa(r){r=ft(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=ee());return Yn(e)}var Xe=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 O={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var he=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}},et=class{constructor(){this.emitter=new he}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var Ot={"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"},ti=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Vt=["DiagnosticReport-update"];function Dr(r){return Vt.includes(r)}function Nr(r){if(Vt.includes(r))throw new p(h(`'context.version' is required for '${r}'.`))}var ri={"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 ni(r){return ti.includes(r)}function Mr(r){return!!r.endpoint}function Dt(r){if(!rt(r))throw new p(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return Mr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function rt(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(!Ot[o])return!1;return!(Mr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function ei(r,e,t,n){if(typeof e!="object")throw new p(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new p(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new p(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!ni(e.resourceType))throw new p(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function aa(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)ei(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new p(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)ei(r,s,t,n)}}function ca(r,e){let t=new Map,n=ri[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new p(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));aa(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new p(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new p(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function Nt(r,e,t,n){if(!(r&&typeof r=="string"))throw new p(h("Must provide a topic."));if(!Ot[e])throw new p(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Ot).join(", ")}`));if(typeof t!="object")throw new p(h("context must be a context object or array of context objects."));if(Vt.includes(e)&&!n)throw new p(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return ca(e,i),{timestamp:new Date().toISOString(),id:ee(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var tt=class extends et{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new p(h("Subscription request should contain an endpoint."));if(!rt(e))throw new p(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 ua(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=kr(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 Fr(r){return r.split(".").length===3}function nt(r){let[e,t,n]=r.split(".");return ua(t)}function _r(r){try{return typeof nt(r).login_id=="string"}catch{return!1}}function Ur(r){try{let t=nt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var la,w=class{constructor(e){this[la]="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)}};la=Symbol.toStringTag;var ge=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new Mt)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?Jt(t):void 0)}},Mt=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Lr=class extends ge{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 da="3.0.2-4de37800",li=O.FHIR_JSON+", */*; q=0.1",pa="https://api.medplum.com/",fa=1e3,ma=6e4,ha=0,ii="Binary/",oi={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},di=(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))(di||{}),pi=(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))(pi||{}),fi=(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))(fi||{}),mi=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(mi||{}),Br=class extends he{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??ga(),this.storage=t?.storage??new ge,this.createPdfImpl=t?.createPdf,this.baseUrl=ai(t?.baseUrl??pa),this.fhirBaseUrl=ai(Ft(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=Ft(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=Ft(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=Ft(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"?ha:ma),this.cacheTime>0?this.requestCache=new Xe(t?.resourceCacheSize??fa):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise(o=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new w(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,O.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(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:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w((async()=>{let l=await this.get(o,i);if(l.entry)for(let f of l.entry)this.cacheResource(f.resource);return l})());return this.setCacheEntry(s,u),u}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u),u}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new w(this.search(t,n,i).then(ui));return this.setCacheEntry(s,u),u}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield ui(a),o=u?.url?new URL(u.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 oi;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 w(Promise.reject(new Error("Missing reference")));if(i==="system")return new w(Promise.resolve(oi));let[o,s]=i.split("/");return!o||!s?new w(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(yr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|
|
@@ -39,5 +39,6 @@
|
|
|
39
39
|
expression,
|
|
40
40
|
target
|
|
41
41
|
}
|
|
42
|
-
}`.replace(/\s+/g," "),a=await this.graphql(s);vt(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Et(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t){if(ur(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});s?vt([s],t):console.warn(`No StructureDefinition found for ${t}!`)})());return this.setCacheEntry(n,o),o}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 createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,f=()=>l.abort();s?.signal?.addEventListener("abort",f);let E=$=>{s?.signal?.removeEventListener("abort",f),$ instanceof Error?u($):a($)};l.responseType="json",l.onabort=()=>E(new Error("Request aborted")),l.onerror=()=>E(new Error("Request error")),o&&(l.upload.onprogress=$=>o($),l.upload.onload=$=>o($)),l.onload=()=>{l.status>=200&&l.status<300?E(l.response):E(new d(Se(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),l.setRequestHeader("X-Medplum","extended"),l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=z(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=z(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[z(t)],encounter:s,subject:a,sender:o?z(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")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,O.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},O.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",Ht(t),"$push"),{destination:ue(n),body:i,contentType:o,waitForResponse:s},O.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||ue(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=wr(t),this.medplumServer=Ar(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.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();return i.startsWith(zn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:zn+a.id,title:i},...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;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await Zn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}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 w(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new d(Bt);let u=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&u&&l==="follow")return this.request("GET",u,{...o,body:void 0});let f;if(a)try{f=await t.json()}catch(E){throw console.error("Error parsing response",t.status,E),E}else f=await t.text();if(t.status>=400)throw new d(Se(f));return f}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);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(u){this.retryCatch(a,i,u)}await pt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let u=await Zn(a);u&&(i=await this.fetchWithRetry(u,s))}await pt(o)}return this.parseResponse(i,"POST",t)}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,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(Se(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.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!ut(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=ti),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=O.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=Ct();sessionStorage.setItem("pkceState",t);let n=Ct();sessionStorage.setItem("codeVerifier",n);let i=await Er(n),o=Jt(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??Yn()),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??Yn()),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=Sr(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(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",It(i),O.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!et(t))throw new d(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",It(t),O.FORM_URL_ENCODED)}fhircastConnect(t){return new Ze(t)}async fhircastPublish(t,n,i,o){return br(n)?this.post(`/fhircast/STU3/${t}`,kt(t,n,i,o),O.JSON):(Rr(n),this.post(`/fhircast/STU3/${t}`,kt(t,n,i),O.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":O.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 d(v(a.error_description))}catch(a){throw new d(v("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(Cr(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{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}};function zs(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Yn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function Xn(r){return r.endsWith("/")?r:r+"/"}function Vt(r,e){return new URL(e,r).toString()}async function Zn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(re(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function ei(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var Js={aws_ssm_parameter_store:"aws_ssm_parameter_store"};var Or="http://unitsofmeasure.org",Ys="http://loinc.org",Xs="http://snomed.info/sct",Zs="http://www.nlm.nih.gov/research/umls/rxnorm",ea="http://www.ama-assn.org/go/cpt",ta="http://hl7.org/fhir/sid/icd-10",ra="http://hl7.org";function Vr(r,e){if(!r.group)throw new d(v("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=na(e);if(re(t))throw new d(t);let n=oa(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 na(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?v("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?ia(r.codeableConcept):r.code||r.coding||r.codeableConcept?v("Ambiguous input: multiple source codings provided"):v("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function ia(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 oa(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=sa(i,o)),s&&t.push(...s)}return t}function sa(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 aa=[...ze,"->","<<",">>","=="];function si(r){return new K(r,We,aa).tokenize()}var ca={"-":"disjoint","==":"equal"},Dr=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(){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(m.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(m.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(m.As);t instanceof q?(e.transform=t.name,e.parameter=t.args?.map(ai)):t instanceof k||t instanceof _?(e.transform="copy",e.parameter=[ai(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(m.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=ca[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,f=e?.group?.find(E=>E.source===i&&E.target===u);f||(f={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(f)),f.element||(f.element=[]),f.element.push({code:o,target:[{code:l,equivalence:s}]})}};function ai(r){if(r instanceof _)return{valueId:r.name};if(r instanceof k)return ua(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function ua(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 la=me().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function da(r){let e=la.construct(si(r));return e.removeComments(),new Dr(e).parse()}function pa(r,e,t){return fa({root:r,loader:t},r,e)}function fa(r,e,t){return ma(r,e),li(r,e),di(r,e.group[0],t)}function ma(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)li(r,i)}}function li(r,e){if(e.group)for(let t of e.group)Nr(r,t.name,{type:"StructureMapGroup",value:t})}function di(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)rt(o,l.name,t[a++]);for(let l of i){let f=t[a++]??y({});rt(o,l.name,f),s.push(f)}let u={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)pi(u,l);return s}function pi(r,e){let t=!1;if(e.source)for(let n of e.source)ha(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)ya(r,n);if(e.rule)for(let n of e.rule)pi(r,n);if(e.dependent)for(let n of e.dependent)Pa(r,n)}}function ha(r,e){let t=ye(r,e.context);if(!t)return!1;let n=e.element;if(!n)return!0;let i=j(n,[t]);if(!i||i.length===0||e.condition&&!ci(t,{[e.variable]:i[0]},e.condition))return!1;if(e.check&&!ci(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=ga(e,i)),e.variable&&Nr(r,e.variable,mi(i)),!0}function ci(r,e,t){return V(j(t,[r],e))}function ga(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 ya(r,e){let t=ye(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=xa(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[y({})]:i=[y(n)];else switch(e.transform){case"append":i=Ta(r,e);break;case"copy":i=va(r,e);break;case"create":i=Sa(r,e);break;case"evaluate":i=Ea(r,e);break;case"translate":i=ba(r,e);break;case"truncate":i=Ra(r,e);break;case"uuid":i=[{type:"string",value:ee()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],rt(t.value,e.element,n));for(let s of i)n.push(s.value)}else rt(t.value,e.element,i[0].value);e.variable&&Nr(r,e.variable,mi(i))}}function xa(r,e){return Ve(r.type)?.elements?.[e]?.isArray}function Ta(r,e){let t=te(r,e.parameter?.[0])?.[0]?.value,n=te(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function va(r,e){return e.parameter.flatMap(t=>te(r,t))}function Sa(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=te(r,e.parameter?.[0])?.[0]?.value),[y(t)]}function Ea(r,e){let n=te(r,e.parameter?.[0])[0].value;return j(n,[],fi(r))}function ba(r,e){let t=e.parameter.flatMap(a=>te(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Vr(o,{system:o.group?.[0]?.source,code:n});return[y(s.match?.[0]?.concept?.code)]}function Ra(r,e){let t=te(r,e.parameter?.[0])?.[0],n=te(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Pa(r,e){let t=ye(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=ye(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};di(o,t.value,i)}function te(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=ui(n),n.length===1&&n[0].type==="id"){let i=ye(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return ui(i)}return n}function ye(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ye(r.parent,e)}function fi(r,e={}){if(r.parent&&fi(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Nr(r,e,t){r.variables||(r.variables={}),rt(r.variables,e,t)}function rt(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function ui(r){return Array.isArray(r)?r:[r]}function mi(r){return r.length===1?r[0]:r}var Ca=[...ze,"eq","ne","co"];function hi(r){return new K(r,We,Ca,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var nt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},it=class{constructor(e){this.child=e}},ot=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var Aa={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:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function wa(r){let e=Aa[r];if(!e)throw new d(v("Invalid operator: "+r));return e}var Mr=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 it(this.parse()),this.parser.consume(")")):e=new nt(this.parser.consume("Symbol").value,wa(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}},Ia=me();function ka(r){let e=Ia.construct(hi(r));return e.removeComments(),new Mr(e).parse()}var W=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}},Fr=class r{constructor(e,t=new W){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()??"",u=t?.getField(12)?.toString()??"2.5.1";return new r([new xe(["MSH",this.context.getMsh2(),o,s,n,i,gi(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",u],this.context),new xe(["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 W("\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=>xe.parse(n,t)),t)}},xe=class r{constructor(e,t=new W){this.context=t,Wt(e)?this.fields=e.map(n=>ce.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 ce([[this.context.getMsh1()]],this.context);if(e===2)return new ce([[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 W){return new r(e.split(t.fieldSeparator).map(n=>ce.parse(n,t)),t)}},ce=class r{constructor(e,t=new W){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 W){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Oa(r,e){if(!r)return;let t=ae(r.slice(0,4),0),n=ae(r.slice(4,6),1)-1,i=ae(r.slice(6,8),1),o=ae(r.slice(8,10),0),s=ae(r.slice(10,12),0),a=ae(r.slice(12,14),0),u=0;r.includes(".")&&(u=ae(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),f=Va(r,e?.tzOffset);return f!==0&&(l=new Date(l.getTime()-f)),l.toISOString()}function ae(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Va(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 gi(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}function Da(r){if(!r)throw new d(h("Resource type is null"));if(!cr(r))throw new d(h("Unknown resource type"))}function _r(r,e,t){r===null?t.push(g(e,"Invalid null value")):Array.isArray(r)?Na(r,e,t):typeof r=="object"&&Ma(r,e,t)}function Na(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(g(`${e}[${n}]`,"Invalid undefined value")):_r(r[n],`${e}[${n}]`,t)}function Ma(r,e,t){for(let[n,i]of Object.entries(r))_r(i,`${e}${e?".":""}${n}`,t)}function Fa(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 Dt(r,e,t,n){new Lr(r,e,t,n).crawl()}var Lr=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=ie(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(y(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=F(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);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=Nt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Ce(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Pe(e.type.charAt(0))){let n=ie(e.type);this.crawlObject(e,n,t)}}};function Nt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let u of a)s.push(A(u,o));else a!==void 0&&s.push(A(a,o));i=s}return i}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"},_a={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:/.*/},La={"ele-1":!0};function Ua(r,e){new Br(r.resourceType,r,e).validate()}var Br=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=Tt(n):this.schema=ie(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(h("Missing resource type"));qr(this.rootResource,e,this.issues),Dt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new d({resourceType:"OperationOutcome",issue: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 u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(g(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(g(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(g(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),yi(a,s)||this.issues.push(g(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(f=>[f.name,0])):void 0;for(let f of u){this.constraintsCheck(f,s,n),this.checkPropertyValue(f,n);let E=ja(f,s.slicing);E&&l&&(l[E]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(g(n,"Missing required property")),!1):b(e)?(this.issues.push(g(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Pe(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(g(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)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!qa(e,o,t)&&this.issues.push(g(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in La)&&!this.isExpressionTrue(o,e,n)){this.issues.push($t(n,o));return}}}isExpressionTrue(e,t,n){try{let i=j(e.expression,[t],{"%context":t,"%resource":y(this.currentResource[this.currentResource.length-1]),"%rootResource":y(this.rootResource),"%ucum":y(Or)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Qt(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=$a(e);if(n){let{type:o,value:s}=n;if(!(o in Ur)){this.issues.push(g(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(g(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&&Dt(i.value,this,ie("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(g(n,"String must contain non-whitespace content"));return}let i=_a[t];i&&!i.exec(e)&&this.issues.push(g(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(g(n,"Invalid numeric value")):Ba(t)&&!Number.isInteger(e)?this.issues.push(g(n,"Expected number to be an integer")):t===c.positiveInt&&e<=0?this.issues.push(g(n,"Expected number to be positive")):t===c.unsignedInt&&e<0&&this.issues.push(g(n,"Expected number to be non-negative"))}};function Ba(r){return r===c.integer||r===c.positiveInt||r===c.unsignedInt}function qa(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!A(r,i);return!1}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(g(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(g(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(g(`${o}[${a}]`,"Invalid null value")):i[a]&&qr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&qr(i,o,t)}}function yi(r,e){return!(e.pattern&&!Re(r,e.pattern)||e.fixed&&!be(r,e.fixed))}function xi(r,e,t,n){if(Array.isArray(r))return!1;let i=(n??t.elements)[e.path],o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(yi(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ja(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Ce(Nt(r,n.path))?.some(i=>xi(i,n,t))))return t.name}}function $a(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}]}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,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,MEDPLUM_VERSION,MedplumClient,MemoryStorage,MockAsyncClientStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,SNOMED,SearchParameterType,SymbolAtom,Tokenizer,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,XorAtom,accepted,allOk,append,arrayBufferToBase64,arrayBufferToHex,arrayify,assertContextVersionOptional,assertOk,badRequest,booleanToTypedValue,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,conceptMapTranslate,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,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,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPathDisplayName,getPropertyDisplayName,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithSchema,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCompletedSubscriptionRequest,isContextVersionRequired,isCreated,isDataTypeLoaded,isEmpty,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isStringArray,isUUID,isValidDate,lazy,loadDataType,matchDiscriminant,matchesAccessPolicy,matchesRange,matchesSearchRequest,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseCriteriaAsSearchRequest,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseMappingLanguage,parseParameter,parseReference,parseSearchDefinition,parseSearchRequest,parseSearchUrl,parseStructureDefinition,parseXFhirQuery,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,reorderBundle,resolveId,satisfiedAccessPolicy,serializeFhircastSubscriptionRequest,serverError,setCodeBySystem,setIdentifier,singleton,sleep,splitN,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,toJsBoolean,toTypedValue,tooManyRequests,tryGetDataType,tryGetJwtExpiration,tryGetProfile,unauthorized,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validationError});
|
|
42
|
+
}`.replace(/\s+/g," "),a=await this.graphql(s);Rt(a.data.StructureDefinitionList);for(let u of a.data.SearchParameterList)Ct(u)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t){if(Tr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new w((async()=>{let s=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});s?Rt([s],t):console.warn(`No StructureDefinition found for ${t}!`)})());return this.setCacheEntry(n,o),o}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 createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,f=()=>l.abort();s?.signal?.addEventListener("abort",f);let E=j=>{s?.signal?.removeEventListener("abort",f),j instanceof Error?u(j):a(j)};l.responseType="json",l.onabort=()=>E(new Error("Request aborted")),l.onerror=()=>E(new Error("Request error")),o&&(l.upload.onprogress=j=>o(j),l.upload.onload=j=>o(j)),l.onload=()=>{l.status>=200&&l.status<300?E(l.response):E(new p(Se(l.response||l.statusText)))},l.open("POST",t),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),l.setRequestHeader("X-Medplum","extended"),l.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=z(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=z(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[z(t)],encounter:s,subject:a,sender:o?z(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")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,O.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},O.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",Wt(t),"$push"),{destination:ue(n),body:i,contentType:o,waitForResponse:s},O.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||ue(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=Ur(t),this.medplumServer=_r(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.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();return i.startsWith(ii)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:ii+a.id,title:i},...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;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await ci(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}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 w(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new p(jt);let u=t.headers.get("content-location"),l=o.redirect??this.options.redirect;if(t.status===201&&u&&l==="follow")return this.request("GET",u,{...o,body:void 0});let f;if(a)try{f=await t.json()}catch(E){throw console.error("Error parsing response",t.status,E),E}else f=await t.text();if(t.status>=400)throw new p(Se(f));return f}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);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(u){this.retryCatch(a,i,u)}await mt(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let u=await ci(a);u&&(i=await this.fetchWithRetry(u,s))}await mt(o)}return this.parseResponse(i,"POST",t)}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,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new p(Se(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.slice(0,-1),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 p(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=li),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=O.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}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.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=kt();sessionStorage.setItem("pkceState",t);let n=kt();sessionStorage.setItem("codeVerifier",n);let i=await Vr(n),o=Xt(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??si()),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??si()),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=Or(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new p(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new p(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",Dt(i),O.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!rt(t))throw new p(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new p(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",Dt(t),O.FORM_URL_ENCODED)}fhircastConnect(t){return new tt(t)}async fhircastPublish(t,n,i,o){return Dr(n)?this.post(`/fhircast/STU3/${t}`,Nt(t,n,i,o),O.JSON):(Nr(n),this.post(`/fhircast/STU3/${t}`,Nt(t,n,i),O.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":O.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 p(v(a.error_description))}catch(a){throw new p(v("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(Fr(n)){let i=nt(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}};function ga(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function si(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function ai(r){return r.endsWith("/")?r:r+"/"}function Ft(r,e){return new URL(e,r).toString()}async function ci(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(re(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function ui(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var ya={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function qr(r,e){if(!r.group)throw new p(v("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=xa(e);if(re(t))throw new p(t);let n=va(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 xa(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?v("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?Ta(r.codeableConcept):r.code||r.coding||r.codeableConcept?v("Ambiguous input: multiple source codings provided"):v("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function Ta(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 va(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=Sa(i,o)),s&&t.push(...s)}return t}function Sa(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 Ea=[...Ye,"->","<<",">>","=="];function hi(r){return new K(r,Je,Ea).tokenize()}var ba={"-":"disjoint","==":"equal"},$r=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(){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(m.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(m.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(m.As);t instanceof $?(e.transform=t.name,e.parameter=t.args?.map(gi)):t instanceof k||t instanceof _?(e.transform="copy",e.parameter=[gi(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(m.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=ba[this.parser.consume().value],a=this.parser.consume().value,u=t[a];this.parser.consume(":");let l=this.parser.consume().value,f=e?.group?.find(E=>E.source===i&&E.target===u);f||(f={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(f)),f.element||(f.element=[]),f.element.push({code:o,target:[{code:l,equivalence:s}]})}};function gi(r){if(r instanceof _)return{valueId:r.name};if(r instanceof k)return Ra(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Ra(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 Pa=me().registerInfix("->",{precedence:m.Arrow}).registerInfix(";",{precedence:m.Semicolon});function Ca(r){let e=Pa.construct(hi(r));return e.removeComments(),new $r(e).parse()}function Aa(r,e,t){return wa({root:r,loader:t},r,e)}function wa(r,e,t){return Ia(r,e),Ti(r,e),vi(r,e.group[0],t)}function Ia(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)Ti(r,i)}}function Ti(r,e){if(e.group)for(let t of e.group)jr(r,t.name,{type:"StructureMapGroup",value:t})}function vi(r,e,t){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)it(o,l.name,t[a++]);for(let l of i){let f=t[a++]??g({});it(o,l.name,f),s.push(f)}let u={root:r.root,parent:r,variables:o};if(e.rule)for(let l of e.rule)Si(u,l);return s}function Si(r,e){let t=!1;if(e.source)for(let n of e.source)ka(r,n)&&(t=!0);if(t){if(e.target)for(let n of e.target)Va(r,n);if(e.rule)for(let n of e.rule)Si(r,n);if(e.dependent)for(let n of e.dependent)Ba(r,n)}}function ka(r,e){let t=ye(r,e.context);if(!t)return!1;let n=e.element;if(!n)return!0;let i=L(n,[t]);if(!i||i.length===0||e.condition&&!yi(t,{[e.variable]:i[0]},e.condition))return!1;if(e.check&&!yi(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Oa(e,i)),e.variable&&jr(r,e.variable,bi(i)),!0}function yi(r,e,t){return V(L(t,[r],e))}function Oa(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 Va(r,e){let t=ye(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Da(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[g({})]:i=[g(n)];else switch(e.transform){case"append":i=Na(r,e);break;case"copy":i=Ma(r,e);break;case"create":i=Fa(r,e);break;case"evaluate":i=_a(r,e);break;case"translate":i=Ua(r,e);break;case"truncate":i=La(r,e);break;case"uuid":i=[{type:"string",value:ee()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],it(t.value,e.element,n));for(let s of i)n.push(s.value)}else it(t.value,e.element,i[0].value);e.variable&&jr(r,e.variable,bi(i))}}function Da(r,e){return Ne(r.type)?.elements?.[e]?.isArray}function Na(r,e){let t=te(r,e.parameter?.[0])?.[0]?.value,n=te(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Ma(r,e){return e.parameter.flatMap(t=>te(r,t))}function Fa(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=te(r,e.parameter?.[0])?.[0]?.value),[g(t)]}function _a(r,e){let n=te(r,e.parameter?.[0])[0].value;return L(n,[],Ei(r))}function Ua(r,e){let t=e.parameter.flatMap(a=>te(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=qr(o,{system:o.group?.[0]?.source,code:n});return[g(s.match?.[0]?.concept?.code)]}function La(r,e){let t=te(r,e.parameter?.[0])?.[0],n=te(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Ba(r,e){let t=ye(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=ye(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};vi(o,t.value,i)}function te(r,e){let n=A({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=xi(n),n.length===1&&n[0].type==="id"){let i=ye(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return xi(i)}return n}function ye(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ye(r.parent,e)}function Ei(r,e={}){if(r.parent&&Ei(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function jr(r,e,t){r.variables||(r.variables={}),it(r.variables,e,t)}function it(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function xi(r){return Array.isArray(r)?r:[r]}function bi(r){return r.length===1?r[0]:r}var qa=[...Ye,"eq","ne","co"];function Ri(r){return new K(r,Je,qa,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var ot=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},st=class{constructor(e){this.child=e}},at=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var $a={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:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function ja(r){let e=$a[r];if(!e)throw new p(v("Invalid operator: "+r));return e}var Qr=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 st(this.parse()),this.parser.consume(")")):e=new ot(this.parser.consume("Symbol").value,ja(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 at(t,e,this.parse())):e}},Qa=me();function Ha(r){let e=Qa.construct(Ri(r));return e.removeComments(),new Qr(e).parse()}var W=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}},Hr=class r{constructor(e,t=new W){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()??"",u=t?.getField(12)?.toString()??"2.5.1";return new r([new xe(["MSH",this.context.getMsh2(),o,s,n,i,Pi(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",u],this.context),new xe(["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 W("\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=>xe.parse(n,t)),t)}},xe=class r{constructor(e,t=new W){this.context=t,Yt(e)?this.fields=e.map(n=>ce.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 ce([[this.context.getMsh1()]],this.context);if(e===2)return new ce([[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 W){return new r(e.split(t.fieldSeparator).map(n=>ce.parse(n,t)),t)}},ce=class r{constructor(e,t=new W){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 W){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Ga(r,e){if(!r)return;let t=ae(r.slice(0,4),0),n=ae(r.slice(4,6),1)-1,i=ae(r.slice(6,8),1),o=ae(r.slice(8,10),0),s=ae(r.slice(10,12),0),a=ae(r.slice(12,14),0),u=0;r.includes(".")&&(u=ae(r.slice(15,19),0));let l=new Date(Date.UTC(t,n,i,o,s,a,u)),f=Ka(r,e?.tzOffset);return f!==0&&(l=new Date(l.getTime()-f)),l.toISOString()}function ae(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Ka(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 Pi(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 _t=(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))(_t||{}),Gr=class{constructor(e,t={},n=3){this.write=e;this.metadata=t;this.level=n}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:_t[e],timestamp:new Date().toISOString(),msg:t,...n,...this.metadata})))}};function Wa(r){let e=_t[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function za(r){if(!r)throw new p(h("Resource type is null"));if(!xr(r))throw new p(h("Unknown resource type"))}function Kr(r,e,t){r===null?t.push(y(e,"Invalid null value")):Array.isArray(r)?Ja(r,e,t):typeof r=="object"&&Ya(r,e,t)}function Ja(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(y(`${e}[${n}]`,"Invalid undefined value")):Kr(r[n],`${e}[${n}]`,t)}function Ya(r,e,t){for(let[n,i]of Object.entries(r))Kr(i,`${e}${e?".":""}${n}`,t)}function Za(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,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,Logger,MEDPLUM_VERSION,MedplumClient,MemoryStorage,MockAsyncClientStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,SNOMED,SearchParameterType,SymbolAtom,Tokenizer,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,XorAtom,accepted,allOk,append,arrayBufferToBase64,arrayBufferToHex,arrayify,assertContextVersionOptional,assertOk,badRequest,booleanToTypedValue,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,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,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPathDisplayName,getPropertyDisplayName,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithSchema,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCompletedSubscriptionRequest,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isStringArray,isUUID,isValidDate,lazy,loadDataType,matchDiscriminant,matchesAccessPolicy,matchesRange,matchesSearchRequest,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,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,reorderBundle,resolveId,satisfiedAccessPolicy,serializeFhircastSubscriptionRequest,serverError,setCodeBySystem,setIdentifier,singleton,sleep,splitN,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,toJsBoolean,toPeriod,toTypedValue,tooManyRequests,tryGetDataType,tryGetJwtExpiration,tryGetProfile,unauthorized,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validationError,validationRegexes});
|
|
43
44
|
//# sourceMappingURL=index.cjs.map
|