@medplum/core 2.1.9 → 2.1.10

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.
Files changed (50) hide show
  1. package/api-extractor.json +3 -0
  2. package/dist/cjs/index.cjs +1 -1
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/esm/index.mjs +1 -1
  5. package/dist/esm/index.mjs.map +1 -1
  6. package/dist/types.d.ts +4181 -0
  7. package/package.json +4 -4
  8. package/dist/types/access.d.ts +0 -77
  9. package/dist/types/base-schema.d.ts +0 -7
  10. package/dist/types/base64.d.ts +0 -14
  11. package/dist/types/bundle.d.ts +0 -32
  12. package/dist/types/cache.d.ts +0 -36
  13. package/dist/types/client.d.ts +0 -1728
  14. package/dist/types/config.d.ts +0 -127
  15. package/dist/types/constants.d.ts +0 -6
  16. package/dist/types/contenttype.d.ts +0 -18
  17. package/dist/types/crypto.d.ts +0 -19
  18. package/dist/types/eventtarget.d.ts +0 -18
  19. package/dist/types/fhircast/index.d.ts +0 -115
  20. package/dist/types/fhircast/test-utils.d.ts +0 -2
  21. package/dist/types/fhirlexer/parse.d.ts +0 -55
  22. package/dist/types/fhirlexer/tokenize.d.ts +0 -45
  23. package/dist/types/fhirmapper/parse.d.ts +0 -7
  24. package/dist/types/fhirmapper/tokenize.d.ts +0 -2
  25. package/dist/types/fhirpath/atoms.d.ts +0 -139
  26. package/dist/types/fhirpath/date.d.ts +0 -1
  27. package/dist/types/fhirpath/functions.d.ts +0 -4
  28. package/dist/types/fhirpath/parse.d.ts +0 -65
  29. package/dist/types/fhirpath/tokenize.d.ts +0 -4
  30. package/dist/types/fhirpath/utils.d.ts +0 -96
  31. package/dist/types/filter/parse.d.ts +0 -7
  32. package/dist/types/filter/tokenize.d.ts +0 -2
  33. package/dist/types/filter/types.d.ts +0 -32
  34. package/dist/types/format.d.ts +0 -120
  35. package/dist/types/hl7.d.ts +0 -242
  36. package/dist/types/index.d.ts +0 -34
  37. package/dist/types/jwt.d.ts +0 -18
  38. package/dist/types/outcomes.d.ts +0 -58
  39. package/dist/types/readablepromise.d.ts +0 -51
  40. package/dist/types/schema.d.ts +0 -43
  41. package/dist/types/search/details.d.ts +0 -37
  42. package/dist/types/search/match.d.ts +0 -9
  43. package/dist/types/search/search.d.ts +0 -102
  44. package/dist/types/sftp.d.ts +0 -9
  45. package/dist/types/storage.d.ts +0 -55
  46. package/dist/types/types.d.ts +0 -203
  47. package/dist/types/typeschema/crawler.d.ts +0 -12
  48. package/dist/types/typeschema/types.d.ts +0 -92
  49. package/dist/types/typeschema/validation.d.ts +0 -25
  50. package/dist/types/utils.d.ts +0 -326
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../api-extractor.json"
3
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";var At=Object.defineProperty;var Bn=Object.getOwnPropertyDescriptor;var qn=Object.getOwnPropertyNames;var $n=Object.prototype.hasOwnProperty;var jn=(r,e)=>{for(var t in e)At(r,t,{get:e[t],enumerable:!0})},Hn=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of qn(e))!$n.call(r,i)&&i!==t&&At(r,i,{get:()=>e[i],enumerable:!(n=Bn(e,i))||n.enumerable});return r};var Qn=r=>Hn(At({},"__esModule",{value:!0}),r);var Qs={};jn(Qs,{AccessPolicyInteraction:()=>gn,CPT:()=>Ss,ClientStorage:()=>_e,ContentType:()=>k,DEFAULT_ACCEPT:()=>On,DEFAULT_SEARCH_COUNT:()=>Co,EventTarget:()=>de,ExternalSecretSystems:()=>gs,FhirFilterComparison:()=>Le,FhirFilterConnective:()=>Ne,FhirFilterNegation:()=>Ue,FhircastConnection:()=>De,Hl7Context:()=>j,Hl7Field:()=>re,Hl7Message:()=>Sr,Hl7Segment:()=>pe,ICD10:()=>bs,InfixOperatorAtom:()=>M,LOINC:()=>xs,LRUCache:()=>ke,MEDPLUM_VERSION:()=>ps,MedplumClient:()=>gr,MemoryStorage:()=>St,OAuthClientAssertionType:()=>_n,OAuthGrantType:()=>Dn,OAuthTokenType:()=>Vn,OperationOutcomeError:()=>d,Operator:()=>dn,OperatorPrecedence:()=>f,Parser:()=>Fe,ParserBuilder:()=>me,PrefixOperatorAtom:()=>fe,PropertyType:()=>u,RXNORM:()=>vs,ReadablePromise:()=>P,SNOMED:()=>Ts,SearchParameterType:()=>tr,TypedEventTarget:()=>Oe,UCUM:()=>xr,accepted:()=>Ki,allOk:()=>qi,arrayBufferToBase64:()=>kt,arrayBufferToHex:()=>It,arrayify:()=>Te,assertOk:()=>eo,badRequest:()=>V,booleanToTypedValue:()=>l,buildTypeName:()=>sn,calculateAge:()=>he,calculateAgeString:()=>Yn,canReadResourceType:()=>Yo,canWriteResource:()=>Xo,canWriteResourceType:()=>xn,capitalize:()=>A,checkForNull:()=>br,compressElement:()=>Ni,convertContainedResourcesToBundle:()=>ns,convertToTransactionBundle:()=>Sn,crawlResource:()=>Rt,createConstraintIssue:()=>Ht,createFhircastMessagePayload:()=>mr,createProcessingIssue:()=>Qt,createReference:()=>Q,createStructureIssue:()=>y,created:()=>$i,decodeBase64:()=>ur,deepClone:()=>Be,deepEquals:()=>ye,deepIncludes:()=>ge,encodeBase64:()=>lr,encryptSHA256:()=>dr,evalFhirPath:()=>ee,evalFhirPathTyped:()=>ue,fhirPathArrayEquals:()=>Qe,fhirPathArrayEquivalent:()=>We,fhirPathEquals:()=>Vt,fhirPathEquivalent:()=>Gr,fhirPathIs:()=>be,fhirPathNot:()=>He,fhirTypeToJsType:()=>Er,findObservationInterval:()=>pi,findObservationReferenceRange:()=>fi,findResourceByCode:()=>Si,forbidden:()=>Qi,formatAddress:()=>bi,formatCodeableConcept:()=>Nr,formatCoding:()=>Fr,formatDate:()=>Ai,formatDateTime:()=>$e,formatFamilyName:()=>Ei,formatGivenName:()=>Ri,formatHl7DateTime:()=>Nn,formatHumanName:()=>ve,formatMoney:()=>Vi,formatObservationValue:()=>Mr,formatPeriod:()=>Pi,formatQuantity:()=>W,formatRange:()=>Di,formatSearchQuery:()=>Bo,formatTime:()=>Ur,formatTiming:()=>ki,generateId:()=>le,getAllDataTypes:()=>zt,getAllQuestionnaireAnswers:()=>Zn,getCodeBySystem:()=>Me,getDataType:()=>J,getDateProperty:()=>Jn,getDisplayString:()=>Ir,getElementDefinition:()=>Re,getElementDefinitionTypeName:()=>Je,getExpressionForResourceType:()=>Po,getExpressionsForResourceType:()=>nr,getExtension:()=>ni,getExtensionValue:()=>ri,getIdentifier:()=>ei,getImageSrc:()=>zn,getNestedProperty:()=>Et,getPropertyDisplayName:()=>uo,getQuestionnaireAnswers:()=>Xn,getRandomString:()=>xt,getReferenceString:()=>ne,getResourceTypes:()=>so,getSearchParameter:()=>co,getSearchParameterDetails:()=>rr,getSearchParameters:()=>ao,getStatus:()=>Zi,getTypedPropertyValue:()=>C,globalSchema:()=>w,gone:()=>Wi,indexSearchParameter:()=>Ze,indexSearchParameterBundle:()=>oo,indexStructureDefinitionBundle:()=>Kt,inflateBaseSchema:()=>Dt,inflateElement:()=>qr,initFhirPathParserBuilder:()=>ce,isAccepted:()=>Ji,isCompletedSubscriptionRequest:()=>fr,isCreated:()=>zi,isDataTypeLoaded:()=>Jt,isEmpty:()=>S,isFhircastResourceType:()=>En,isGone:()=>Xi,isJwt:()=>hr,isLowerCase:()=>xe,isMedplumAccessToken:()=>yr,isNotFound:()=>Yi,isObject:()=>B,isOk:()=>ze,isOperationOutcome:()=>Ee,isPeriod:()=>Kr,isProfileResource:()=>wr,isQuantity:()=>b,isQuantityEquivalent:()=>_t,isReference:()=>ie,isResource:()=>D,isResourceType:()=>Xt,isResourceTypeSchema:()=>Xe,isStringArray:()=>wt,isUUID:()=>li,isValidDate:()=>je,loadDataType:()=>nn,matchesAccessPolicy:()=>Tn,matchesRange:()=>Ot,matchesSearchRequest:()=>ar,normalizeErrorString:()=>Xr,normalizeOperationOutcome:()=>Ae,notFound:()=>Bt,notModified:()=>ji,operationOutcomeIssueToString:()=>Zr,operationOutcomeToString:()=>$t,parseCriteriaAsSearchRequest:()=>ht,parseFhirPath:()=>mt,parseFilterParameter:()=>ks,parseHl7DateTime:()=>Os,parseJWTPayload:()=>vt,parseMappingLanguage:()=>As,parseReference:()=>Wn,parseSearchDefinition:()=>Io,parseSearchRequest:()=>wo,parseSearchUrl:()=>or,parseStructureDefinition:()=>Ye,parseXFhirQuery:()=>Mo,preciseEquals:()=>xi,preciseGreaterThan:()=>vi,preciseGreaterThanOrEquals:()=>Lr,preciseLessThan:()=>Ti,preciseLessThanOrEquals:()=>_r,preciseRound:()=>gi,projectAdminResourceTypes:()=>yn,protectedResourceTypes:()=>hn,removeDuplicates:()=>Se,reorderBundle:()=>bn,resolveId:()=>Pt,satisfiedAccessPolicy:()=>Zo,serializeFhircastSubscriptionRequest:()=>Tt,serverError:()=>qt,setCodeBySystem:()=>di,setIdentifier:()=>ti,singleton:()=>O,sleep:()=>qe,streamToBuffer:()=>Us,stringify:()=>Ct,stringifyTypedValue:()=>Zt,subsetResource:()=>to,toJsBoolean:()=>U,toTypedValue:()=>T,tooManyRequests:()=>Gi,tryGetDataType:()=>Yt,unauthorized:()=>Hi,validateFhircastSubscriptionRequest:()=>Ve,validateResource:()=>Ms,validateResourceType:()=>Vs,validationError:()=>h});module.exports=Qn(Qs);var fe=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},M=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},me=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new Fe(e,this.prefixParselets,this.infixParselets)}},Fe=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};function Q(r){let e=ne(r),t=Ir(r);return t===e?{reference:e}:{reference:e,display:t}}function ne(r){return ie(r)?r.reference:`${r.resourceType}/${r.id}`}function Pt(r){if(r)return ie(r)?r.reference.split("/")[1]:r.id}function Wn(r){if(r?.reference===void 0)return;let[e,t]=r.reference.split("/");if(!(e===""||t===""||t===void 0))return[e,t]}function wr(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Ir(r){if(wr(r)){let e=Gn(r);if(e)return e}if(r.resourceType==="Device"){let e=Kn(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:ne(r)}function Gn(r){let e=r.name;if(e&&e.length>0)return ve(e[0])}function Kn(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function zn(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Cr(t);if(n)return n}else return Cr(e)}function Cr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Jn(r){return r?new Date(r):void 0}function he(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),m=n.getUTCDate(),p=a-i;(c<o||c===o&&m<s)&&p--;let H=a*12+c-(i*12+o);m<s&&H--;let Mn=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:H,days:Mn}}function Yn(r,e){let{years:t,months:n,days:i}=he(r,e);return t>=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function Xn(r){let e={};return kr(r.item,e),e}function kr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),kr(t.item,e)}function Zn(r){let e={};return Or(r.item,e),e}function Or(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Or(t.item,e)}function ei(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 ti(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 ri(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 ni(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 Ct(r,e){return JSON.stringify(r,ii,e?2:void 0)}function ii(r,e){return!oi(r)&&S(e)?void 0:e}function oi(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"&&r===""||e==="object"&&Object.keys(r).length===0}function ye(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?si(r,e):Array.isArray(r)||Array.isArray(e)?!1:B(r)&&B(e)?ai(r,e,t):(B(r)||B(e),!1)}function si(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ye(r[t],e[t]))return!1;return!0}function ai(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!ye(o,s,i))return!1}return!0}function ge(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?ci(r,e):Array.isArray(r)||Array.isArray(e)?!1:B(r)&&B(e)?ui(r,e):B(r)||B(e)?!1:r===e}function ci(r,e){return r.every(t=>e.some(n=>ge(t,n)))}function ui(r,e){return Object.entries(r).every(([t,n])=>t in e&&ge(n,e[t]))}function Be(r){return JSON.parse(JSON.stringify(r))}function li(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function B(r){return r!==null&&typeof r=="object"}function wt(r){return r.every(e=>typeof e=="string")}var Dr=[];for(let r=0;r<256;r++)Dr.push(r.toString(16).padStart(2,"0"));function It(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Dr[e[n]];return t.join("")}function kt(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 A(r){return r.charAt(0).toUpperCase()+r.substring(1)}function xe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Me(r,e){return r.coding?.find(t=>t.system===e)?.code}function di(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 pi(r,e,t,n){return r.qualifiedInterval?.find(i=>Vr(i,e)&&yi(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function fi(r,e,t){return r.qualifiedInterval?.find(n=>Vr(n,e)&&t.includes(n.condition))}function Vr(r,e){return mi(r,e)&&hi(r,e)}function mi(r,e){return!r.gender||r.gender===e.gender}function hi(r,e){return!r.age||Ot(he(e.birthDate).years,r.age)}function yi(r,e,t){return!!r.range&&Ot(e,r.range,t)}function Ot(r,e,t){return(e.low?.value===void 0||Lr(r,e.low.value,t))&&(e.high?.value===void 0||_r(r,e.high.value,t))}function gi(r,e){return parseFloat(r.toFixed(e))}function xi(r,e,t){return L(r,t)===L(e,t)}function Ti(r,e,t){return L(r,t)<L(e,t)}function vi(r,e,t){return L(r,t)>L(e,t)}function _r(r,e,t){return L(r,t)<=L(e,t)}function Lr(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 Si(r,e,t){return r.find(n=>typeof e=="string"?Me(n.code||{},t)===e:Me(n.code||{},t)===Me(e,t))}function Te(r){if(r)return Array.isArray(r)?r:[r]}var qe=r=>new Promise(e=>{setTimeout(e,r)});function bi(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function ve(r,e){let t=[];return r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0&&r.text?r.text:t.join(" ").trim()}function Ri(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Ei(r){return r.family??""}function je(r){return r instanceof Date&&!isNaN(r.getTime())}function Ai(r,e,t){if(!r)return"";let n=new Date(r);return je(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Ur(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return je(n)?n.toLocaleTimeString(e,t):""}function $e(r,e,t){if(!r)return"";let n=new Date(r);return je(n)?n.toLocaleString(e,t):""}function Pi(r,e,t){return!r||!r.start&&!r.end?"":$e(r.start,e,t)+" - "+$e(r.end,e,t)}var Ci={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},wi={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Ii={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ki(r){if(!r)return"";let e=[];return Oi(e,r.repeat),r.event&&e.push(r.event.map(t=>$e(t)).join(", ")),A(e.join(" ").trim())}function Oi(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Ci[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+wi[i]):r.push("per "+n+" "+Ii[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(A).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Ur(o)).join(", "))}function Di(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=Li(n.value,e),`> ${W(n,e)}`):`>= ${W(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=_i(i.value,e),`< ${W(i,e)}`):`<= ${W(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${W(n,e)} - ${W(i,e)}`)}function W(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 Vi(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Nr(r){return r?r.text?r.text:r.coding?r.coding.map(e=>Fr(e)).join(", "):"":""}function Fr(r){return r?.display??r?.code??""}function Mr(r){return r?"component"in r?r.component.map(e=>Mr(e)).join(" / "):r.valueQuantity?W(r.valueQuantity):r.valueCodeableConcept?Nr(r.valueCodeableConcept):r.valueString?r.valueString:"":""}function _i(r,e,t=1){return(Br(r,e)+t)*Math.pow(10,-e)}function Li(r,e,t=1){return(Br(r,e)-t)*Math.pow(10,-e)}function Br(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Ui={"http://hl7.org/fhirpath/System.String":"string"};function Ni(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:Ui[t.code]??t.code})),e}function qr(r){let e=r.max&&r.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:r.max;return{path:"",description:"",type:r.type??[],min:r.min??0,max:e??1,isArray:!!e&&e>1,constraints:[]}}function Dt(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,qr(o)])),constraints:[],innerTypes:[]};return e}var $r={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity"}]},maxDosePerLifetime:{type:[{code:"Quantity"}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity"}]},high:{type:[{code:"Quantity"}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity"}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},useSubject:{type:[{code:"boolean"}]}}}};function l(r){return[{type:u.boolean,value:r}]}function T(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:u.integer,value:r}:typeof r=="number"?{type:u.decimal,value:r}:typeof r=="boolean"?{type:u.boolean,value:r}:typeof r=="string"?{type:u.string,value:r}:b(r)?{type:u.Quantity,value:r}:D(r)?{type:r.resourceType,value:r}:{type:u.BackboneElement,value:r}}function U(r){return r.length===0?!1:!!r[0].value}function O(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function C(r,e){if(!r.value)return;let t=Re(r.type,e);return t?Mi(r,e,t):Bi(r,e)}function Mi(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let a of n){let c=e.replace("[x]","")+A(a.code);if(c in r.value){i=r.value[c],o=a.code;break}}let s=r.value["_"+e];if(s&&(Array.isArray(i)?i=i.map((a,c)=>s[c]?Wr(a??{},s[c]):a):i=Wr(i??{},s)),!S(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>jr(a,o)):jr(i,o)}function jr(r,e){return e==="Resource"&&D(r)&&(e=r.resourceType),{type:e,value:r}}function Bi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in u){let o=e+A(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(T):T(n)}function Se(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(U(Vt(t,i))){n=!0;break}n||e.push(t)}return e}function He(r){return l(!U(r))}function Qe(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?l(!1):l(r.every((t,n)=>U(Vt(t,e[n]))))}function Vt(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?l(Math.abs(t-n)<1e-8):b(t)&&b(n)?l(_t(t,n)):l(typeof t=="object"&&typeof n=="object"?Lt(r,e):t===n)}function We(r,e){return r.length===0&&e.length===0?l(!0):r.length!==e.length?l(!1):(r.sort(Hr),e.sort(Hr),l(r.every((t,n)=>U(Gr(t,e[n])))))}function Gr(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?l(Math.abs(s-a)<.01):b(s)&&b(a)?l(_t(s,a)):l(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Lt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Hr(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 be(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 Kr(t);case"Quantity":return b(t);default:return typeof t=="object"&&t?.resourceType===e}}function Kr(r){return!!(r&&typeof r=="object"&&"start"in r)}function b(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function _t(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function Lt(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(Qr(o)&&Qr(s)){if(!Lt(o,s))return!1}else if(o!==s)return!1}return!0}function Qr(r){return r!==null&&typeof r=="object"}function Wr(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}var Ut="ok",Ge="created",Nt="gone",Ft="not-modified",Mt="not-found",zr="unauthorized",Jr="forbidden",Yr="too-many-requests",Ke="accepted",qi={resourceType:"OperationOutcome",id:Ut,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},$i={resourceType:"OperationOutcome",id:Ge,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},ji={resourceType:"OperationOutcome",id:Ft,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Bt={resourceType:"OperationOutcome",id:Mt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Hi={resourceType:"OperationOutcome",id:zr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Qi={resourceType:"OperationOutcome",id:Jr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Wi={resourceType:"OperationOutcome",id:Nt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Gi={resourceType:"OperationOutcome",id:Yr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Ki(r){return{resourceType:"OperationOutcome",id:Ke,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 qt(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function Ee(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function ze(r){return r.id===Ut||r.id===Ge||r.id===Ft||r.id===Ke}function zi(r){return r.id===Ge}function Ji(r){return r.id===Ke}function Yi(r){return r.id===Mt}function Xi(r){return r.id===Nt}function Zi(r){return r.id===Ut?200:r.id===Ge?201:r.id===Ke?202:r.id===Ft?304:r.id===zr?401:r.id===Jr?403:r.id===Mt?404:r.id===Nt?410:r.id===Yr?429:400}function eo(r,e){if(!ze(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(t,n){super($t(t));this.outcome=t,this.cause=n}};function Ae(r){return r instanceof d?r.outcome:Ee(r)?r:V(Xr(r))}function Xr(r){return r?typeof r=="string"?r:r instanceof Error?r.message:Ee(r)?$t(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function $t(r){let e=r.issue?.map(Zr)??[];return e.length>0?e.join("; "):"Unknown error"}function Zr(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 y(r,e){return jt("structure",e,r)}function Ht(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 Ye(r){return new Gt(r).parse()}var G=Dt($r);function Kt(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)nn(t)}function nn(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=Ye(r);G[r.name]=e;for(let t of e.innerTypes)t.parentType=e,G[t.name]=t}function zt(){return G}function Jt(r){return!!G[r]}function Yt(r){return G[r]}function J(r){let e=G[r];if(!e)throw new d(qt(Error("Unknown data type: "+r)));return e}function Xt(r){let e=G[r];return e&&Xe(e)}var Gt=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,url:e.url,kind:e.kind,description:e.description,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=Wt(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[Wt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Wt(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&&!oe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Je(e),description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:oe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){io(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&&!oe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!oe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!oe(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!!(oe(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error("Invalid slice start before discriminator: "+e.sliceName);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",type:e.type?.map(t=>({code:t.code??"",targetProfile:t.targetProfile})),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinition(e){let t=tn(e.max),n=e.base?.max?tn(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?Je(e):o.code??"",targetProfile:o.targetProfile})),fixed:rn(C(i,"fixed")),pattern:rn(C(i,"pattern")),binding:e.binding}}};function to(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=G[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+A(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!ro.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(en):[en]},r}var en={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},ro=["resourceType","id","meta"];function tn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Wt(r,e=""){return no(r.path,e)}function no(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function oe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function rn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function io(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")}var u={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function oo(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Ze(t)}}function Ze(r){for(let e of r.base??[]){let t=w.types[e];t||(t={searchParamsDetails:{}},w.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 Je(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?sn((r.base?.path??r.path)?.split(".")):e}function sn(r){return r.length===1?r[0]:r.map(A).join("")}function Xe(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function so(){return Object.values(zt()).filter(Xe).map(r=>r.name)}function ao(r){return w.types[r]?.searchParams}function co(r,e){return w.types[r]?.searchParams?.[e]}function uo(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(po).join(" ").replace("_"," ").replace(/\s+/g," ")}var lo=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function po(r){let e=r.toUpperCase();return lo.has(e)?e:e.charAt(0)+r.slice(1)}function Re(r,e){let t=Yt(r);if(t)return t.elements[e]??t.elements[e+"[x]"]}function D(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ie(r){return!!(r&&typeof r=="object"&&"reference"in r)}var w={types:{}};function Zt(r){switch(r.type){case u.uuid:case u.uri:case u.url:case u.string:case u.oid:case u.markdown:case u.id:case u.code:case u.canonical:case u.base64Binary:case u.SystemString:case u.date:case u.dateTime:case u.instant:return r.value;case u.Identifier:return`${r.value.system??""}|${r.value.value}`;case u.Coding:return on(r.value);case u.CodeableConcept:return r.value.coding?.map(on).join(",")??r.value.text;case u.HumanName:return r.value.text?r.value.text:ve(r.value);case u.unsignedInt:case u.positiveInt:case u.integer:case u.decimal:return r.value.toString();case u.boolean:return r.value?"true":"false";case u.Extension:return r.value.url;case u.ContactPoint:return r.value.value;case u.Quantity:case u.Age:case u.Count:case u.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case u.Reference:return r.value.reference;default:return D(r.value)?Q(r.value).reference:JSON.stringify(r)}}function on(r){return r?`${r.system??""}|${r.code}`:""}function se(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 Pe=()=>[],R={empty:(r,e)=>l(e.length===0),exists:(r,e,t)=>t?l(e.filter(n=>U(t.eval(r,[n]))).length>0):l(e.length>0),all:(r,e,t)=>l(e.every(n=>U(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return l(!1);return l(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return l(!0);return l(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return l(!1);return l(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return l(!0);return l(!1)},subsetOf:Pe,supersetOf:Pe,count:(r,e)=>[{type:u.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>l(e.length===R.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>U(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Pe,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return Se([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[T(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return U(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);if(typeof t=="boolean")return[{type:u.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return l(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return l(!0);if(["false","f","no","n","0","0.0"].includes(n))return l(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:l(R.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);return typeof t=="number"?[{type:u.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:u.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:u.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:l(R.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.date,value:se(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:l(R.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.dateTime,value:se(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:l(R.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);return typeof t=="number"?[{type:u.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:u.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:u.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:l(R.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);return b(t)?[{type:u.Quantity,value:t}]:typeof t=="number"?[{type:u.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:u.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:u.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:l(R.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);return t==null?[]:b(t)?[{type:u.string,value:`${t.value} '${t.unit}'`}]:[{type:u.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:l(R.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=F(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:u.time,value:se("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:l(R.toTime(r,e).length===1),indexOf:(r,e,t)=>I((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>I((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>I((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>I((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>I((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>I(t=>t.toUpperCase(),r,e),lower:(r,e)=>I(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>I((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>I((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>I((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>I(t=>t.length,r,e),toChars:(r,e)=>I(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>N(Math.abs,r,e),ceiling:(r,e)=>N(Math.ceil,r,e),exp:(r,e)=>N(Math.exp,r,e),floor:(r,e)=>N(Math.floor,r,e),ln:(r,e)=>N(Math.log,r,e),log:(r,e,t)=>N((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>N(Math.pow,r,e,t),round:(r,e)=>N(Math.round,r,e),sqrt:(r,e)=>N(Math.sqrt,r,e),truncate:(r,e)=>N(t=>t|0,r,e),children:Pe,descendants:Pe,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:u.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:u.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:u.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=R.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=R.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=he(o[0].value,s[0].value);return[{type:u.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof q?n=t.name:t instanceof K&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:u.boolean,value:be(i,n)})):[]},not:(r,e)=>R.toBoolean(r,e).map(t=>({type:u.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return T(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:u.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:u.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:u.BackboneElement,value:{namespace:"System",name:"Integer"}}:D(t)?{type:u.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:u.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:u.boolean,value:o.value?.resourceType===i}))}};function I(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=F(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(T):[T(o)]}function N(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=F(t,1),o=b(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?u.Quantity:t[0].type,m=o?{...i,value:a}:a;return[{type:c,value:m}]}function F(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 et=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()}},_=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},q=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return D(t)&&t.resourceType===this.name?e:C(e,this.name)}toString(){return this.name}},tt=class{eval(){return[]}toString(){return"{}"}},rt=class extends fe{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},Y=class extends M{constructor(e,t){super("as",e,t)}eval(e,t){return R.ofType(e,this.left.eval(e,t),this.right)}},v=class extends M{},E=class extends v{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=b(s)?s.value:s,m=b(a)?a.value:a,p=this.impl(c,m);return typeof p=="boolean"?l(p):b(s)?[{type:u.Quantity,value:{...s,value:p}}]:[T(p)]}},nt=class extends M{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:u.string,value:o.map(s=>s.value).join("")}]:o}},it=class extends v{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return l(n.some(o=>o.value===i[0].value))}},ot=class extends v{constructor(e,t){super("in",e,t)}eval(e,t){let n=O(this.left.eval(e,t)),i=this.right.eval(e,t);return n?l(i.some(o=>o.value===n.value)):[]}},K=class extends M{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()}`}},ae=class extends M{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Se([...n,...i])}},st=class extends v{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Qe(n,i)}},at=class extends v{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return He(Qe(n,i))}},ct=class extends v{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return We(n,i)}},ut=class extends v{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return He(We(n,i))}},X=class extends v{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return l(be(n[0],i))}},lt=class extends v{constructor(e,t){super("and",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?l(!0):n?.value===!1||i?.value===!1?l(!1):[]}},dt=class extends v{constructor(e,t){super("or",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?l(!1):n?.value||i?.value?l(!0):[]}},pt=class extends v{constructor(e,t){super("xor",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return!n||!i?[]:l(n.value!==i.value)}},ft=class extends v{constructor(e,t){super("implies",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?l(!0):!n||!i?[]:l(!1)}},$=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=R[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},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 fo=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],z=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
2
2
  `))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&mo(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 mo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&fo.includes(r.value)))}var Ce=["true","false"],we=["!=","!~","<=",">=","{}","->"];function an(r){return new z(r,Ce,we).tokenize()}var f={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},ho={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},yo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:f.Indexer},go={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:f.FunctionCall};function xo(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function ce(){return new me().registerPrefix("String",{parse:(r,e)=>new _({type:u.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new _({type:u.dateTime,value:se(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new _({type:u.Quantity,value:xo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new _({type:u.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new _({type:u.boolean,value:!0})}).registerPrefix("false",{parse:()=>new _({type:u.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new tt}).registerPrefix("(",ho).registerInfix("[",yo).registerInfix("(",go).prefix("+",f.UnaryAdd,(r,e)=>new rt("+",e,t=>t)).prefix("-",f.UnarySubtract,(r,e)=>new E("-",e,e,(t,n)=>-n)).infixLeft(".",f.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",f.Divide,(r,e,t)=>new E("/",r,t,(n,i)=>n/i)).infixLeft("*",f.Multiply,(r,e,t)=>new E("*",r,t,(n,i)=>n*i)).infixLeft("+",f.Add,(r,e,t)=>new E("+",r,t,(n,i)=>n+i)).infixLeft("-",f.Subtract,(r,e,t)=>new E("-",r,t,(n,i)=>n-i)).infixLeft("|",f.Union,(r,e,t)=>new ae(r,t)).infixLeft("=",f.Equals,(r,e,t)=>new st(r,t)).infixLeft("!=",f.NotEquals,(r,e,t)=>new at(r,t)).infixLeft("~",f.Equivalent,(r,e,t)=>new ct(r,t)).infixLeft("!~",f.NotEquivalent,(r,e,t)=>new ut(r,t)).infixLeft("<",f.LessThan,(r,e,t)=>new E("<",r,t,(n,i)=>n<i)).infixLeft("<=",f.LessThanOrEquals,(r,e,t)=>new E("<=",r,t,(n,i)=>n<=i)).infixLeft(">",f.GreaterThan,(r,e,t)=>new E(">",r,t,(n,i)=>n>i)).infixLeft(">=",f.GreaterThanOrEquals,(r,e,t)=>new E(">=",r,t,(n,i)=>n>=i)).infixLeft("&",f.Ampersand,(r,e,t)=>new nt(r,t)).infixLeft("and",f.And,(r,e,t)=>new lt(r,t)).infixLeft("as",f.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",f.Contains,(r,e,t)=>new it(r,t)).infixLeft("div",f.Divide,(r,e,t)=>new E("div",r,t,(n,i)=>n/i|0)).infixLeft("in",f.In,(r,e,t)=>new ot(r,t)).infixLeft("is",f.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",f.Modulo,(r,e,t)=>new E("mod",r,t,(n,i)=>n%i)).infixLeft("or",f.Or,(r,e,t)=>new dt(r,t)).infixLeft("xor",f.Xor,(r,e,t)=>new pt(r,t)).infixLeft("implies",f.Implies,(r,e,t)=>new ft(r,t))}var To=ce();function mt(r){return new et(r,To.construct(an(r)).consumeAndParse())}function ee(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=T(t[n]))}return ue(r,t).map(n=>n.value)}function ue(r,e,t){let n=t??{};return mt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var tr=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(tr||{});function rr(r,e){let t=w.types[r]?.searchParamsDetails?.[e.code];return t||(t=So(r,e)),t}function vo(r,e,t){let n=w.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function So(r,e){let t=e.code,n=Eo(t),i=nr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Ie(a);c.length===1&&c[0]instanceof v?o.propertyTypes.add("boolean"):cn(o,Ie(a),r,1)}let s={columnName:n,type:Ao(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return vo(r,t,s),s}function cn(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){bo(r,i);return}let o=i.toString(),s=Re(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof Z&&(a=!0,c++),s.max>1&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let m of s.type)r.propertyTypes.add(m.code);return}for(let m of s.type){let p=m.code;Ro(p)&&(p=s.type[0].code),cn(r,e,p,c)}}function bo(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 Ro(r){return r==="Element"||r==="BackboneElement"}function Eo(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function Ao(r,e){switch(r.type){case"date":return e.size===1&&e.has(u.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(u.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(u.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function nr(r,e){let t=[],n=mt(e);return er(r,n.child,t),t}function Po(r,e){let t=nr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function er(r,e,t){e instanceof ae?(er(r,e.left,t),er(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Ie(r){return r instanceof Y||r instanceof Z?[Ie(r.left),r].flat():r instanceof v?[r]:r instanceof K?[Ie(r.left),Ie(r.right)].flat():r instanceof $&&r.name==="where"&&!(r.args[0]instanceof X)?[]:[r]}var Co=20,dn=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(dn||{}),pn={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"},ir={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function wo(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 fn(r,t)}function or(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return fn(e,r.searchParams.entries())}function Io(r){return or(new URL(r,"https://example.com/"))}function ht(r){return or(new URL(r,"https://api.medplum.com/"))}function fn(r,e){let t={resourceType:r};for(let[n,i]of e)ko(t,n,i);return t}function ko(r,e,t){let n,i,o=e.indexOf(":");switch(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n){case"_sort":Oo(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?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=un(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=w.types[r.resourceType]?.searchParams?.[n];s?Do(r,s,i,t):Lo(r,n,i,t)}}}function Oo(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 Do(r,e,t,n){if(t==="missing"){yt(r,{code:e.code,operator:"missing",value:n});return}switch(e.type){case"number":case"date":case"quantity":Vo(r,e,n);break;case"reference":case"string":case"token":case"uri":_o(r,e,t,n);break;default:break}}function Vo(r,e,t){let{operator:n,value:i}=Uo(t);yt(r,{code:e.code,operator:n,value:i})}function _o(r,e,t,n){yt(r,{code:e.code,operator:No(t),value:n})}function Lo(r,e,t,n){let i="eq";if(t)i=t;else if(n.length>=2){let o=n.substring(0,2);o in ir&&(n.length===2||n.at(2)?.match(/\d/))&&(i=o,n=n.substring(o.length))}yt(r,{code:e,operator:i,value:n})}function Uo(r){let e=r.substring(0,2),t=ir[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function No(r){return pn[r]??"eq"}function un(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}'`))}function yt(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Fo=/{{([^{}]+)}}/g;function Mo(r,e){return r=r.replaceAll(Fo,(t,n)=>{let i=ue(n,[],e);return i.length!==1?"":Zt(i[0])}),ht(r)}function Bo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(qo(t))),r.sortRules&&r.sortRules.length>0&&e.push($o(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 qo(r){let e=r.operator in pn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in ir?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function $o(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 ar(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!jo(r,e,t))return!1}return!0}function jo(r,e,t){let n=w.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ee(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Ho(r,t,n);case"string":case"uri":return mn(r,t,n);case"token":return Qo(r,t,n);case"date":return Go(r,t,n);default:return!1}}function Ho(r,e,t){let n=ee(t.expression,r),i=gt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Qo(r,e,t){return rr(r.resourceType,t).type==="BOOLEAN"?Wo(r,e,t):mn(r,e,t,!0)}function Wo(r,e,t){let n=ee(t.expression,r),i=e.value==="true",o=n.includes(i);return gt(e.operator)?!o:o}function mn(r,e,t,n){let i=ee(t.expression,r),o=e.value.split(","),s=gt(e.operator);for(let a of i)for(let c of o)if(sr(a,e.operator,c,n))return!s;return s}function sr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return sr(r,e,o,!1)&&(!s||sr(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 Go(r,e,t){let n=ee(t.expression,r),i=e.value.split(","),o=gt(e.operator);for(let s of n)for(let a of i)if(Ko(s,e.operator,a))return!o;return o}function Ko(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 gt(r){return r==="ne"||r==="not"}var zo={resourceType:"*"},hn=["DomainConfiguration","JsonWebKey","Login"],yn=["PasswordChangeRequest","Project","ProjectMembership","User"],gn=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(gn||{}),Jo=["read","vread","history","history-instance"];function Yo(r,e){if(r.resource){for(let t of r.resource)if(cr(t.resourceType,e))return!0}return!1}function xn(r,e){if(hn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(cr(t.resourceType,e)&&!t.readonly)return!0}return!1}function Xo(r,e){let t=e.resourceType;return xn(r,t)?Tn(r,e,!1):!1}function Tn(r,e,t){if(r.resource){for(let n of r.resource)if(vn(e,t?"read":"update",n))return!0}return!1}function Zo(r,e,t){if(!t)return zo;if(t.resource){for(let n of t.resource)if(vn(r,e,n))return n}}function vn(r,e,t){let n=r.resourceType;return!(!cr(t.resourceType,n)||t.readonly&&!Jo.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!ar(r,ht(t.criteria)))}function cr(r,e){return r===e||r==="*"&&!yn.includes(e)}function ur(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 lr(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 xt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),It(r.buffer)}async function dr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function le(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Sn(r){let e={};r=Be(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=le(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>es(i,o,e),2);return bn(JSON.parse(n))}function es(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 bn(r){let e=rs(r),{sorted:t,cycles:n}=ts(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],m={...c,request:{...c.request,method:"PUT"}};o.push(m)}return{...r,entry:o}}function ts(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Rn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ie(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Rn(n,e)}}function rs(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&&Rn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ns(r){r=Be(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=le());return Sn(e)}var ke=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var k={CSS:"text/css",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var de=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},Oe=class{constructor(){this.emitter=new de}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var pr={"patient-open":"patient-open","patient-close":"patient-close","imagingstudy-open":"imagingstudy-open","imagingstudy-close":"imagingstudy-close"},is=["Patient","Encounter","ImagingStudy"],os={"patient-open":["Patient"],"patient-close":["Patient"],"imagingstudy-open":["Patient","ImagingStudy"],"imagingstudy-close":["Patient","ImagingStudy"]},ss={"patient-open":["Encounter"],"patient-close":["Encounter"],"imagingstudy-open":[],"imagingstudy-close":[]};function En(r){return is.includes(r)}var as={ImagingStudy:"study",Patient:"patient",Encounter:"encounter"};function fr(r){return!!r.endpoint}function Tt(r){if(!Ve(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 fr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Ve(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(!pr[o])return!1;return!(fr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function cs(r,e,t,n){if(!(e.key&&typeof e.key=="string"))throw new d(h(`context[${t}] is invalid. Context must contain a key.`));if(n.has(e.key))throw new d(h(`context[${t}] is invalid. Key ${e.key} has already been used in a previous context.`));if(n.add(e.key),typeof e.resource!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.resource.id&&typeof e.resource.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resource.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=e.resource.resourceType;if(!En(i))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));let o=os[r],s=ss[r],a;if(t<o.length?a=o[t]:t-o.length<s.length&&(a=s[t-o.length]),a&&i!==a)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${a}.`));let c=as[i];if(c!==e.key)throw new d(h(`context[${t}] is invalid. Context key for type ${i} must be ${c}.`))}function us(r,e){let t=new Set;for(let n=0;n<e.length;n++)cs(r,e[n],n,t)}function mr(r,e,t){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!pr[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(pr).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));let n=Array.isArray(t)?t:[t];return us(e,n),{timestamp:new Date().toISOString(),id:le(),event:{"hub.topic":r,"hub.event":e,context:n}}}var De=class extends Oe{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!Ve(t))throw new d(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()}))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function ls(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=ur(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 hr(r){return r.split(".").length===3}function vt(r){let[e,t,n]=r.split(".");return ls(t)}function yr(r){try{return typeof vt(r).login_id=="string"}catch{return!1}}var ds,P=class{constructor(e){this[ds]="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)}};ds=Symbol.toStringTag;var _e=class{constructor(){this.storage=typeof localStorage<"u"?localStorage:new St}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?Ct(t):void 0)}},St=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}};var ps="2.1.9-2f209dde",On=k.FHIR_JSON+", */*; q=0.1",fs="https://api.medplum.com/",ms=1e3,hs=6e4,An="Binary/",Pn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Dn=(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))(Dn||{}),Vn=(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))(Vn||{}),_n=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(_n||{}),gr=class extends de{constructor(t){super();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??ys(),this.storage=t?.storage??new _e,this.createPdfImpl=t?.createPdf,this.baseUrl=wn(t?.baseUrl??fs),this.fhirBaseUrl=wn(bt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=bt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=bt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=bt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??hs,this.cacheTime>0?this.requestCache=new ke(t?.resourceCacheSize??ms):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);else{let n=this.getActiveLogin();n&&(this.setAccessToken(n.accessToken,n.refreshToken),this.refreshProfile().catch(console.log))}this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new P(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,k.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o){let s=await this.ensureCodeChallenge(o);window.location.assign(this.getExternalAuthRedirectUri(t,n,i,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){let{codeChallenge:s,codeChallengeMethod:a}=o;if(!a)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!s)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");let c=new URL(t);return c.searchParams.set("response_type","code"),c.searchParams.set("client_id",n),c.searchParams.set("redirect_uri",i),c.searchParams.set("scope","openid profile email"),c.searchParams.set("state",JSON.stringify(o)),c.searchParams.set("code_challenge_method",a),c.searchParams.set("code_challenge",s),c.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P((async()=>{let m=await this.get(o,i);if(m.entry)for(let p of m.entry)this.cacheResource(p.resource);return m})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P(this.search(t,o.searchParams,i).then(m=>m.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P(this.search(t,n,i).then(kn));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(m=>m.relation==="next");if(!a.entry?.length&&!c)break;yield kn(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Pn;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 P(Promise.reject(new Error("Missing reference")));if(i==="system")return new P(Promise.resolve(Pn));let[o,s]=i.split("/");return!o||!s?new P(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Jt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new P((async()=>{let s=`{
3
+ `?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function mo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&fo.includes(r.value)))}var Ce=["true","false"],we=["!=","!~","<=",">=","{}","->"];function an(r){return new z(r,Ce,we).tokenize()}var f={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},ho={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},yo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:f.Indexer},go={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:f.FunctionCall};function xo(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function ce(){return new me().registerPrefix("String",{parse:(r,e)=>new _({type:u.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new _({type:u.dateTime,value:se(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new _({type:u.Quantity,value:xo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new _({type:u.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new _({type:u.boolean,value:!0})}).registerPrefix("false",{parse:()=>new _({type:u.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new tt}).registerPrefix("(",ho).registerInfix("[",yo).registerInfix("(",go).prefix("+",f.UnaryAdd,(r,e)=>new rt("+",e,t=>t)).prefix("-",f.UnarySubtract,(r,e)=>new E("-",e,e,(t,n)=>-n)).infixLeft(".",f.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",f.Divide,(r,e,t)=>new E("/",r,t,(n,i)=>n/i)).infixLeft("*",f.Multiply,(r,e,t)=>new E("*",r,t,(n,i)=>n*i)).infixLeft("+",f.Add,(r,e,t)=>new E("+",r,t,(n,i)=>n+i)).infixLeft("-",f.Subtract,(r,e,t)=>new E("-",r,t,(n,i)=>n-i)).infixLeft("|",f.Union,(r,e,t)=>new ae(r,t)).infixLeft("=",f.Equals,(r,e,t)=>new st(r,t)).infixLeft("!=",f.NotEquals,(r,e,t)=>new at(r,t)).infixLeft("~",f.Equivalent,(r,e,t)=>new ct(r,t)).infixLeft("!~",f.NotEquivalent,(r,e,t)=>new ut(r,t)).infixLeft("<",f.LessThan,(r,e,t)=>new E("<",r,t,(n,i)=>n<i)).infixLeft("<=",f.LessThanOrEquals,(r,e,t)=>new E("<=",r,t,(n,i)=>n<=i)).infixLeft(">",f.GreaterThan,(r,e,t)=>new E(">",r,t,(n,i)=>n>i)).infixLeft(">=",f.GreaterThanOrEquals,(r,e,t)=>new E(">=",r,t,(n,i)=>n>=i)).infixLeft("&",f.Ampersand,(r,e,t)=>new nt(r,t)).infixLeft("and",f.And,(r,e,t)=>new lt(r,t)).infixLeft("as",f.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",f.Contains,(r,e,t)=>new it(r,t)).infixLeft("div",f.Divide,(r,e,t)=>new E("div",r,t,(n,i)=>n/i|0)).infixLeft("in",f.In,(r,e,t)=>new ot(r,t)).infixLeft("is",f.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",f.Modulo,(r,e,t)=>new E("mod",r,t,(n,i)=>n%i)).infixLeft("or",f.Or,(r,e,t)=>new dt(r,t)).infixLeft("xor",f.Xor,(r,e,t)=>new pt(r,t)).infixLeft("implies",f.Implies,(r,e,t)=>new ft(r,t))}var To=ce();function mt(r){return new et(r,To.construct(an(r)).consumeAndParse())}function ee(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=T(t[n]))}return ue(r,t).map(n=>n.value)}function ue(r,e,t){let n=t??{};return mt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var tr=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(tr||{});function rr(r,e){let t=w.types[r]?.searchParamsDetails?.[e.code];return t||(t=So(r,e)),t}function vo(r,e,t){let n=w.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function So(r,e){let t=e.code,n=Eo(t),i=nr(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Ie(a);c.length===1&&c[0]instanceof v?o.propertyTypes.add("boolean"):cn(o,Ie(a),r,1)}let s={columnName:n,type:Ao(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return vo(r,t,s),s}function cn(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){bo(r,i);return}let o=i.toString(),s=Re(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof Z&&(a=!0,c++),s.max>1&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let m of s.type)r.propertyTypes.add(m.code);return}for(let m of s.type){let p=m.code;Ro(p)&&(p=s.type[0].code),cn(r,e,p,c)}}function bo(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 Ro(r){return r==="Element"||r==="BackboneElement"}function Eo(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function Ao(r,e){switch(r.type){case"date":return e.size===1&&e.has(u.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(u.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(u.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function nr(r,e){let t=[],n=mt(e);return er(r,n.child,t),t}function Po(r,e){let t=nr(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function er(r,e,t){e instanceof ae?(er(r,e.left,t),er(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Ie(r){return r instanceof Y||r instanceof Z?[Ie(r.left),r].flat():r instanceof v?[r]:r instanceof K?[Ie(r.left),Ie(r.right)].flat():r instanceof $&&r.name==="where"&&!(r.args[0]instanceof X)?[]:[r]}var Co=20,dn=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(dn||{}),pn={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"},ir={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function wo(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 fn(r,t)}function or(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return fn(e,r.searchParams.entries())}function Io(r){return or(new URL(r,"https://example.com/"))}function ht(r){return or(new URL(r,"https://api.medplum.com/"))}function fn(r,e){let t={resourceType:r};for(let[n,i]of e)ko(t,n,i);return t}function ko(r,e,t){let n,i,o=e.indexOf(":");switch(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n){case"_sort":Oo(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?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=un(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=w.types[r.resourceType]?.searchParams?.[n];s?Do(r,s,i,t):Lo(r,n,i,t)}}}function Oo(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 Do(r,e,t,n){if(t==="missing"){yt(r,{code:e.code,operator:"missing",value:n});return}switch(e.type){case"number":case"date":case"quantity":Vo(r,e,n);break;case"reference":case"string":case"token":case"uri":_o(r,e,t,n);break;default:break}}function Vo(r,e,t){let{operator:n,value:i}=Uo(t);yt(r,{code:e.code,operator:n,value:i})}function _o(r,e,t,n){yt(r,{code:e.code,operator:No(t),value:n})}function Lo(r,e,t,n){let i="eq";if(t)i=t;else if(n.length>=2){let o=n.substring(0,2);o in ir&&(n.length===2||n.at(2)?.match(/\d/))&&(i=o,n=n.substring(o.length))}yt(r,{code:e,operator:i,value:n})}function Uo(r){let e=r.substring(0,2),t=ir[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function No(r){return pn[r]??"eq"}function un(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}'`))}function yt(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Fo=/{{([^{}]+)}}/g;function Mo(r,e){return r=r.replaceAll(Fo,(t,n)=>{let i=ue(n,[],e);return i.length!==1?"":Zt(i[0])}),ht(r)}function Bo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(qo(t))),r.sortRules&&r.sortRules.length>0&&e.push($o(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 qo(r){let e=r.operator in pn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in ir?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function $o(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 ar(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!jo(r,e,t))return!1}return!0}function jo(r,e,t){let n=w.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ee(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Ho(r,t,n);case"string":case"uri":return mn(r,t,n);case"token":return Qo(r,t,n);case"date":return Go(r,t,n);default:return!1}}function Ho(r,e,t){let n=ee(t.expression,r),i=gt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Qo(r,e,t){return rr(r.resourceType,t).type==="BOOLEAN"?Wo(r,e,t):mn(r,e,t,!0)}function Wo(r,e,t){let n=ee(t.expression,r),i=e.value==="true",o=n.includes(i);return gt(e.operator)?!o:o}function mn(r,e,t,n){let i=ee(t.expression,r),o=e.value.split(","),s=gt(e.operator);for(let a of i)for(let c of o)if(sr(a,e.operator,c,n))return!s;return s}function sr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return sr(r,e,o,!1)&&(!s||sr(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 Go(r,e,t){let n=ee(t.expression,r),i=e.value.split(","),o=gt(e.operator);for(let s of n)for(let a of i)if(Ko(s,e.operator,a))return!o;return o}function Ko(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 gt(r){return r==="ne"||r==="not"}var zo={resourceType:"*"},hn=["DomainConfiguration","JsonWebKey","Login"],yn=["PasswordChangeRequest","Project","ProjectMembership","User"],gn=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(gn||{}),Jo=["read","vread","history","history-instance"];function Yo(r,e){if(r.resource){for(let t of r.resource)if(cr(t.resourceType,e))return!0}return!1}function xn(r,e){if(hn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(cr(t.resourceType,e)&&!t.readonly)return!0}return!1}function Xo(r,e){let t=e.resourceType;return xn(r,t)?Tn(r,e,!1):!1}function Tn(r,e,t){if(r.resource){for(let n of r.resource)if(vn(e,t?"read":"update",n))return!0}return!1}function Zo(r,e,t){if(!t)return zo;if(t.resource){for(let n of t.resource)if(vn(r,e,n))return n}}function vn(r,e,t){let n=r.resourceType;return!(!cr(t.resourceType,n)||t.readonly&&!Jo.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!ar(r,ht(t.criteria)))}function cr(r,e){return r===e||r==="*"&&!yn.includes(e)}function ur(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 lr(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 xt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),It(r.buffer)}async function dr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function le(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Sn(r){let e={};r=Be(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=le(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>es(i,o,e),2);return bn(JSON.parse(n))}function es(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 bn(r){let e=rs(r),{sorted:t,cycles:n}=ts(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],m={...c,request:{...c.request,method:"PUT"}};o.push(m)}return{...r,entry:o}}function ts(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Rn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ie(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Rn(n,e)}}function rs(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&&Rn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ns(r){r=Be(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=le());return Sn(e)}var ke=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var k={CSS:"text/css",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var de=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}},Oe=class{constructor(){this.emitter=new de}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var pr={"patient-open":"patient-open","patient-close":"patient-close","imagingstudy-open":"imagingstudy-open","imagingstudy-close":"imagingstudy-close"},is=["Patient","Encounter","ImagingStudy"],os={"patient-open":["Patient"],"patient-close":["Patient"],"imagingstudy-open":["Patient","ImagingStudy"],"imagingstudy-close":["Patient","ImagingStudy"]},ss={"patient-open":["Encounter"],"patient-close":["Encounter"],"imagingstudy-open":[],"imagingstudy-close":[]};function En(r){return is.includes(r)}var as={ImagingStudy:"study",Patient:"patient",Encounter:"encounter"};function fr(r){return!!r.endpoint}function Tt(r){if(!Ve(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 fr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Ve(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(!pr[o])return!1;return!(fr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function cs(r,e,t,n){if(!(e.key&&typeof e.key=="string"))throw new d(h(`context[${t}] is invalid. Context must contain a key.`));if(n.has(e.key))throw new d(h(`context[${t}] is invalid. Key ${e.key} has already been used in a previous context.`));if(n.add(e.key),typeof e.resource!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.resource.id&&typeof e.resource.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resource.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=e.resource.resourceType;if(!En(i))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));let o=os[r],s=ss[r],a;if(t<o.length?a=o[t]:t-o.length<s.length&&(a=s[t-o.length]),a&&i!==a)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${a}.`));let c=as[i];if(c!==e.key)throw new d(h(`context[${t}] is invalid. Context key for type ${i} must be ${c}.`))}function us(r,e){let t=new Set;for(let n=0;n<e.length;n++)cs(r,e[n],n,t)}function mr(r,e,t){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!pr[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(pr).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));let n=Array.isArray(t)?t:[t];return us(e,n),{timestamp:new Date().toISOString(),id:le(),event:{"hub.topic":r,"hub.event":e,context:n}}}var De=class extends Oe{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!Ve(t))throw new d(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()}))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function ls(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=ur(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 hr(r){return r.split(".").length===3}function vt(r){let[e,t,n]=r.split(".");return ls(t)}function yr(r){try{return typeof vt(r).login_id=="string"}catch{return!1}}var ds,P=class{constructor(e){this[ds]="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)}};ds=Symbol.toStringTag;var _e=class{constructor(){this.storage=typeof localStorage<"u"?localStorage:new St}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?Ct(t):void 0)}},St=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}};var ps="2.1.10-7f173b06",On=k.FHIR_JSON+", */*; q=0.1",fs="https://api.medplum.com/",ms=1e3,hs=6e4,An="Binary/",Pn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},Dn=(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))(Dn||{}),Vn=(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))(Vn||{}),_n=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(_n||{}),gr=class extends de{constructor(t){super();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??ys(),this.storage=t?.storage??new _e,this.createPdfImpl=t?.createPdf,this.baseUrl=wn(t?.baseUrl??fs),this.fhirBaseUrl=wn(bt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=bt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=bt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=bt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??hs,this.cacheTime>0?this.requestCache=new ke(t?.resourceCacheSize??ms):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);else{let n=this.getActiveLogin();n&&(this.setAccessToken(n.accessToken,n.refreshToken),this.refreshProfile().catch(console.log))}this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new P(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,k.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(i)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o){let s=await this.ensureCodeChallenge(o);window.location.assign(this.getExternalAuthRedirectUri(t,n,i,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){let{codeChallenge:s,codeChallengeMethod:a}=o;if(!a)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!s)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");let c=new URL(t);return c.searchParams.set("response_type","code"),c.searchParams.set("client_id",n),c.searchParams.set("redirect_uri",i),c.searchParams.set("scope","openid profile email"),c.searchParams.set("state",JSON.stringify(o)),c.searchParams.set("code_challenge_method",a),c.searchParams.set("code_challenge",s),c.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P((async()=>{let m=await this.get(o,i);if(m.entry)for(let p of m.entry)this.cacheResource(p.resource);return m})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P(this.search(t,o.searchParams,i).then(m=>m.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P(this.search(t,n,i).then(kn));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(m=>m.relation==="next");if(!a.entry?.length&&!c)break;yield kn(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Pn;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 P(Promise.reject(new Error("Missing reference")));if(i==="system")return new P(Promise.resolve(Pn));let[o,s]=i.split("/");return!o||!s?new P(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Jt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new P((async()=>{let s=`{
4
4
  StructureDefinitionList(name: "${t}") {
5
5
  resourceType,
6
6
  name,