@medplum/react 2.0.25 → 2.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/esm/index.mjs +4 -4
- package/dist/esm/index.mjs.map +3 -3
- package/dist/types/DateTimeInput/DateTimeInput.d.ts +1 -0
- package/dist/types/QuantityInput/QuantityInput.d.ts +1 -0
- package/dist/types/ReferenceInput/ReferenceInput.d.ts +1 -0
- package/dist/types/auth/NewUserForm.d.ts +1 -0
- package/dist/types/auth/RegisterForm.d.ts +1 -0
- package/package.json +22 -19
package/dist/esm/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{formatAddress as cs}from"@medplum/core";import La from"react";function Ra(e){let o=e.value;return o?La.createElement(La.Fragment,null,cs(o)):null}import{Group as ms,NativeSelect as Na,TextInput as Oo}from"@mantine/core";import Ve,{useRef as ps,useState as xs}from"react";function Ha(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Va(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function qa(e){let[o,t]=xs(e.defaultValue||{}),r=ps();r.current=o;function a(d){t(d),e.onChange&&e.onChange(d)}function n(d){a({...r.current,use:d})}function f(d){a({...r.current,type:d})}function l(d){a(Va(r.current||{},0,d))}function s(d){a(Va(r.current||{},1,d))}function i(d){a({...r.current,city:d})}function u(d){a({...r.current,state:d})}function c(d){a({...r.current,postalCode:d})}return Ve.createElement(ms,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Na,{"data-testid":"address-use",defaultValue:o.use,onChange:d=>n(d.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Na,{"data-testid":"address-type",defaultValue:o.type,onChange:d=>f(d.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(Oo,{placeholder:"Line 1",defaultValue:Ha(o,0),onChange:d=>l(d.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"Line 2",defaultValue:Ha(o,1),onChange:d=>s(d.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"City",defaultValue:o.city,onChange:d=>i(d.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"State",defaultValue:o.state,onChange:d=>u(d.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:d=>c(d.currentTarget.value)}))}import{TextInput as Ss}from"@mantine/core";import{createReference as bs}from"@medplum/core";import Ps,{useRef as Ds,useState as Ts}from"react";import{showNotification as Is}from"@mantine/notifications";import gs,{createContext as hs,useContext as ys,useEffect as Ga,useState as Cs}from"react";var Ua=hs(void 0);function Mg(e){let o=e.medplum,t=e.navigate||vs,[r,a]=Cs({profile:o.getProfile(),loading:!1});Ga(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListeneer("change",f)},[o,r]),Ga(()=>{function f(){Is({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListeneer("offline",f)},[o]);let n={...r,medplum:o,navigate:t};return gs.createElement(Ua.Provider,{value:n},e.children)}function wo(){return ys(Ua)}function v(){return wo().medplum}function qe(){return wo().navigate}function ft(){return wo().profile}function vs(e){window.location.assign(e)}function za(e){let o=ft(),[t,r]=Ts(e.defaultValue||{}),a=Ds();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&bs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Ps.createElement(Ss,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as ru,useMantineTheme as au}from"@mantine/core";import eo,{Suspense as nu,useState as fu}from"react";import{Alert as Fs}from"@mantine/core";import{normalizeErrorString as Es}from"@medplum/core";import{forwardRef as ks,createElement as Xa}from"react";import Ze from"prop-types";var Wa={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Bs=Object.defineProperty,As=Object.defineProperties,Ms=Object.getOwnPropertyDescriptors,lt=Object.getOwnPropertySymbols,$a=Object.prototype.hasOwnProperty,Ka=Object.prototype.propertyIsEnumerable,Qa=(e,o,t)=>o in e?Bs(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,Ja=(e,o)=>{for(var t in o||(o={}))$a.call(o,t)&&Qa(e,t,o[t]);if(lt)for(var t of lt(o))Ka.call(o,t)&&Qa(e,t,o[t]);return e},Os=(e,o)=>As(e,Ms(o)),ws=(e,o)=>{var t={};for(var r in e)$a.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&<)for(var r of lt(e))o.indexOf(r)<0&&Ka.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=ks((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,c=ws(f,["color","size","stroke","children"]);return Xa("svg",Ja(Os(Ja({ref:n},Wa),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),c),[...t.map(([d,k])=>Xa(d,k)),...u||[]])});return r.propTypes={color:Ze.string,size:Ze.oneOfType([Ze.string,Ze.number]),stroke:Ze.oneOfType([Ze.string,Ze.number])},r.displayName=`${o}`,r};var nr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var Ye=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var fr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var lr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var sr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var ir=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var ur=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var dr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Fe=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var cr=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var mr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var pr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ge=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var lo=x("circle-plus","IconCirclePlus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}],["path",{d:"M12 9l0 6",key:"svg-2"}]]);var Fo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var xr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Ir=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var gr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var hr=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var so=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var io=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var yr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Cr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var vr=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Sr=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var br=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var st=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var it=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Pr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Dr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Tr=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var kr=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Br=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var uo=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Eo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Lo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Ar=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Mr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Or=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Ro=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var wr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Fr from"react";var co=class extends Fr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Fr.createElement(Fs,{icon:Fr.createElement(Ye,{size:16}),title:"Something went wrong",color:"red"},Es(this.state.error)):this.props.children}};import{Center as Ls,Loader as Rs}from"@mantine/core";import ja from"react";function Er(){return ja.createElement(Ls,{style:{width:"100%",height:"100vh"}},ja.createElement(Rs,null))}import{Avatar as yi,createStyles as Ci,Group as mt,Header as vi,Menu as Ee,Stack as Si,Text as Ho,UnstyledButton as dn}from"@mantine/core";import{formatHumanName as bi,getReferenceString as cn}from"@medplum/core";import q,{useState as Pi}from"react";import{formatHumanName as Ns}from"@medplum/core";import _a from"react";function ut(e){let o=e.value;return o?_a.createElement(_a.Fragment,null,Ns(o,e.options)):null}import{Avatar as tn}from"@mantine/core";import{getDisplayString as _s,getImageSrc as Zs}from"@medplum/core";import Lr from"react";import{Anchor as Hs}from"@mantine/core";import{isReference as Vs,isResource as qs}from"@medplum/core";import Gs from"react";function H(e){e.preventDefault(),e.stopPropagation()}function dt(e){if(Za(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&Za(o[0]))return!0}return!1}function Za(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function fe(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=Us(t);return r&&(s+="/"+r),Gs.createElement(Hs,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function Us(e){if(e){if(typeof e=="string")return zs(e);if(qs(e))return Ws(e);if(Vs(e))return Xs(e)}return"#"}function zs(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Ws(e){return`/${e.resourceType}/${e.id}`}function Xs(e){return`/${e.reference}`}import{deepEquals as Qs,isReference as on,isResource as Js,normalizeOperationOutcome as $s}from"@medplum/core";import{useCallback as Ks,useEffect as Ya,useState as js}from"react";function X(e,o){let t=v(),[r,a]=js(en(t,e)),n=Ks(f=>{Qs(f,r)||a(f)},[r,a]);return Ya(()=>{n(en(t,e))},[t,e,n]),Ya(()=>{let f=!0;return on(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o($s(l)))}),()=>f=!1},[t,r,e,n,o]),r}function en(e,o){if(o){if(Js(o))return o;if(on(o))return e.getCachedReference(o)}}function Ie(e){let o=X(e.value),t=o?_s(o):e.alt??"",r=(o&&Zs(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Lr.createElement(fe,{to:o},Lr.createElement(tn,{src:r,alt:t,radius:a,...n})):Lr.createElement(tn,{src:r,alt:t,radius:a,...n})}import{createStyles as ni,Group as fi,Text as an}from"@mantine/core";import{formatHumanName as li,getDisplayString as sn,getReferenceString as si,isUUID as ii}from"@medplum/core";import Ue,{forwardRef as ui,useCallback as nn}from"react";import{Loader as Ys,MultiSelect as ei}from"@mantine/core";import rn,{useCallback as mo,useEffect as oi,useRef as po,useState as No}from"react";import{showNotification as ti}from"@mantine/notifications";import{normalizeErrorString as ri}from"@medplum/core";function ct(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=ai(o),u=po(null),[c,d]=No(void 0),[k,T]=No(),[S,g]=No(),[D,m]=No(),[O,h]=No(i.map(r)),M=po();M.current=c;let Z=po();Z.current=k;let de=po();de.current=S;let ge=po();ge.current=D;let ee=po();ee.current=O;let Se=mo(()=>{T(void 0);let ae=u.current?.value.trim()||"";if(ae===M.current)return;d(ae);let oe=new AbortController;g(oe),a(ae,oe.signal).then(be=>{oe.signal.aborted||(h(be.map(r)),g(void 0),ge.current&&(be.length>0&&n(be.slice(0,1)),m(!1)))}).catch(be=>{oe.signal.aborted||be.message.includes("aborted")||ti({color:"red",message:ri(be)})})},[a,n,r]),y=mo(()=>{de.current&&(de.current.abort(),g(void 0)),Z.current!==void 0&&window.clearTimeout(Z.current);let ae=window.setTimeout(()=>Se(),100);T(ae)},[Se]),N=mo(ae=>{let oe=[];for(let be of ae){let nt=ee.current?.find(ds=>ds.value===be)?.resource;!nt&&l!==!1&&(nt=f(be)),nt&&oe.push(nt)}n(oe)},[l,n,f]),C=mo(ae=>{ae.key==="Enter"&&(!Z.current&&!de.current?(H(ae),ee.current&&ee.current.length>0&&(h(ee.current.slice(0,1)),N([ee.current[0].value]))):m(!0))},[N]),W=mo(ae=>{let oe=r(f(ae));return h([...ee.current,oe]),oe},[f,h,r]),He=mo((ae,oe)=>!oe,[]);return oi(()=>()=>{de.current&&de.current.abort()},[]),rn.createElement(ei,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:C,onSearchChange:y,data:O,onFocus:Se,onChange:N,onCreate:W,rightSectionWidth:40,rightSection:S?rn.createElement(Ys,{size:16}):null,filter:He,creatable:!0})}function ai(e){return e?Array.isArray(e)?e:[e]:[]}var di=ni(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ci(e){return e.id}function mi(e){return{value:e.id,label:sn(e),resource:e}}function un(e){let{classes:o}=di(),t=qe(),r=v(),a=nn(async(f,l)=>{let s=xi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Ii(u,f)},[r]),n=nn(f=>{f.length>0&&t(`/${si(f[0])}`)},[t]);return Ue.createElement(ct,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ue.createElement(Br,{size:16}),placeholder:"Search",itemComponent:pi,toKey:ci,toOption:mi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var pi=ui(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ue.createElement("div",{ref:t,...o},Ue.createElement(fi,{noWrap:!0},Ue.createElement(Ie,{value:e}),Ue.createElement("div",null,Ue.createElement(an,null,sn(e)),Ue.createElement(an,{size:"xs",color:"dimmed"},r))))});function xi(e){let o=JSON.stringify(e);return ii(e)?`{
|
|
1
|
+
import{formatAddress as ps}from"@medplum/core";import Ra from"react";function Na(e){let o=e.value;return o?Ra.createElement(Ra.Fragment,null,ps(o)):null}import{Group as xs,NativeSelect as Ha,TextInput as Oo}from"@mantine/core";import Ve,{useRef as Is,useState as gs}from"react";function Va(e,o){return e.line&&e.line.length>o?e.line[o]:""}function qa(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ga(e){let[o,t]=gs(e.defaultValue||{}),r=Is();r.current=o;function a(m){t(m),e.onChange&&e.onChange(m)}function n(m){a({...r.current,use:m})}function f(m){a({...r.current,type:m})}function l(m){a(qa(r.current||{},0,m))}function s(m){a(qa(r.current||{},1,m))}function i(m){a({...r.current,city:m})}function u(m){a({...r.current,state:m})}function d(m){a({...r.current,postalCode:m})}return Ve.createElement(xs,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Ha,{"data-testid":"address-use",defaultValue:o.use,onChange:m=>n(m.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Ha,{"data-testid":"address-type",defaultValue:o.type,onChange:m=>f(m.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(Oo,{placeholder:"Line 1",defaultValue:Va(o,0),onChange:m=>l(m.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"Line 2",defaultValue:Va(o,1),onChange:m=>s(m.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"City",defaultValue:o.city,onChange:m=>i(m.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"State",defaultValue:o.state,onChange:m=>u(m.currentTarget.value)}),Ve.createElement(Oo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:m=>d(m.currentTarget.value)}))}import{TextInput as Ds}from"@mantine/core";import{createReference as Ts}from"@medplum/core";import ks,{useRef as Bs,useState as As}from"react";import{showNotification as hs}from"@mantine/notifications";import ys,{createContext as Cs,useContext as vs,useEffect as Ua,useMemo as Ss,useState as bs}from"react";var za=Cs(void 0);function Lg(e){let o=e.medplum,t=e.navigate??Ps,[r,a]=bs({profile:o.getProfile(),loading:!1});Ua(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),Ua(()=>{function f(){hs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Ss(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return ys.createElement(za.Provider,{value:n},e.children)}function Eo(){return vs(za)}function S(){return Eo().medplum}function qe(){return Eo().navigate}function nt(){return Eo().profile}function Ps(e){window.location.assign(e)}function Wa(e){let o=nt(),[t,r]=As(e.defaultValue||{}),a=Bs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Ts(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return ks.createElement(Ds,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as fu,useMantineTheme as lu}from"@mantine/core";import oo,{Suspense as su,useState as iu}from"react";import{Alert as Rs}from"@mantine/core";import{normalizeErrorString as Ns}from"@medplum/core";import{forwardRef as Ms,createElement as Qa}from"react";import Ye from"prop-types";var Xa={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Fs=Object.defineProperty,ws=Object.defineProperties,Os=Object.getOwnPropertyDescriptors,ft=Object.getOwnPropertySymbols,Ka=Object.prototype.hasOwnProperty,ja=Object.prototype.propertyIsEnumerable,Ja=(e,o,t)=>o in e?Fs(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,$a=(e,o)=>{for(var t in o||(o={}))Ka.call(o,t)&&Ja(e,t,o[t]);if(ft)for(var t of ft(o))ja.call(o,t)&&Ja(e,t,o[t]);return e},Es=(e,o)=>ws(e,Os(o)),Ls=(e,o)=>{var t={};for(var r in e)Ka.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&ft)for(var r of ft(e))o.indexOf(r)<0&&ja.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Ms((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=Ls(f,["color","size","stroke","children"]);return Qa("svg",$a(Es($a({ref:n},Xa),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([m,v])=>Qa(m,v)),...u||[]])});return r.propTypes={color:Ye.string,size:Ye.oneOfType([Ye.string,Ye.number]),stroke:Ye.oneOfType([Ye.string,Ye.number])},r.displayName=`${o}`,r};var nr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var eo=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var fr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var lr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var sr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var ir=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var ur=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var dr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Oe=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var cr=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var mr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var pr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ge=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var io=x("circle-plus","IconCirclePlus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}],["path",{d:"M12 9l0 6",key:"svg-2"}]]);var Lo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var xr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Ir=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var gr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var hr=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var uo=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var co=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var yr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Cr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var vr=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Sr=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var br=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var lt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var st=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Pr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Dr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Tr=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var kr=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Br=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var mo=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Ro=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var No=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Ar=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Mr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Fr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Ho=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var wr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Or from"react";var po=class extends Or.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Or.createElement(Rs,{icon:Or.createElement(eo,{size:16}),title:"Something went wrong",color:"red"},Ns(this.state.error)):this.props.children}};import{Center as Hs,Loader as Vs}from"@mantine/core";import _a from"react";function Er(){return _a.createElement(Hs,{style:{width:"100%",height:"100vh"}},_a.createElement(Vs,null))}import{Avatar as Si,createStyles as bi,Group as ct,Header as Pi,Menu as Ee,Stack as Di,Text as qo,UnstyledButton as cn}from"@mantine/core";import{formatHumanName as Ti,getReferenceString as mn}from"@medplum/core";import q,{useState as ki}from"react";import{formatHumanName as qs}from"@medplum/core";import Za from"react";function it(e){let o=e.value;return o?Za.createElement(Za.Fragment,null,qs(o,e.options)):null}import{Avatar as rn}from"@mantine/core";import{getDisplayString as ei,getImageSrc as oi}from"@medplum/core";import Lr from"react";import{Anchor as Gs}from"@mantine/core";import{isReference as Us,isResource as zs}from"@medplum/core";import Ws from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ut(e){if(Ya(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&Ya(o[0]))return!0}return!1}function Ya(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=Xs(t);return r&&(s+="/"+r),Ws.createElement(Gs,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function Xs(e){if(e){if(typeof e=="string")return Qs(e);if(zs(e))return Js(e);if(Us(e))return $s(e)}return"#"}function Qs(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Js(e){return`/${e.resourceType}/${e.id}`}function $s(e){return`/${e.reference}`}import{deepEquals as Ks,isReference as tn,isResource as js,normalizeOperationOutcome as _s}from"@medplum/core";import{useCallback as Zs,useEffect as en,useState as Ys}from"react";function X(e,o){let t=S(),[r,a]=Ys(on(t,e)),n=Zs(f=>{Ks(f,r)||a(f)},[r,a]);return en(()=>{n(on(t,e))},[t,e,n]),en(()=>{let f=!0;return tn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(_s(l)))}),()=>f=!1},[t,r,e,n,o]),r}function on(e,o){if(o){if(js(o))return o;if(tn(o))return e.getCachedReference(o)}}function Ie(e){let o=X(e.value),t=o?ei(o):e.alt??"",r=(o&&oi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Lr.createElement(ne,{to:o},Lr.createElement(rn,{src:r,alt:t,radius:a,...n})):Lr.createElement(rn,{src:r,alt:t,radius:a,...n})}import{createStyles as si,Group as ii,Text as nn}from"@mantine/core";import{formatHumanName as ui,getDisplayString as un,getReferenceString as di,isUUID as ci}from"@medplum/core";import Ue,{forwardRef as mi,useCallback as fn}from"react";import{Loader as ti,MultiSelect as ri}from"@mantine/core";import an,{useCallback as xo,useEffect as ai,useRef as Io,useState as Vo}from"react";import{showNotification as ni}from"@mantine/notifications";import{normalizeErrorString as fi}from"@medplum/core";function dt(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=li(o),u=Io(null),[d,m]=Vo(void 0),[v,k]=Vo(),[T,g]=Vo(),[D,c]=Vo(),[F,h]=Vo(i.map(r)),M=Io();M.current=d;let ge=Io();ge.current=v;let $=Io();$.current=T;let Se=Io();Se.current=D;let xe=Io();xe.current=F;let be=xo(()=>{k(void 0);let te=u.current?.value.trim()||"";if(te===M.current)return;m(te);let ae=new AbortController;g(ae),a(te,ae.signal).then(ue=>{ae.signal.aborted||(h(ue.map(r)),g(void 0),Se.current&&(ue.length>0&&n(ue.slice(0,1)),c(!1)))}).catch(ue=>{ae.signal.aborted||ue.message.includes("aborted")||ni({color:"red",message:fi(ue)})})},[a,n,r]),y=xo(()=>{$.current&&($.current.abort(),g(void 0)),ge.current!==void 0&&window.clearTimeout(ge.current);let te=window.setTimeout(()=>be(),100);k(te)},[be]),L=xo(te=>{let ae=[];for(let ue of te){let Ze=xe.current?.find(ms=>ms.value===ue)?.resource;!Ze&&l!==!1&&(Ze=f(ue)),Ze&&ae.push(Ze)}n(ae)},[l,n,f]),He=xo(te=>{te.key==="Enter"&&(!ge.current&&!$.current?(H(te),xe.current&&xe.current.length>0&&(h(xe.current.slice(0,1)),L([xe.current[0].value]))):c(!0))},[L]),C=xo(te=>{let ae=r(f(te));return h([...xe.current,ae]),ae},[f,h,r]),W=xo((te,ae)=>!ae,[]);return ai(()=>()=>{$.current&&$.current.abort()},[]),an.createElement(ri,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:He,onSearchChange:y,data:F,onFocus:be,onChange:L,onCreate:C,rightSectionWidth:40,rightSection:T?an.createElement(ti,{size:16}):null,filter:W,creatable:!0})}function li(e){return e?Array.isArray(e)?e:[e]:[]}var pi=si(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function xi(e){return e.id}function Ii(e){return{value:e.id,label:un(e),resource:e}}function dn(e){let{classes:o}=pi(),t=qe(),r=S(),a=fn(async(f,l)=>{let s=hi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return yi(u,f)},[r]),n=fn(f=>{f.length>0&&t(`/${di(f[0])}`)},[t]);return Ue.createElement(dt,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ue.createElement(Br,{size:16}),placeholder:"Search",itemComponent:gi,toKey:xi,toOption:Ii,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var gi=mi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ue.createElement("div",{ref:t,...o},Ue.createElement(ii,{noWrap:!0},Ue.createElement(Ie,{value:e}),Ue.createElement("div",null,Ue.createElement(nn,null,un(e)),Ue.createElement(nn,{size:"xs",color:"dimmed"},r))))});function hi(e){let o=JSON.stringify(e);return ci(e)?`{
|
|
2
2
|
Patients1: PatientList(_id: ${o}, _count: 1) {
|
|
3
3
|
resourceType
|
|
4
4
|
id
|
|
@@ -61,8 +61,8 @@ import{formatAddress as cs}from"@medplum/core";import La from"react";function Ra
|
|
|
61
61
|
display
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
}`.replace(/\s+/g," ")}function Ii(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),hi(gi(t),o).slice(0,5)}function gi(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function hi(e,o){return e.sort((t,r)=>fn(r,o)-fn(t,o))}function fn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,ln(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,ln(li(r),o));return t}function ln(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Di=Ci(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function mn(e){let o=wo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Di(),[s,i]=Pi(!1);return q.createElement(vi,{height:60,p:8,style:{zIndex:101}},q.createElement(mt,{position:"apart"},q.createElement(mt,{spacing:"xs"},q.createElement(dn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),q.createElement(un,{pathname:e.pathname,searchParams:e.searchParams})),q.createElement(Ee,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},q.createElement(Ee.Target,null,q.createElement(dn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},q.createElement(mt,{spacing:7},q.createElement(Ie,{value:r,radius:"xl",size:24}),q.createElement(Ho,{size:"sm",className:f.userName},bi(r?.name?.[0])),q.createElement(pr,{size:12,stroke:1.5})))),q.createElement(Ee.Dropdown,null,q.createElement(Si,{align:"center",p:"xl"},q.createElement(Ie,{size:"xl",radius:100,value:o.profile}),q.createElement(ut,{value:o.profile?.name?.[0]}),q.createElement(Ho,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&q.createElement(Ee.Divider,null),n.map(u=>u.profile.reference!==cn(o.profile)&&q.createElement(Ee.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},q.createElement(mt,null,q.createElement(yi,{radius:"xl"}),q.createElement("div",{style:{flex:1}},q.createElement(Ho,{size:"sm",weight:500},u.profile.display),q.createElement(Ho,{color:"dimmed",size:"xs"},u.project.display))))),q.createElement(Ee.Divider,null),q.createElement(Ee.Item,{icon:q.createElement(Mr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),q.createElement(Ee.Item,{icon:q.createElement(uo,{size:14,stroke:1.5}),onClick:()=>a(`/${cn(r)}`)},"Account settings"),q.createElement(Ee.Item,{icon:q.createElement(br,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),q.createElement(Ho,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Ji,createStyles as $i,Navbar as Nr,ScrollArea as Ki,Space as ji,Text as _i}from"@mantine/core";import ne,{useState as Zi}from"react";import{Button as Ai,Group as Mi,Modal as Oi,NativeSelect as wi,Stack as Fi,TextInput as Ei}from"@mantine/core";import{showNotification as xn}from"@mantine/notifications";import{deepClone as Li,normalizeErrorString as Ri}from"@medplum/core";import ze from"react";import Bi from"react";function pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Ti(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&ki(o,t);return o}function Ti(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function ki(e,o){e[o.name]=o.value}function J(e){return Bi.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=pn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function In(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=Li(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),xn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{xn({color:"red",message:Ri(u)})})}return ze.createElement(Oi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(Fi,null,ze.createElement(Ni,{config:t}),ze.createElement(Ei,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(Mi,{position:"right"},ze.createElement(Ai,{mt:"sm",type:"submit"},"OK")))))}function Ni(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(wi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import zi,{useState as Wi}from"react";import Hi,{useCallback as Vi}from"react";function Rr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function qi(e){return typeof e.display=="string"?e.display:Rr(e)}function Gi(e){return{value:Rr(e),label:qi(e),resource:e}}function Ui(e){return{code:e,display:e}}function xo(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Vi(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,c=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,d=[];for(let k of c)k.code&&!d.some(T=>T.code===k.code)&&d.push(k);return d},[o,t]);return Hi.createElement(ct,{...n,creatable:r??!0,clearable:a??!0,toKey:Rr,toOption:Gi,loadOptions:f,onCreate:Ui,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function pt(e){let[o,t]=Wi(e.defaultValue);function r(a){let n=a[0],f=Qi(n);t(f),e.onChange&&e.onChange(f)}return zi.createElement(xo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:Xi(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Xi(e){return e?{code:e}:void 0}function Qi(e){return e?.code}var gn=$i(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function hn(e){let{classes:o}=gn(),t=qe(),r=ou(e.pathname,e.searchParams,e.menus),[a,n]=Zi(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return ne.createElement(ne.Fragment,null,ne.createElement(Nr,{width:{sm:250},p:"xs"},ne.createElement(Ki,null,ne.createElement(Nr.Section,{mb:"sm"},ne.createElement(pt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"http://hl7.org/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),ne.createElement(Nr.Section,{grow:!0},e.menus?.map(s=>ne.createElement(ne.Fragment,{key:`menu-${s.title}`},ne.createElement(_i,{className:o.menuTitle},s.title),s.links?.map(i=>ne.createElement(Yi,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ne.createElement(eu,{to:i.href,icon:i.icon}),ne.createElement("span",null,i.label))))),e.displayAddBookmark&&ne.createElement(Ji,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ne.createElement(kr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ne.createElement(In,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Yi(e){let{classes:o,cx:t}=gn();return ne.createElement(fe,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function eu(e){return e.icon?e.icon:ne.createElement(ji,{w:30})}function ou(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=tu(e,o,f.href);l>a&&(a=l,r=f)}return r}function tu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function $v(e){let o=au(),[t,r]=fu(localStorage.navbarOpen==="true"),a=v(),n=ft();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?eo.createElement(Er,null):eo.createElement(ru,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&eo.createElement(mn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?eo.createElement(hn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},eo.createElement(co,{key:`${e.pathname}?${e.searchParams?.toString()}`},eo.createElement(nu,{fallback:eo.createElement(Er,null)},e.children)))}import Hr from"react";import{Anchor as lu}from"@mantine/core";import We from"react";function Oe(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?We.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&We.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&We.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},We.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&We.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},We.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),We.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},We.createElement(lu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function yn(e){return Hr.createElement("div",null,e.values?.map((o,t)=>Hr.createElement("div",{key:"attatchment-"+t},Hr.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Cn}from"@mantine/core";import le,{useRef as iu,useState as uu}from"react";import Vr,{useRef as su}from"react";function Io(e){let o=v(),t=su(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Vr.createElement(Vr.Fragment,null,Vr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function vn(e){let[o,t]=uu(e.defaultValue??[]),r=iu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return le.createElement("table",{style:{width:"100%"}},le.createElement("colgroup",null,le.createElement("col",{width:"97%"}),le.createElement("col",{width:"3%"})),le.createElement("tbody",null,o.map((n,f)=>le.createElement("tr",{key:`${f}-${o.length}`},le.createElement("td",null,le.createElement(Oe,{value:n,maxWidth:200})),le.createElement("td",null,le.createElement(Cn,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},le.createElement(Ge,null))))),le.createElement("tr",null,le.createElement("td",null),le.createElement("td",null,le.createElement(Io,{onUpload:n=>{a([...r.current,n])}},n=>le.createElement(Cn,{...n,title:"Add",size:"sm",color:"green"},le.createElement(Fo,{size:16})))))))}import{Button as Sn}from"@mantine/core";import go,{useState as du}from"react";function xt(e){let[o,t]=du(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?go.createElement(go.Fragment,null,go.createElement(Oe,{value:o,maxWidth:200}),go.createElement(Sn,{onClick:a=>{H(a),r(void 0)}},"Remove")):go.createElement(Io,{onUpload:r},a=>go.createElement(Sn,{...a},"Upload..."))}import{getPropertyDisplayName as Tu,globalSchema as ku}from"@medplum/core";import Uo from"react";var It=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as cu}from"@mantine/core";import Vo from"react";var mu=cu(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function bn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=mu();return Vo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Pn(e){return Vo.createElement(Vo.Fragment,null,Vo.createElement("dt",null,e.term),Vo.createElement("dd",null,e.children))}import{formatDateTime as vu,formatPeriod as Su,formatTiming as bu,getElementDefinitionTypeName as Pu,getTypedPropertyValue as Du,PropertyType as L}from"@medplum/core";import G from"react";import{formatCodeableConcept as pu}from"@medplum/core";import Dn from"react";function ho(e){return Dn.createElement(Dn.Fragment,null,pu(e.value))}import{formatCoding as xu}from"@medplum/core";import Tn from"react";function kn(e){return Tn.createElement(Tn.Fragment,null,xu(e.value))}import qr from"react";import Bn from"react";function gt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Bn.createElement(Bn.Fragment,null,t.join("").trim())}function An(e){let o=e.value;return o?qr.createElement(qr.Fragment,null,o.name,o.name&&": ",o.telecom?.map((t,r)=>qr.createElement(gt,{key:"telecom-"+r,value:t}))):null}import Iu from"react";function Mn(e){return Iu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as gu}from"@medplum/core";import On from"react";function wn(e){return On.createElement(On.Fragment,null,gu(e.value))}import{formatQuantity as hu}from"@medplum/core";import Fn from"react";function qo(e){return Fn.createElement(Fn.Fragment,null,hu(e.value))}import{formatRange as yu}from"@medplum/core";import En from"react";function ht(e){return En.createElement(En.Fragment,null,yu(e.value))}import yt from"react";function Ln(e){let o=e.value;return o?yt.createElement(yt.Fragment,null,yt.createElement(qo,{value:o.numerator}),"\xA0/\xA0",yt.createElement(qo,{value:o.denominator})):null}import{stringify as Cu}from"@medplum/core";import Gr from"react";function oo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Cu(e.value);return e.link!==!1&&e.value.reference?Gr.createElement(fe,{to:e.value},o):Gr.createElement(Gr.Fragment,null,o)}import Ct from"react";function Rn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Ct.createElement(Ct.Fragment,null,t.map((a,n)=>Ct.createElement("div",{key:`${n}-${t.length}`},Ct.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.max==="*"&&!e.arrayElement)return t===L.Attachment?G.createElement(yn,{values:r,maxWidth:e.maxWidth}):G.createElement(Rn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case L.boolean:return G.createElement(G.Fragment,null,r===void 0?"":(!!r).toString());case L.SystemString:case L.string:return G.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case L.code:case L.date:case L.integer:case L.positiveInt:case L.unsignedInt:case L.uri:case L.url:return G.createElement(G.Fragment,null,r);case L.canonical:return G.createElement(oo,{value:{reference:r},link:e.link});case L.dateTime:case L.instant:return G.createElement(G.Fragment,null,vu(r));case L.markdown:return G.createElement("pre",null,r);case L.Address:return G.createElement(Ra,{value:r});case L.Annotation:return G.createElement(G.Fragment,null,r?.text);case L.Attachment:return G.createElement(Oe,{value:r,maxWidth:e.maxWidth});case L.CodeableConcept:return G.createElement(ho,{value:r});case L.Coding:return G.createElement(kn,{value:r});case L.ContactDetail:return G.createElement(An,{value:r});case L.ContactPoint:return G.createElement(gt,{value:r});case L.HumanName:return G.createElement(ut,{value:r});case L.Identifier:return G.createElement(Mn,{value:r});case L.Money:return G.createElement(wn,{value:r});case L.Period:return G.createElement(G.Fragment,null,Su(r));case L.Quantity:case L.Duration:return G.createElement(qo,{value:r});case L.Range:return G.createElement(ht,{value:r});case L.Ratio:return G.createElement(Ln,{value:r});case L.Reference:return G.createElement(oo,{value:r,link:e.link});case L.Timing:return G.createElement(G.Fragment,null,bu(r));case L.Dosage:case L.UsageContext:return G.createElement(Go,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return G.createElement(Go,{value:{type:Pu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function ye(e,o){let t=Du(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Go(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ku.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Uo.createElement("div",null,t.name):Uo.createElement(bn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(It.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=ye(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Uo.createElement(Pn,{key:f,term:Tu(f)},Uo.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Uo.createElement("div",null,r,"\xA0not implemented")}import{Stack as nc}from"@mantine/core";import{getPropertyDisplayName as cf,globalSchema as fc}from"@medplum/core";import vo,{useState as lc}from"react";import{Group as Bu,Input as Au}from"@mantine/core";import vt from"react";function St(e){return vt.createElement(Bu,{noWrap:!0},vt.createElement("div",null,e.children),vt.createElement("div",null,vt.createElement(Au.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Mu}from"@mantine/core";import Ou from"react";function me(e,o){return e?.issue?.filter(t=>Nn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
-
`)}function bt(e,o){return e?.issue?.filter(t=>Nn(t.expression?.[0],o))}function Nn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Ce(e){return Ou.createElement(Mu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Hn,Group as wu,Stack as Fu,TextInput as Vn}from"@mantine/core";import{capitalize as Eu,deepClone as Lu}from"@medplum/core";import Te,{useEffect as Ru,useState as qn}from"react";function Wb(e){let o=v(),t=X(e.defaultValue),[r,a]=qn(),[n,f]=qn();return Ru(()=>{t&&(f(Lu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Te.createElement("div",null,"Loading..."):Te.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Te.createElement(Fu,{mb:"xl"},Te.createElement(Ce,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Te.createElement(Vn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Te.createElement(Ce,{title:"ID",htmlFor:"id",outcome:e.outcome},Te.createElement(Vn,{name:"id",defaultValue:n.id,disabled:!0}))),Te.createElement(Wo,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Te.createElement(wu,{position:"right",mt:"xl"},Te.createElement(Hn,{type:"submit"},"OK"),e.onDelete&&Te.createElement(Hn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function zo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Eu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as jd,Group as _d,NativeSelect as Zd,Textarea as Yd,TextInput as Zr}from"@mantine/core";import{capitalize as ec,getElementDefinitionTypeName as oc,PropertyType as w}from"@medplum/core";import V,{useState as tc}from"react";import Nu,{useState as Hu}from"react";function Gn(e){let[o,t]=Hu(e.defaultValue);function r(a){let n=qu(a);t(n),e.onChange&&e.onChange(n)}return Nu.createElement(xo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Vu(o),onChange:r})}function Vu(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function qu(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Gu,{useState as Uu}from"react";function Un(e){let[o,t]=Uu(e.defaultValue);function r(a){let n=a[0],f=n&&Wu(n);t(f),e.onChange&&e.onChange(f)}return Gu.createElement(xo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&zu(o),onChange:r})}function zu(e){return{system:e.system,code:e.code,display:e.display}}function Wu(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Ku,TextInput as ju}from"@mantine/core";import Ur,{useRef as _u,useState as Zu}from"react";import{Group as Xu,NativeSelect as zn,TextInput as Qu}from"@mantine/core";import Pt,{useRef as Ju,useState as $u}from"react";function Dt(e){let[o,t]=$u(e.defaultValue),r=Ju();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Pt.createElement(Xu,{spacing:"xs",grow:!0,noWrap:!0},Pt.createElement(zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Pt.createElement(zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Pt.createElement(Qu,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Wn(e){let[o,t]=Zu(e.defaultValue),r=_u();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return Ur.createElement(Ku,{spacing:"xs",grow:!0,noWrap:!0},Ur.createElement(ju,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Ur.createElement(Dt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Yu}from"@mantine/core";import{isValidDate as Xn}from"@medplum/core";import ed from"react";function ke(e){return ed.createElement(Yu,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:rd(),defaultValue:od(e.defaultValue),error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(td(t))}}})}function od(e){if(!e)return"";let o=new Date(e);return Xn(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function td(e){if(!e)return"";let o=new Date(e);return Xn(o)?o.toISOString():""}function rd(){return"datetime-local"}import{JsonInput as ad}from"@mantine/core";import{stringify as nd}from"@medplum/core";import fd from"react";function Qn(e){return fd.createElement(ad,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:nd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as ld,NativeSelect as sd,TextInput as Tt}from"@mantine/core";import yo,{useRef as id,useState as ud}from"react";function Jn(e){let[o,t]=ud(e.defaultValue),r=id();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return yo.createElement(ld,{spacing:"xs",grow:!0,noWrap:!0},yo.createElement(sd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),yo.createElement(Tt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),yo.createElement(Tt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),yo.createElement(Tt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),yo.createElement(Tt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as dd,TextInput as $n}from"@mantine/core";import zr,{useState as cd}from"react";function Kn(e){let[o,t]=cd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return zr.createElement(dd,{spacing:"xs",grow:!0,noWrap:!0},zr.createElement($n,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),zr.createElement($n,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as md,TextInput as pd}from"@mantine/core";import Wr,{useCallback as Xr,useState as xd}from"react";var Id=["USD","EUR","CAD","GBP","AUD"];function jn(e){let{onChange:o}=e,[t,r]=xd(e.defaultValue),a=Xr(s=>{r(s),o&&o(s)},[o]),n=Xr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Xr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Wr.createElement(md,{defaultValue:t?.currency,data:Id,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Wr.createElement(pd,{type:"number",label:e.label,placeholder:e.placeholder||"Value",defaultValue:t?.value?.toString()||"USD",icon:Wr.createElement(Ir,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as gd}from"@mantine/core";import Qr,{useState as hd}from"react";function _n(e){let[o,t]=hd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qr.createElement(gd,{spacing:"xs",grow:!0,noWrap:!0},Qr.createElement(ke,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Qr.createElement(ke,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as yd,NativeSelect as Cd,TextInput as Zn}from"@mantine/core";import kt,{useState as vd}from"react";function Pe(e){let[o,t]=vd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return kt.createElement(yd,{spacing:"xs",grow:!0,noWrap:!0},kt.createElement(Cd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),kt.createElement(Zn,{id:e.name,name:e.name,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Sd(a.currentTarget.value)})}}),kt.createElement(Zn,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Sd(e){if(e)return parseFloat(e)}import{Group as bd}from"@mantine/core";import Jr,{useState as Pd}from"react";function Xo(e){let[o,t]=Pd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Jr.createElement(bd,{spacing:"xs",grow:!0,noWrap:!0},Jr.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),Jr.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Dd}from"@mantine/core";import $r,{useState as Td}from"react";function Yn(e){let[o,t]=Td(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return $r.createElement(Dd,{spacing:"xs",grow:!0,noWrap:!0},$r.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),$r.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Ed,NativeSelect as Ld,TextInput as Rd}from"@mantine/core";import{createReference as Nd}from"@medplum/core";import At,{useRef as of,useState as tf}from"react";import{Autocomplete as kd,Group as Bd,Loader as Ad,Text as ef}from"@mantine/core";import{getDisplayString as Kr}from"@medplum/core";import Xe,{forwardRef as Md,useEffect as Od,useState as jr}from"react";var wd={Schedule:"_id",Task:"_id",Patient:"name",Practitioner:"name",Questionnaire:"name",ServiceRequest:"_id",DiagnosticReport:"_id",Specimen:"_id",Observation:"code",RequestGroup:"_id",ActivityDefinition:"name",User:"email:contains"};function Bt(e){let o=v(),t=X(e.defaultValue),[r,a]=jr(t?Kr(t):""),[n,f]=jr(!1),[l,s]=jr([]);Od(()=>{t&&a(Kr(t))},[t,a]);async function i(d){f(!0);let k=wd[e.resourceType]||"name",T=new URLSearchParams({[k]:d,_count:"10"}),S=await o.searchResources(e.resourceType,T);s(S.map(g=>({value:Kr(g),resource:g}))),f(!1)}async function u(d){return a(d),i(d)}function c(d){a(d.value),s([]),e.onChange&&e.onChange(d.resource)}return Xe.createElement(kd,{name:e.name,itemComponent:Fd,value:r,data:l,placeholder:e.placeholder,onFocus:()=>i(r),onChange:u,onItemSubmit:c,rightSection:n?Xe.createElement(Ad,{size:16}):null})}var Fd=Md(({value:e,resource:o,...t},r)=>Xe.createElement("div",{ref:r,...t},Xe.createElement(Bd,{noWrap:!0},Xe.createElement(Ie,{value:o}),Xe.createElement("div",null,Xe.createElement(ef,null,e),Xe.createElement(ef,{size:"xs",color:"dimmed"},o.birthDate)))));function Co(e){let o=Hd(e.targetTypes),t=Vd(e.defaultValue,o),[r,a]=tf(e.defaultValue),[n,f]=tf(t),l=of();l.current=r;let s=of();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return At.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},o?At.createElement(Ld,{"data-testid":"reference-input-resource-type-select",defaultValue:n,onChange:u=>f(u.currentTarget.value),data:o}):At.createElement(Rd,{"data-testid":"reference-input-resource-type-input",defaultValue:n,onChange:u=>f(u.currentTarget.value)}),At.createElement(Bt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?Nd(u):void 0)}}))}function Hd(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Vd(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as rf}from"@mantine/core";import pe,{useRef as qd,useState as Gd}from"react";function af(e){let[o,t]=Gd(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=qd();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return pe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},pe.createElement("colgroup",null,pe.createElement("col",{width:"97%"}),pe.createElement("col",{width:"3%"})),pe.createElement("tbody",null,o.map((n,f)=>pe.createElement("tr",{key:`${f}-${o.length}`},pe.createElement("td",null,pe.createElement(Le,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(rf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ge,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(rf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(lo,null))))))}import{Button as lf,Chip as nf,Group as Mt,Modal as Ud,NativeSelect as zd,Stack as Wd,Switch as Xd,TextInput as Qd}from"@mantine/core";import{formatTiming as Jd}from"@medplum/core";import $,{useRef as sf,useState as _r}from"react";var $d=["sun","mon","tue","wed","thu","fri","sat"];function uf(e){let[o,t]=_r(e.defaultValue),[r,a]=_r(!1),n=sf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Mt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,Jd(n.current)||"No repeat"),$.createElement(lf,{onClick:()=>a(!0)},"Edit")),$.createElement(Kd,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var ff={repeat:{period:1,periodUnit:"d"}};function Kd(e){let[o,t]=_r(e.defaultValue||ff),r=sf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(Ud,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(Wd,null,$.createElement(Ce,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(ke,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(Xd,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?ff.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Ce,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Mt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(Qd,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(zd,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Ce,{title:"Repeat on"},$.createElement(nf.Group,{multiple:!0,onChange:s},$.createElement(Mt,{position:"apart",mt:"md",spacing:"xs"},$d.map(i=>$.createElement(nf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Mt,{position:"right"},$.createElement(lf,{onClick:()=>e.onOk(o)},"OK"))))}function Le(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===w.Attachment?V.createElement(vn,{name:r,defaultValue:a,onChange:e.onChange}):V.createElement(af,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?V.createElement(rc,{elementDefinitionTypes:n,...e}):V.createElement(df,{elementDefinitionType:n[0],...e})}function rc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=tc(t);return V.createElement(_d,{spacing:"xs",grow:!0,noWrap:!0},V.createElement(Zd,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),V.createElement(df,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",ec(r.code)))}}))}function df(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case w.SystemString:case w.canonical:case w.string:case w.time:case w.uri:case w.url:return V.createElement(Zr,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case w.date:return V.createElement(Zr,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case w.dateTime:case w.instant:return V.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case w.decimal:case w.integer:case w.positiveInt:case w.unsignedInt:return V.createElement(Zr,{type:"number",step:t===w.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case w.code:return V.createElement(pt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case w.boolean:return V.createElement(jd,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case w.markdown:return V.createElement(Yd,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case w.Address:return V.createElement(qa,{name:r,defaultValue:a,onChange:e.onChange});case w.Annotation:return V.createElement(za,{name:r,defaultValue:a,onChange:e.onChange});case w.Attachment:return V.createElement(xt,{name:r,defaultValue:a,onChange:e.onChange});case w.CodeableConcept:return V.createElement(Gn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case w.Coding:return V.createElement(Un,{property:o,name:r,defaultValue:a,onChange:e.onChange});case w.ContactDetail:return V.createElement(Wn,{name:r,defaultValue:a,onChange:e.onChange});case w.ContactPoint:return V.createElement(Dt,{name:r,defaultValue:a,onChange:e.onChange});case w.Extension:return V.createElement(Qn,{name:r,defaultValue:a,onChange:e.onChange});case w.HumanName:return V.createElement(Jn,{name:r,defaultValue:a,onChange:e.onChange});case w.Identifier:return V.createElement(Kn,{name:r,defaultValue:a,onChange:e.onChange});case w.Money:return V.createElement(jn,{name:r,defaultValue:a,onChange:e.onChange});case w.Period:return V.createElement(_n,{name:r,defaultValue:a,onChange:e.onChange});case w.Duration:case w.Quantity:return V.createElement(Pe,{name:r,defaultValue:a,onChange:e.onChange});case w.Range:return V.createElement(Xo,{name:r,defaultValue:a,onChange:e.onChange});case w.Ratio:return V.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case w.Reference:return V.createElement(Co,{name:r,defaultValue:a,targetTypes:ac(o),onChange:e.onChange});case w.Timing:return V.createElement(uf,{name:r,defaultValue:a,onChange:e.onChange});case w.Dosage:case w.UsageContext:return V.createElement(Wo,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return V.createElement(Wo,{typeName:oc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function ac(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Wo(e){let[o,t]=lc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=fc.types[a];if(!n)return vo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return vo.createElement(nc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||It.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,c]=ye(f,s),d=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?vo.createElement(St,{key:s,title:cf(s),description:i.definition,htmlFor:s},vo.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:c,outcome:e.outcome,onChange:(k,T)=>{r(zo(o,s,T??s,l[1],k))}})):vo.createElement(Ce,{key:s,title:cf(s),description:i.definition,withAsterisk:d,htmlFor:s,outcome:e.outcome},vo.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:c,onChange:(k,T)=>{r(zo(o,s,T??s,l[1],k))}}))}))}import{Button as Yr,createStyles as sc,Group as mf}from"@mantine/core";import Y,{useMemo as ic,useState as uc}from"react";var dc=sc(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function cc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function pf(e){let{classes:o}=dc(),{onChangeMonth:t,onClick:r}=e,[a,n]=uc(ea);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=ic(()=>mc(a,e.slots),[a,e.slots]);return Y.createElement("div",null,Y.createElement(mf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},Y.createElement("p",{style:{flex:1}},cc(a)),Y.createElement(mf,{position:"right",spacing:"xs"},Y.createElement(Yr,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),Y.createElement(Yr,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),Y.createElement("table",{className:o.table},Y.createElement("thead",null,Y.createElement("tr",null,Y.createElement("th",null,"SUN"),Y.createElement("th",null,"MON"),Y.createElement("th",null,"TUE"),Y.createElement("th",null,"WED"),Y.createElement("th",null,"THU"),Y.createElement("th",null,"FRI"),Y.createElement("th",null,"SAT"))),Y.createElement("tbody",null,l.map((s,i)=>Y.createElement("tr",{key:"week-"+i},s.map((u,c)=>Y.createElement("td",{key:"day-"+c},u&&Y.createElement(Yr,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function ea(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function mc(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:pc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function pc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as xc,createStyles as Ic}from"@mantine/core";import gc from"react";var hc=Ic(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Qe(e){let{children:o,...t}=e,{classes:r}=hc();return gc.createElement(xc,{className:r.root,...t},o)}import Dm from"react";import{ActionIcon as Of,Center as sm,createStyles as im,Group as um,Loader as dm,Menu as Re,ScrollArea as cm,TextInput as mm}from"@mantine/core";import{showNotification as pm,updateNotification as la}from"@mantine/notifications";import{getReferenceString as Qo,normalizeErrorString as xm}from"@medplum/core";import b,{useCallback as Ft,useEffect as Im,useRef as wf,useState as Ff}from"react";import{createStyles as wc,Group as wt,List as gf,Stack as hf,Text as De,Title as yf}from"@mantine/core";import{capitalize as Fc,formatDateTime as ra,formatObservationValue as Ec}from"@medplum/core";import I,{useEffect as Lc,useState as Rc}from"react";import{Blockquote as yc,createStyles as Cc,Stack as vc}from"@mantine/core";import xf from"react";var Sc=Cc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function oa({value:e}){let{classes:o}=Sc();return e?xf.createElement(vc,{justify:"flex-start",spacing:"xs"},e.map((t,r)=>t.text&&xf.createElement(yc,{key:`note-${r}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Bc}from"@mantine/core";import ta from"react";import{Text as bc}from"@mantine/core";import{getDisplayString as Pc,isOk as Dc,normalizeErrorString as Tc}from"@medplum/core";import If,{useState as kc}from"react";function we(e){let{value:o,link:t,...r}=e,[a,n]=kc(),f=X(o,n),l;if(a&&!Dc(a))l=`[${Tc(a)}]`;else if(f)l=Pc(f);else return null;return t?If.createElement(fe,{to:o,...r},l):If.createElement(bc,{component:"span",...r},l)}function Je(e){return ta.createElement(Bc,{spacing:"xs"},ta.createElement(Ie,{size:24,radius:12,value:e.value,link:e.link}),ta.createElement(we,{value:e.value,link:e.link}))}import{Badge as Ac}from"@mantine/core";import Mc from"react";var Oc={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Ot(e){return Mc.createElement(Ac,{color:Oc[e.status]},e.status)}var Cf=wc(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));aa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function aa(e){let o=v(),t=X(e.value),[r,a]=Rc();if(Lc(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(hf,null,I.createElement(yf,null,"Diagnostic Report"),I.createElement(Nc,{value:t}),!e.hideSpecimenInfo&&Hc(r),t.result&&I.createElement(Vc,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(oa,{value:n}))}function Nc({value:e}){return I.createElement(wt,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(De,null,I.createElement(Je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(De,null,I.createElement(Je,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(De,null,I.createElement(Je,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(De,null,ra(e.issued))),e.status&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(De,null,Fc(e.status))))}function Hc(e){return I.createElement(hf,{spacing:"xs"},I.createElement(yf,{order:2,size:"h6"},"Specimens"),I.createElement(gf,{type:"ordered"},e?.map((o,t)=>I.createElement(gf.Item,{ml:"sm",key:`specimen-${o.id}-${t}`},I.createElement(wt,{spacing:20},I.createElement(wt,{spacing:5},I.createElement(De,{fw:500},"Collected:")," ",ra(o.collection?.collectedDateTime)),I.createElement(wt,{spacing:5},I.createElement(De,{fw:500},"Received:")," ",ra(o.receivedTime)))))))}function Vc(e){let{classes:o}=Cf();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,e.value?.map((t,r)=>I.createElement(qc,{key:`obs-${t.id}-${r}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function qc(e){let{classes:o,cx:t}=Cf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=zc(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(fe,{to:r},I.createElement(ho,{value:r.code}))),I.createElement("td",null,I.createElement(Gc,{value:r})),I.createElement("td",null,I.createElement(Uc,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(ho,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement("ul",null,r.category.map((f,l)=>I.createElement("li",{key:`category-${l}`},I.createElement(ho,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(oo,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Ot,{status:r.status}))),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(oa,{value:r.note}))))}function Gc(e){let o=e.value;return I.createElement(I.Fragment,null,Ec(o))}function Uc(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(ht,{value:o}):null}function zc(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Wc,Paper as Xc,useComponentDefaultProps as Qc}from"@mantine/core";import Jc from"react";var $c=Wc((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Kc={shadow:"xs",radius:"md",withBorder:!0};function So(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Qc("Panel",Kc,e),{classes:l,cx:s}=$c({width:r,fill:a},{name:"Panel",unstyled:n});return Jc.createElement(Xc,{className:s(l.paper,o),...f},t)}import{createStyles as jc}from"@mantine/core";import{getPropertyDisplayName as _c,stringify as vf,toTypedValue as Sf}from"@medplum/core";import se,{useEffect as Zc,useState as Yc}from"react";var em=jc(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Pf(e){let{classes:o}=em(),t=v(),[r,a]=Yc();if(Zc(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?se.createElement("table",{className:o.root},se.createElement("colgroup",null,se.createElement("col",{style:{width:"30%"}}),se.createElement("col",{style:{width:"35%"}}),se.createElement("col",{style:{width:"35%"}})),se.createElement("thead",null,se.createElement("tr",null,se.createElement("th",null,"Property"),se.createElement("th",null,"Before"),se.createElement("th",null,"After"))),se.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=ye(Sf(e.original),l),[c,d]=ye(Sf(e.revised),l);return bf(i)&&bf(c)||vf(i)===vf(c)?null:se.createElement("tr",{key:l},se.createElement("td",null,_c(l)),se.createElement("td",{className:o.removed},se.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),se.createElement("td",{className:o.added},se.createElement(ce,{property:s,propertyType:d,value:c,ignoreMissingValues:!0})))}))):null}function bf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import om,{useEffect as tm,useState as rm}from"react";function na(e){let o=v(),t=X(e.value),[r,a]=rm();return tm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:om.createElement(Go,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as am,Group as nm,Menu as Df,Text as fa}from"@mantine/core";import{formatDateTime as fm,getReferenceString as lm}from"@medplum/core";import te from"react";function Tf(e){return te.createElement(Qe,null,e.children)}function $e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return te.createElement(So,{"data-testid":"timeline-item",fill:!0,...n},te.createElement(nm,{position:"apart",spacing:8,mx:"xs",my:"sm"},te.createElement(Ie,{value:f,link:!0,size:"md"}),te.createElement("div",{style:{flex:1}},te.createElement(fa,{size:"sm"},te.createElement(we,{color:"dark",weight:500,value:f,link:!0})),te.createElement(fa,{size:"xs"},te.createElement(fe,{color:"dimmed",to:e.resource},fm(l)),te.createElement(fa,{component:"span",color:"dimmed",mx:8},"\xB7"),te.createElement(fe,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&te.createElement(Df,{position:"bottom-end",shadow:"md",width:200},te.createElement(Df.Target,null,te.createElement(am,{radius:"xl","aria-label":`Actions for ${lm(e.resource)}`},te.createElement(gr,null))),a)),te.createElement(co,null,r&&te.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&te.createElement(te.Fragment,null,e.children)))}function Af(e,o){e.sort((t,r)=>{let a=kf(t,o),n=kf(r,o);return a>n?1:a<n?-1:Bf(t,o)-Bf(r,o)})}function kf(e,o){if(!Mf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]||0}return 0}function Bf(e,o){if(!Mf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Mf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var gm=im(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ke(e){let o=v(),t=qe(),r=o.getProfile(),a=wf(null),n=X(e.value),[f,l]=Ff(),[s,i]=Ff([]),u=e.loadTimelineResources,c=wf(s);c.current=s;let d=Ft(y=>{Af(y,n),y.reverse(),i(y)},[n]),k=Ft(y=>{let N=[];for(let C of y){if(C.status!=="fulfilled")continue;let W=C.value;if(W.type==="history"&&l(W),W.entry)for(let He of W.entry)N.push(He.resource)}d(N)},[d]),T=Ft(y=>d([...c.current,y]),[d]),S=Ft(()=>{let y,N;"resourceType"in e.value?(y=e.value.resourceType,N=e.value.id):[y,N]=e.value.reference?.split("/"),u(o,y,N).then(k).catch(console.log)},[o,e.value,u,k]);Im(()=>S(),[S]);function g(y){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,y)).then(N=>T(N)).catch(console.log)}function D(y){!n||!e.createMedia||o.createResource(e.createMedia(n,r,y)).then(N=>T(N)).then(()=>la({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:b.createElement(cr,{size:16}),autoClose:2e3})).catch(N=>la({id:"upload-notification",color:"red",title:"Upload error",message:xm(N),icon:b.createElement(yr,{size:16}),autoClose:2e3}))}function m(y,N){return o.updateResource({...y,priority:N})}function O(y){m(y,"stat").then(S).catch(console.log)}function h(y){m(y,"routine").then(S).catch(console.log)}function M(y){t(`/${y.resourceType}/${y.id}`)}function Z(y){t(`/${y.resourceType}/${y.id}/edit`)}function de(y){t(`/${y.resourceType}/${y.id}/delete`)}function ge(y){t(`/${y.resourceType}/${y.id}/_history/${y.meta?.versionId}`)}function ee(){pm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Se(y){la({id:"upload-notification",loading:!0,title:"Uploading...",message:Pm(y),autoClose:!1,withCloseButton:!1})}return n?b.createElement(Tf,null,e.createCommunication&&b.createElement(So,null,b.createElement(J,{testid:"timeline-form",onSubmit:y=>{g(y.text);let N=a.current;N&&(N.value="",N.focus())}},b.createElement(um,{spacing:"xs",noWrap:!0,style:{width:"100%"}},b.createElement(Ie,{value:r}),b.createElement(mm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),b.createElement(Of,{type:"submit",radius:"xl",color:"blue",variant:"filled"},b.createElement(Pr,{size:16})),b.createElement(Io,{onUpload:D,onUploadStart:ee,onUploadProgress:Se},y=>b.createElement(Of,{...y,radius:"xl",color:"blue",variant:"filled"},b.createElement(Fo,{size:16})))))),s.map(y=>{if(!y)return null;let N=`${y.resourceType}/${y.id}/${y.meta?.versionId}`;if(y.resourceType===n.resourceType&&y.id===n.id)return b.createElement(hm,{key:N,history:f,resource:y,onDetails:ge});switch(y.resourceType){case"AuditEvent":return b.createElement(Sm,{key:N,resource:y,onDetails:M});case"Communication":return b.createElement(Cm,{key:N,resource:y,onPin:y.priority!=="stat"?O:void 0,onUnpin:y.priority==="stat"?h:void 0,onDetails:M,onEdit:Z,onDelete:de});case"DiagnosticReport":return b.createElement(bm,{key:N,resource:y,onDetails:M,onEdit:Z,onDelete:de});case"Media":return b.createElement(vm,{key:N,resource:y,onDetails:M,onEdit:Z,onDelete:de});default:return b.createElement($e,{key:N,resource:y,padding:!0},b.createElement(na,{value:y,ignoreMissingValues:!0}))}})):b.createElement(sm,{style:{width:"100%",height:"100%"}},b.createElement(dm,null))}function bo(e){return b.createElement(Re.Dropdown,null,b.createElement(Re.Label,null,"Resource"),e.onPin&&b.createElement(Re.Item,{icon:b.createElement(Dr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${Qo(e.resource)}`},"Pin"),e.onUnpin&&b.createElement(Re.Item,{icon:b.createElement(Tr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${Qo(e.resource)}`},"Unpin"),e.onDetails&&b.createElement(Re.Item,{icon:b.createElement(Sr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${Qo(e.resource)}`},"Details"),e.onEdit&&b.createElement(Re.Item,{icon:b.createElement(hr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${Qo(e.resource)}`},"Edit"),e.onDelete&&b.createElement(b.Fragment,null,b.createElement(Re.Divider,null),b.createElement(Re.Label,null,"Danger zone"),b.createElement(Re.Item,{color:"red",icon:b.createElement(Ro,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${Qo(e.resource)}`},"Delete")))}function hm(e){let o=ym(e.history,e.resource);return o?b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(bo,{...e})},b.createElement(Pf,{original:o,revised:e.resource})):b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(bo,{...e})},b.createElement("h3",null,"Created"),b.createElement(na,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function ym(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Cm(e){let{classes:o}=gm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return b.createElement($e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:b.createElement(bo,{...e})},b.createElement("p",null,e.resource.payload?.[0]?.contentString))}function vm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return b.createElement($e,{resource:e.resource,padding:!!t,popupMenuItems:b.createElement(bo,{...e})},b.createElement(Oe,{value:e.resource.content}))}function Sm(e){return b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(bo,{...e})},b.createElement(cm,null,b.createElement("pre",null,e.resource.outcomeDesc)))}function bm(e){return b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(bo,{...e})},b.createElement(aa,{value:e.resource}))}function Pm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${sa(e.loaded)} / ${sa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${sa(e.loaded)}`}function sa(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function Mk(e){return Dm.createElement(Ke,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Ef from"react";function Et(e){let{children:o,...t}=e;return Ef.createElement(Qe,null,Ef.createElement(So,{...t},o))}import{createReference as Lt}from"@medplum/core";import Tm from"react";function Uk(e){return Tm.createElement(Ke,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Lt(o),subject:o.subject,sender:Lt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Lt(o),subject:o.subject,operator:Lt(t),issued:new Date().toISOString(),content:r})})}import{Button as wp,Loader as Fp,Table as Ep}from"@mantine/core";import{normalizeOperationOutcome as Lp}from"@medplum/core";import re,{useEffect as dl,useRef as cl,useState as Gt}from"react";import{evalFhirPath as km}from"@medplum/core";import Bm from"react";function Lf(e){let o;try{o=km(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return Bm.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{Button as ko,Center as qt,createStyles as gp,Group as Ia,Loader as hp,Menu as il,Pagination as yp,Table as Cp,Text as ga,UnstyledButton as vp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as va,formatSearchQuery as Sp,globalSchema as bp}from"@medplum/core";import P,{useEffect as ul,useRef as Pp,useState as ha}from"react";import{Box as Am,Button as Mm,Modal as Om,Text as wm}from"@mantine/core";import Po from"react";function Nf(e){return Po.createElement(Om,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Po.createElement(Am,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Po.createElement(Rf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Po.createElement(Rf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Po.createElement(wm,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Rf(e){return Po.createElement(Mm,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as jo,Modal as Um}from"@mantine/core";import{globalSchema as zm,stringify as Wm}from"@medplum/core";import Q,{useEffect as Xm,useRef as Zf,useState as Qm}from"react";import{capitalize as Fm,DEFAULT_SEARCH_COUNT as Em,evalFhirPathTyped as Lm,formatDateTime as Rm,Operator as A}from"@medplum/core";import Jo from"react";var Nm={string:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],fulltext:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],token:[A.EQUALS,A.NOT],reference:[A.EQUALS,A.NOT],numeric:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],quantity:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],date:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY],datetime:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY]},Hm={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function $o(e,o){return{...e,filters:o,offset:0,name:void 0}}function aB(e){return $o(e,[])}function Rt(e,o){return $o(e,(e.filters||[]).filter(t=>t.code!==o))}function Do(e,o,t,r,a){a&&(e=Rt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r||""}),$o(e,n)}function nB(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function Vf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function qf(e,o){return ia(e,o,-1)}function Gf(e,o){return ia(e,o,0)}function Uf(e,o){return ia(e,o,1)}function ia(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),da(e,o,r,a)}function zf(e,o){return ua(e,o,-1)}function Wf(e,o){return ua(e,o,0)}function Xf(e,o){return ua(e,o,1)}function ua(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),da(e,o,r,a)}function Qf(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),da(e,o,t,new Date)}function da(e,o,t,r){return e=Rt(e,o),e=Hf(e,o,A.GREATER_THAN_OR_EQUALS,t),e=Hf(e,o,A.LESS_THAN_OR_EQUALS,r),e}function Hf(e,o,t,r){return Do(e,o,t,r.toISOString())}function ca(e,o,t=!0){return Do(e,o,A.MISSING,t.toString())}function Vm(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Jf(e,o){let t=e.count??Em,r=(o-1)*t;return Vm(e,r)}function ma(e,o,t){return o===$f(e)&&t!==void 0&&t===Kf(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function fB(e,o){let t=!1;return $f(e)===o&&(t=!Kf(e)),ma(e,o,t)}function $f(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Kf(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function jf(e){return Nm[e.type]}function Ko(e){return Hm[e]??""}function ve(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Fm).join(" "))}function _f(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Rm(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?qm(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Gm(e,o.searchParams[0],o.elementDefinition):null}function qm(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")||"",[r,a]=ye({type:e.resourceType,value:e},t);return r?Jo.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Gm(e,o,t){let r=Lm(o.expression,[{type:e.resourceType,value:e}]);return!r||r.length===0?null:t?Jo.createElement(ce,{propertyType:r[0].type,value:r[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1}):Jo.createElement(Jo.Fragment,null,r.map((a,n)=>Jo.createElement("span",{key:`${n}-${r.length}`},typeof a=="object"?JSON.stringify(a):a)))}function Yf(e){let[o,t]=Qm({search:JSON.parse(Wm(e.search))}),r=Zf(null),a=Zf(null);Xm(()=>{t({search:e.search})},[e.search]);function n(m){m.key==="Enter"&&i()}function f(){i()}function l(m){m.key==="Enter"&&u()}function s(){u()}function i(){let m=o.search.fields??[],O=r.current?.value;if(O){let h=[...m,O];t({search:{...o.search,fields:h}})}}function u(){let m=o.search.fields??[],O=a.current?.value;if(O){let h=[...m];h.splice(h.indexOf(O),1),t({search:{...o.search,fields:h}})}}function c(){let m=o.search.fields??[],O=a.current?.value;if(!O)return;let h=[...m],M=h.indexOf(O);M<=0||(k(h,M,M-1),t({search:{...o.search,fields:h}}))}function d(){let m=o.search.fields??[],O=a.current?.value;if(!O)return;let h=[...m],M=h.indexOf(O);M>=h.length-1||(k(h,M,M+1),t({search:{...o.search,fields:h}}))}function k(m,O,h){let M=m[O];m[O]=m[h],m[h]=M}if(!e.visible)return null;let T=e.search.resourceType,S=zm.types[T],g=o.search.fields??[],D=Jm(S).filter(m=>!g.includes(m)).sort();return Q.createElement(Um,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Q.createElement("div",null,Q.createElement("table",{style:{margin:"auto"}},Q.createElement("thead",null,Q.createElement("tr",null,Q.createElement("th",{colSpan:2,align:"center"},"Available"),Q.createElement("th",{colSpan:2,align:"center"},"Selected"))),Q.createElement("tbody",null,Q.createElement("tr",null,Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:m=>n(m),onDoubleClick:()=>f(),"data-testid":"available"},D.map(m=>Q.createElement("option",{key:m,value:m},ve(m))))),Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:m=>l(m),onDoubleClick:()=>s(),"data-testid":"selected"},g.map(m=>Q.createElement("option",{key:m,value:m},ve(m))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(jo,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(jo,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(jo,{compact:!0,variant:"outline",onClick:c},"Up")),Q.createElement("td",{align:"center"},Q.createElement(jo,{compact:!0,variant:"outline",onClick:d},"Down")))))),Q.createElement(jo,{onClick:()=>e.onOk(o.search)},"OK"))}function Jm(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ve(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ve(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ve(a)))}return o}import{Button as Zo,Group as op,Modal as tp,NativeSelect as ol}from"@mantine/core";import{globalSchema as rp,stringify as tl}from"@medplum/core";import F,{useEffect as ap,useRef as al,useState as xa}from"react";import{formatDateTime as $m,getSearchParameterDetails as Km,globalSchema as jm,Operator as el,SearchParameterType as _m}from"@medplum/core";import _o from"react";function Nt(e){let{resourceType:o,filter:t}=e,r=jm.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===el.EQUALS||t.operator===el.NOT_EQUALS))return _o.createElement(we,{value:{reference:t.value}});let a=Km(o,r);if(t.code==="_lastUpdated"||a.type===_m.DATETIME)return _o.createElement(_o.Fragment,null,$m(t.value))}return _o.createElement(_o.Fragment,null,t.value)}import{Checkbox as Zm,TextInput as pa}from"@mantine/core";import{getSearchParameterDetails as Ym,SearchParameterType as To}from"@medplum/core";import to from"react";function Ht(e){let o=Ym(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case To.REFERENCE:return to.createElement(Co,{name:t,defaultValue:{reference:e.defaultValue},targetTypes:e.searchParam.target,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case To.BOOLEAN:return to.createElement(Zm,{name:t,"data-testid":t,defaultChecked:e.defaultValue==="true",onChange:r=>e.onChange(r.currentTarget.checked.toString())});case To.DATE:return to.createElement(pa,{type:"date",name:t,"data-testid":t,defaultValue:e.defaultValue,onChange:r=>e.onChange(r.currentTarget.value)});case To.DATETIME:return to.createElement(ke,{name:t,defaultValue:e.defaultValue,onChange:e.onChange});case To.NUMBER:return to.createElement(pa,{type:"number",name:t,"data-testid":t,defaultValue:e.defaultValue,onChange:r=>e.onChange(r.currentTarget.value)});case To.QUANTITY:return to.createElement(Pe,{name:t,defaultValue:ep(e.defaultValue),onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return to.createElement(pa,{name:t,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function ep(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function nl(e){let[o,t]=xa(JSON.parse(tl(e.search))),[r,a]=xa(-1),n=al(o);n.current=o,ap(()=>{t(JSON.parse(tl(e.search)))},[e.search]);function f(u){t(Do(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=rp.types[l].searchParams??{},i=o.filters||[];return F.createElement(tp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},F.createElement("div",null,F.createElement("table",null,F.createElement("colgroup",null,F.createElement("col",{style:{width:200}}),F.createElement("col",{style:{width:200}}),F.createElement("col",{style:{width:380}}),F.createElement("col",{style:{width:120}})),F.createElement("thead",null,F.createElement("tr",null,F.createElement("th",null,"Field"),F.createElement("th",null,"Operation"),F.createElement("th",null,"Value"),F.createElement("th",null,"Actions"))),F.createElement("tbody",null,i.map((u,c)=>c===r?F.createElement(rl,{key:`filter-${c}-${i.length}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:d=>{let k=[...i];k[c]=d,t($o(n.current,k)),a(-1)},onCancel:()=>a(-1)}):F.createElement(np,{key:`filter-${c}-${i.length}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(c),onDelete:()=>t(Vf(n.current,c))})),F.createElement(rl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),F.createElement(op,{position:"right",mt:"xl"},F.createElement(Zo,{onClick:()=>e.onOk(n.current)},"OK")))}function np(e){let{filter:o}=e;return F.createElement("tr",null,F.createElement("td",null,ve(o.code)),F.createElement("td",null,Ko(o.operator)),F.createElement("td",null,F.createElement(Nt,{resourceType:e.resourceType,filter:o})),F.createElement("td",null,F.createElement(Zo,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),F.createElement(Zo,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function rl(e){let[o,t]=xa(e.defaultValue??{}),r=al(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&jf(l);return F.createElement("tr",null,F.createElement("td",null,F.createElement(ol,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:Object.keys(e.searchParams).map(i=>({value:i,label:ve(i)}))})),F.createElement("td",null,s&&F.createElement(ol,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:Ko(i)}))]})),F.createElement("td",null,l&&o.operator&&F.createElement(Ht,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),F.createElement("td",null,o.code&&o.operator&&o.value&&F.createElement(Zo,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&F.createElement(Zo,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as fp,Modal as lp}from"@mantine/core";import Yo,{useState as sp}from"react";function fl(e){let[o,t]=sp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return Yo.createElement(lp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},Yo.createElement("div",{style:{width:500}},Yo.createElement(J,{onSubmit:r},Yo.createElement(Ht,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t}))),Yo.createElement(fp,{onClick:r},"OK"))}import{Menu as B}from"@mantine/core";import{Operator as ie}from"@medplum/core";import p from"react";function ll(e){if(!e.searchParams)return null;function o(n,f){a(ma(e.search,n.code,f))}function t(n){a(Rt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?p.createElement(ip,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},ve(n.code))))}function ip(e){switch(e.searchParam.type){case"date":return p.createElement(up,{...e});case"number":case"quantity":return p.createElement(dp,{...e});case"reference":return p.createElement(cp,{...e});case"string":case"token":case"uri":return p.createElement(mp,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function up(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Eo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Lo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(so,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(it,{size:14}),onClick:()=>e.onPrompt(o,ie.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(st,{size:14}),onClick:()=>e.onPrompt(o,ie.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(ir,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(Uf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(Gf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(qf(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(Xf(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(Wf(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(zf(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Fe,{size:14}),onClick:()=>e.onChange(Qf(e.search,t))},"Year to date"),p.createElement(Vt,{...e}))}function dp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Eo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Lo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(so,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(st,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(it,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Vt,{...e}))}function cp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(so,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),p.createElement(Vt,{...e}))}function mp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Eo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Lo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(so,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(dr,{size:14}),onClick:()=>e.onPrompt(o,ie.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(ur,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Does not contain..."),p.createElement(Vt,{...e}))}function Vt(e){let{searchParam:o}=e,t=o.code;return p.createElement(p.Fragment,null,p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(lr,{size:14}),onClick:()=>e.onChange(ca(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(fr,{size:14}),onClick:()=>e.onChange(ca(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(wr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as pp,globalSchema as xp}from"@medplum/core";function sl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Ip(o,r));return t}function Ip(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=xp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=pp(e,a);return{name:o,elementDefinition:n.elementDefinition,searchParams:[a]}}return{name:o}}var ya=class extends Event{constructor(t){super("change");this.definition=t}},Ca=class extends Event{constructor(t){super("load");this.response=t}},ro=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Dp=gp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function Tp(e){let{classes:o}=Dp(),t=v(),[r,a]=ha(!1),[n,f]=ha(),{search:l,onLoad:s}=e,[i,u]=ha({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=Pp(i);c.current=i,ul(()=>{f(void 0),t.search(l.resourceType,Sp({...l,total:l.total??"estimate",fields:void 0})).then(C=>{u({...c.current,searchResponse:C}),s&&s(new Ca(C))}).catch(C=>{u({...c.current,searchResponse:void 0}),f(C)})},[t,l,s]);function d(C,W){C.stopPropagation();let ae=C.target.checked,oe={...c.current.selected};ae?oe[W]=!0:delete oe[W],u({...c.current,selected:oe})}function k(C){C.stopPropagation();let He=C.target.checked,ae={},oe=c.current.searchResponse;He&&oe?.entry&&oe.entry.forEach(be=>{be.resource?.id&&(ae[be.resource.id]=!0)}),u({...c.current,selected:ae})}function T(){let C=c.current;if(!C.searchResponse?.entry||C.searchResponse.entry.length===0)return!1;for(let W of C.searchResponse.entry)if(W.resource?.id&&!C.selected[W.resource.id])return!1;return!0}function S(C){e.onChange&&e.onChange(new ya(C))}function g(C,W){dt(C.target)||C.button!==2&&(H(C),C.button!==1&&e.onClick&&e.onClick(new ro(W,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new ro(W,C)))}function D(){return!!(e.onExport||e.onExportCsv||e.onExportTransactionBundle)}if(ul(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&bp.types[e.search.resourceType]))return P.createElement(qt,{style:{width:"100%",height:"100%"}},P.createElement(hp,null));let O=e.checkboxesEnabled,h=sl(l),M=l.resourceType,Z=i.searchResponse,ge=Z?.entry?.map(C=>C.resource),ee="subtle",Se="gray",y=16,N=window.innerWidth<768;return P.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&P.createElement(Ia,{position:"apart",mb:"xl"},P.createElement(Ia,{spacing:2},P.createElement(ko,{compact:!0,variant:ee,color:Se,leftIcon:P.createElement(xr,{size:y}),onClick:()=>u({...c.current,fieldEditorVisible:!0})},"Fields"),P.createElement(ko,{compact:!0,variant:ee,color:Se,leftIcon:P.createElement(vr,{size:y}),onClick:()=>u({...c.current,filterEditorVisible:!0})},"Filters"),e.onNew&&P.createElement(ko,{compact:!0,variant:ee,color:Se,leftIcon:P.createElement(Cr,{size:y}),onClick:e.onNew},"New..."),!N&&D()&&P.createElement(ko,{compact:!0,variant:ee,color:Se,leftIcon:P.createElement(Or,{size:y}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0})},"Export..."),!N&&e.onDelete&&P.createElement(ko,{compact:!0,variant:ee,color:Se,leftIcon:P.createElement(Ro,{size:y}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!N&&e.onBulk&&P.createElement(ko,{compact:!0,variant:ee,color:Se,leftIcon:P.createElement(sr,{size:y}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),Z&&P.createElement(ga,{size:"xs",color:"dimmed"},Mp(l,Z.total),"-",Op(l,Z.total)," of"," ",Z.total?.toLocaleString())),P.createElement(Cp,{className:o.table},P.createElement("thead",null,P.createElement("tr",null,O&&P.createElement("th",null,P.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:C=>k(C)})),h.map(C=>P.createElement("th",{key:C.name},P.createElement(il,{shadow:"md",width:240,position:"bottom-end"},P.createElement(il.Target,null,P.createElement(vp,{className:o.control},P.createElement(Ia,{position:"apart",noWrap:!0},P.createElement(ga,{weight:500,size:"sm"},ve(C.name)),P.createElement(qt,{className:o.icon},P.createElement(nr,{size:14,stroke:1.5}))))),P.createElement(ll,{search:e.search,searchParams:C.searchParams,onPrompt:(W,He)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:He})},onChange:W=>{S(W)}}))))),!e.hideFilters&&P.createElement("tr",null,O&&P.createElement("th",null),h.map(C=>P.createElement("th",{key:C.name},C.searchParams&&P.createElement(kp,{resourceType:M,searchParams:C.searchParams,filters:e.search.filters}))))),P.createElement("tbody",null,ge?.map(C=>C&&P.createElement("tr",{key:C.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>g(W,C),onAuxClick:W=>g(W,C)},O&&P.createElement("td",null,P.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!i.selected[C.id],onChange:W=>d(W,C.id)})),h.map(W=>P.createElement("td",{key:W.name},_f(C,W))))))),ge?.length===0&&P.createElement(Qe,null,P.createElement(qt,{style:{height:150}},P.createElement(ga,{size:"xl",color:"dimmed"},"No results"))),Z?.total!==void 0&&Z.total>0&&P.createElement(qt,{m:"md",p:"md"},P.createElement(yp,{value:Bp(l),total:Ap(l,Z.total),onChange:C=>S(Jf(l,C)),getControlProps:C=>{switch(C){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&P.createElement("div",{"data-testid":"search-error"},P.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),P.createElement(Yf,{search:e.search,visible:c.current.fieldEditorVisible,onOk:C=>{S(C),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),P.createElement(nl,{search:e.search,visible:c.current.filterEditorVisible,onOk:C=>{S(C),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),P.createElement(Nf,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),P.createElement(fl,{key:i.filterDialogSearchParam?.code,visible:c.current.filterDialogVisible,title:"Input",resourceType:M,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:C=>{S(Do(e.search,C.code,C.operator,C.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}}))}var IA=P.memo(Tp);function kp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?P.createElement("span",null,"no filters"):P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement("div",{key:`filter-${r}-${o.length}`},Ko(t.operator),"\xA0",P.createElement(Nt,{resourceType:e.resourceType,filter:t}))))}function Bp(e){return Math.floor((e.offset||0)/(e.count||va))+1}function Ap(e,o){let t=e.count||va;return Math.ceil(o/t)}function Mp(e,o){return Math.min(o,(e.offset??0)+1)}function Op(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??va))}function Rp(e){let o=v(),[t,r]=Gt(),[a,n]=Gt(),{query:f,fields:l}=e,[s,i]=Gt(),[u,c]=Gt({}),d=cl();d.current=s;let k=cl({});k.current=u,dl(()=>{n(void 0),o.graphql(f).then(i).catch(h=>n(Lp(h)))},[o,f]);function T(h,M){h.stopPropagation();let de=h.target.checked,ge={...k.current};de?ge[M]=!0:delete ge[M],c(ge)}function S(h){h.stopPropagation();let Z=h.target.checked,de={},ge=d.current?.data.ResourceList;Z&&ge&&ge.forEach(ee=>{ee.id&&(de[ee.id]=!0)}),c(de)}function g(){let h=d.current?.data.ResourceList;if(!h||h.length===0)return!1;for(let M of h)if(M.id&&!k.current[M.id])return!1;return!0}function D(h,M){dt(h.target)||(H(h),h.button!==1&&e.onClick&&e.onClick(new ro(M,h)),h.button===1&&e.onAuxClick&&e.onAuxClick(new ro(M,h)))}if(dl(()=>{o.requestSchema(e.resourceType).then(h=>{r({...h})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return re.createElement(Fp,null);let O=e.checkboxesEnabled;return re.createElement("div",{onContextMenu:h=>H(h),"data-testid":"search-control"},re.createElement(Ep,null,re.createElement("thead",null,re.createElement("tr",null,O&&re.createElement("th",null,re.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:g(),onChange:h=>S(h)})),l.map(h=>re.createElement("th",{key:h.name},h.name)))),re.createElement("tbody",null,s?.data.ResourceList.map(h=>h&&re.createElement("tr",{key:h.id,"data-testid":"search-control-row",onClick:M=>D(M,h),onAuxClick:M=>D(M,h)},O&&re.createElement("td",null,re.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${h.id}`,checked:!!u[h.id],onChange:M=>T(M,h.id)})),l.map(M=>re.createElement("td",{key:M.name},re.createElement(Lf,{propertyType:M.propertyType,path:M.fhirPath,resource:h}))))))),s?.data.ResourceList.length===0&&re.createElement("div",{"data-testid":"empty-search"},"No results"),a&&re.createElement("div",{"data-testid":"search-error"},re.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&re.createElement(wp,{onClick:()=>e.onBulk(Object.keys(k.current))},"Bulk..."))}var kA=re.memo(Rp);import ao from"react";function je(e){return ao.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},ao.createElement("title",null,"Medplum Logo"),ao.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),ao.createElement("path",{fill:e.fill||"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),ao.createElement("path",{fill:e.fill||"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),ao.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),ao.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as Np}from"@mantine/core";import Sa from"react";function Bo(e){let o=e.outcome?.issue||e.issues;return o?Sa.createElement(Np,{icon:Sa.createElement(Ye,{size:16}),color:"red"},o.map(t=>Sa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text))):null}import{createReference as Ut}from"@medplum/core";import Hp,{useCallback as Vp}from"react";function qA(e){let o=Vp((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return Hp.createElement(Ke,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Ut(t),sender:Ut(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Ut(t),operator:Ut(r),issued:new Date().toISOString(),content:a})})}import{Anchor as pl,Button as qp,createStyles as Gp,NativeSelect as Up,Stack as zp,TextInput as Pa}from"@mantine/core";import{getReferenceString as Wp}from"@medplum/core";import R,{useEffect as ml,useRef as xl,useState as et}from"react";var Il=Gp(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function rM(e){let o=v(),t=X(e.value),[r,a]=et(void 0),[n,f]=et(),[l,s]=et(),[i,u]=et();function c(){s(void 0)}function d(){f(void 0)}let k=xl();if(k.current=i,ml(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),ml(()=>(u(jp(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!i)return null;function T(S,g){u({...k.current,[S]:g})}return R.createElement("div",null,R.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},R.createElement(Pa,{label:"Plan Title",defaultValue:i.title,onChange:S=>T("title",S.currentTarget.value)}),R.createElement(gl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:S=>T("action",S)}),R.createElement(qp,{type:"submit"},"Save")))}function gl(e){let{classes:o}=Il(),t=xl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return R.createElement("div",{className:o.section},e.actions.map(f=>R.createElement("div",{key:f.id},R.createElement(Xp,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),R.createElement("div",{className:o.bottomActions},R.createElement(pl,{href:"#",onClick:f=>{H(f),a({id:yl()})}},"Add action")))}function Xp(e){let{classes:o,cx:t}=Il(),{action:r}=e,a=Kp(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return R.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?R.createElement(Jp,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):R.createElement(Qp,{action:r,actionType:a}),R.createElement("div",{className:o.bottomActions},R.createElement(pl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Da={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Qp(e){let{action:o,actionType:t}=e,[r,a]=hl(o);return R.createElement("div",null,R.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&R.createElement("div",null,R.createElement(oo,{value:{reference:o.definitionCanonical}})),r&&R.createElement("div",null,R.createElement(ce,{property:Da,propertyType:a,value:r})))}function Jp(e){let{action:o}=e,[t,r]=et(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return R.createElement(zp,{spacing:"xl"},R.createElement(Pa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),R.createElement(Pa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),R.createElement(Up,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&R.createElement(gl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return R.createElement(zt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return R.createElement(zt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return R.createElement(zt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return R.createElement(zt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),R.createElement(Ce,{title:"Timing",description:"When the action should take place."},R.createElement($p,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function zt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return R.createElement(Bt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Wp(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function $p(e){let o=e.action,t="timing",[r,a]=hl(o);return R.createElement(Le,{property:Da,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(zo(o,t,f??t,Da,n))}})}function Kp(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function hl(e){return ye({type:"PlanDefinitionAction",value:e},"timing")}var ba=1;function yl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(ba=Math.max(ba,o+1))}return e}return"id-"+ba++}function jp(e){return{...e,action:Cl(e.action)}}function Cl(e){if(e)return e.map(o=>({...o,id:yl(o.id),action:Cl(o.action)}))}import{Anchor as tt,Button as px,createStyles as xx,NativeSelect as Ix,Textarea as gx,TextInput as wl,Title as hx}from"@mantine/core";import{globalSchema as yx,isResource as Cx}from"@medplum/core";import E,{useEffect as Fl,useRef as vx,useState as Qt}from"react";import{Button as _p,Checkbox as kl,Group as Zp,NativeSelect as Yp,Radio as bl,Stack as ex,Textarea as ox,TextInput as ot,Title as tx}from"@mantine/core";import{capitalize as Bl,createReference as rx,deepEquals as ax,getQuestionnaireAnswers as nx,getReferenceString as Al,getTypedPropertyValue as no,globalSchema as fx,stringify as Pl}from"@medplum/core";import U,{useEffect as Dl,useState as Wt}from"react";var vl=(D=>(D.group="group",D.display="display",D.question="question",D.boolean="boolean",D.decimal="decimal",D.integer="integer",D.date="date",D.dateTime="dateTime",D.time="time",D.string="string",D.text="text",D.url="url",D.choice="choice",D.openChoice="open-choice",D.attachment="attachment",D.reference="reference",D.quantity="quantity",D))(vl||{});function Sl(e){return e.type==="choice"||e.type==="open-choice"}function Ml(e){let o=v(),t=o.getProfile(),[r,a]=Wt(),n=X(e.questionnaire),[f,l]=Wt(),[s,i]=Wt({});Dl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Dl(()=>{l(n?ix(n):void 0)},[n]);function u(c){let d={resourceType:"QuestionnaireResponse",item:c};l(d),i(nx(d))}return!r||!n?null:U.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Al(n),subject:e.subject,source:rx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&U.createElement(tx,null,n.title),n.item&&U.createElement(Ol,{items:n.item,answers:s,onChange:u}),U.createElement(Zp,{position:"right",mt:"xl"},U.createElement(_p,{type:"submit"},e.submitButtonText||"OK")))}function Ol(e){let[o,t]=Wt(Ta(e.items));function r(a,n){let f=o.slice();f[a]=n,t(f),e.onChange(f)}return U.createElement(ex,null,e.items.map((a,n)=>{if(!mx(a,e.answers))return null;if(a.type==="display")return U.createElement("p",{key:a.linkId},a.text);if(a.type==="group")return U.createElement(Xt,{key:a.linkId,item:a,answers:e.answers,onChange:f=>r(n,f)});if(a.type==="boolean"){let f=a.initial&&a.initial.length>0?a.initial[0]:void 0;return U.createElement(St,{key:a.linkId,title:a.text,htmlFor:a.linkId},U.createElement(kl,{id:a.linkId,name:a.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r(n,{linkId:a.linkId,text:a.text,answer:[{valueBoolean:l.currentTarget.checked}]})}))}return U.createElement(Ce,{key:a.linkId,htmlFor:a.linkId,title:a.text||""},U.createElement(Xt,{item:a,answers:e.answers,onChange:f=>r(n,f)}))}))}function Xt(e){let o=e.item,t=o.type;if(!t)return null;let r=o.linkId;if(!r)return null;let a=o.initial&&o.initial.length>0?o.initial[0]:void 0;function n(l){e.onChange({linkId:o.linkId,text:o.text,item:l})}function f(l){e.onChange({linkId:o.linkId,text:o.text,answer:[l]})}switch(t){case"group":return U.createElement("div",null,U.createElement("h3",null,o.text),o.item&&U.createElement(Ol,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return U.createElement(kl,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return U.createElement(ot,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return U.createElement(ot,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return U.createElement(ot,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return U.createElement(ke,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return U.createElement(ot,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return U.createElement(ot,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return U.createElement(ox,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return U.createElement(xt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return U.createElement(Co,{name:r,defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return U.createElement(Pe,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return cx(o)?U.createElement(lx,{name:r,item:o,initial:a,onChangeAnswer:f}):U.createElement(sx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function lx(e){let{name:o,item:t,initial:r}=e,a=no({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=no({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Tl(l))}return U.createElement(Yp,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=no({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Bl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Tl(a),data:n})}function Tl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function sx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=fx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=no({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],c=`${o}-option-${i}`,d=no({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Pl(d)===Pl(f)&&(s=c),l.push([c,d])}return U.createElement(bl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(c=>c[0]===i);if(u){let c=u[1],d="value"+Bl(c.type);a({[d]:c.value})}}},l.map(([i,u])=>U.createElement(bl,{key:i,id:i,value:i,label:U.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function ix(e){return{resourceType:"QuestionnaireResponse",questionnaire:Al(e),item:Ta(e.item)}}function Ta(e){return e?.map(ux)??[]}function ux(e){return{linkId:e.linkId,text:e.text,item:Ta(e.item),answer:e.initial?.map(dx)??[]}}function dx(e){return{...e}}function cx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function mx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior||"any";for(let r of e.enableWhen){let a=no({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),n=no({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),f=ax(a,n);if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}var Sx=xx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function NM(e){let o=v(),t=X(e.questionnaire),[r,a]=Qt(),[n,f]=Qt(),[l,s]=Qt(),[i,u]=Qt();function c(){u(void 0)}function d(){s(void 0)}return Fl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Fl(()=>(f(Px(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!n?null:E.createElement("div",null,E.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},E.createElement(Ll,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),E.createElement(px,{type:"submit"},"Save")))}function Ll(e){let{classes:o,cx:t}=Sx(),r=e.item,a=e.item,n=Cx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=vx();u.current=e.item;function c(m){H(m),e.setSelectedKey(e.item.id)}function d(m){H(m),e.setHoverKey(e.item.id)}function k(m){let O=u.current;e.onChange({...O,item:O.item?.map(h=>h.id===m.id?m:h)})}function T(m){e.onChange({...e.item,item:[...e.item.item??[],m]})}function S(m){e.onChange({...e.item,item:e.item.item?.filter(O=>O!==m)})}function g(m,O){e.onChange({...u.current,[m]:O})}let D=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return E.createElement("div",{"data-testid":a.linkId,className:D,onClick:c,onMouseOver:d},E.createElement("div",{className:o.questionBody},s?E.createElement(E.Fragment,null,n&&E.createElement(wl,{size:"xl",defaultValue:r.title,onChange:m=>g("title",m.currentTarget.value)}),!n&&E.createElement(gx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:m=>g("text",m.currentTarget.value)}),Sl(a)&&E.createElement(bx,{options:a.answerOption,onChange:m=>g("answerOption",m)})):E.createElement(E.Fragment,null,r.title&&E.createElement(hx,null,r.title),a.text&&E.createElement("div",null,a.text),!f&&E.createElement(Xt,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(m=>E.createElement("div",{key:m.id},E.createElement(Ll,{item:m,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:k,onRemove:()=>S(m)}))),!f&&E.createElement("div",{className:o.topActions},s?E.createElement(E.Fragment,null,E.createElement(wl,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:m=>g("linkId",m.currentTarget.value)}),!f&&E.createElement(Ix,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:m=>g("type",m.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):E.createElement("div",null,l)),E.createElement("div",{className:o.bottomActions},f&&E.createElement(E.Fragment,null,E.createElement(tt,{href:"#",onClick:m=>{m.preventDefault(),T({id:Ao(),linkId:El("q"),type:"string",text:"Question"})}},"Add item"),E.createElement(tt,{href:"#",onClick:m=>{m.preventDefault(),T({id:Ao(),linkId:El("g"),type:"group",text:"Group"})}},"Add group")),s&&!n&&E.createElement(tt,{href:"#",onClick:m=>{m.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function bx(e){let o=yx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return E.createElement("div",null,t.map(r=>{let[a,n]=ye({type:"QuestionnaireItemAnswerOption",value:r},"value");return E.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},E.createElement("div",null,E.createElement(Le,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),E.createElement("div",null,E.createElement(tt,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),E.createElement(tt,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:Ao()}])}},"Add choice"))}var ka=1,Ba=1;function El(e){return e+ka++}function Ao(){return"id-"+Ba++}function Px(e){return{...e,id:e.id||Ao(),item:Rl(e.item)}}function Rl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ba=Math.max(Ba,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(ka=Math.max(ka,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Ao(),item:Rl(o.item),answerOption:Dx(o.answerOption)}))}function Dx(e){if(e)return e.map(o=>({...o,id:o.id||Ao()}))}import{ActionIcon as Jt,Button as Tx,createStyles as kx,Divider as Bx,Group as rt,NativeSelect as Nl,Stack as $t,Text as Ax,TextInput as Mx}from"@mantine/core";import{formatRange as Hl,getCodeBySystem as Ox}from"@medplum/core";import z,{useEffect as wx,useState as Aa}from"react";var Fx=kx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),Ex=["gender","age","gestationalAge","context","appliesTo"],Lx={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function JM(e){e=Object.assign(Lx,e);let o=e.definition,[t,r]=Aa([]),[a,n]=Aa(1),[f,l]=Aa(1);return wx(()=>{let T=Hx(o,l);r(Vx(T.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement($t,null,t.map(T=>z.createElement(Rx,{unit:Gx(o.quantitativeDetails?.unit),onChange:c,onAdd:d,onRemove:k,onRemoveGroup:u,key:`group-${T.id}`,intervalGroup:T}))),z.createElement(Jt,{title:"Add Group",size:"sm",onClick:T=>{H(T),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(S=>S+1)}},z.createElement(lo,null)),z.createElement(rt,{position:"right"},z.createElement(Tx,{type:"submit"},"Save")));function s(){let T=t.flatMap(S=>S.intervals).filter(S=>!Ux(S));e.onSubmit({...o,qualifiedInterval:T})}function i(T){r(S=>[...S,T])}function u(T){r(S=>S.filter(g=>g.id!==T.id))}function c(T,S){r(g=>{g=[...g];let D=g.find(O=>O.id===T),m=D?.intervals.findIndex(O=>O.id===S.id);return m!==void 0&&D?.intervals[m]&&(D.intervals[m]=S),g})}function d(T,S){S.id===void 0&&(S.id=`id-${f}`,l(g=>g+1)),r(g=>{g=[...g];let D=g.findIndex(m=>m.id===T);if(D!==-1){let m={...g[D]};S={...S,...m.filters},m.intervals=[...m.intervals,S],g[D]=m}return g})}function k(T,S){r(g=>{g=[...g];let D=g.find(m=>m.id===T);return D&&(D.intervals=D.intervals.filter(m=>m.id!==S.id)),g})}}function Rx(e){let{intervalGroup:o,unit:t}=e,{classes:r}=Fx();return z.createElement(Qe,{"data-testid":o.id,className:r.section},z.createElement($t,{spacing:"lg"},z.createElement(rt,{position:"right"},z.createElement(Jt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ge,null))),z.createElement(Nx,{intervalGroup:o,onChange:e.onChange}),z.createElement(Bx,null),o.intervals.map(a=>z.createElement($t,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(rt,null,z.createElement(Mx,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(Jt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ge,null))),z.createElement(Xo,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(Jt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(lo,null))))}function Nx(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement($t,{style:{maxWidth:"50%"}},z.createElement(rt,null,z.createElement(Nl,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(rt,{spacing:"xs"},z.createElement(Ax,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(Xo,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Nl,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function Hx(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function Vx(e,o){let t=1,r={};for(let a of e){let n=qx(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Ex.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function qx(e){return[`gender=${e.gender}`,`age=${Hl(e.age)}`,`gestationalAge=${Hl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`].join(":")}function Gx(e){return e&&(Ox(e,"http://unitsofmeasure.org")||e.text)}function Ux(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Vl,Grid as Kt,Text as zx}from"@mantine/core";import{formatDateTime as Wx,getReferenceString as Xx}from"@medplum/core";import xe,{useEffect as Qx,useState as ql}from"react";function rO(e){let o=v(),t=X(e.value),[r,a]=ql(!1),[n,f]=ql();if(Qx(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(Kt,null,t.action?.map((i,u)=>{let c=i.resource&&s(i.resource),d=c?.input?.[0]?.valueReference,k=c?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(Kt.Col,{span:1,p:"md"},c?.status==="completed"?xe.createElement(mr,null):xe.createElement(Ar,{color:"gray"})),xe.createElement(Kt.Col,{span:9,p:"xs"},xe.createElement(zx,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(we,{value:c?.meta?.author}),"\xA0on\xA0",Wx(c?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Ot,{status:c?.status||"unknown"}))),xe.createElement(Kt.Col,{span:2,p:"md"},d&&!k&&xe.createElement(Vl,{onClick:()=>e.onStart(c,d)},"Start"),d&&k&&xe.createElement(Vl,{onClick:()=>e.onEdit(c,d,k)},"Edit")))}));function l(i){let u=[];if(i.action)for(let c of i.action)c.resource?.reference&&u.push({request:{method:"GET",url:c.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===Xx(u.resource))return u.resource}}import{createStyles as Yx}from"@mantine/core";import he,{useEffect as eI,useState as oI}from"react";import{stringify as jx}from"@medplum/core";function jt(e,o){let t=Jx(e,o);return $x(t,e,o)}function Jx(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,c=u+1,d=u-1,k=l[c],T=l[d],S,g=0;i===-s||i!==s&&T.i<k.i?(g=k.i,S=k):(g=T.i+1,S=T),l[d]=void 0;let D=g-i,m={i:g,j:D,prev:Kx(S),snake:!1};for(;g<t&&D<r&&e[g]===o[D];)g++,D++;if(g>m.i&&(m={i:g,j:D,prev:m,snake:!0}),l[u]=m,g>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function $x(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},c;i.lines.length===0&&u.lines.length>0?c="insert":i.lines.length>0&&u.lines.length===0?c="delete":c="change",r.push({original:i,revised:u,type:c}),a.snake&&(a=a.prev)}return r}function Kx(e){return e&&!e.snake&&e.prev?e.prev:e}function Gl(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:jx(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return _x(t,o),Zx(t),t}function _x(e,o){for(let t=1;t<o.length;t++){let r=jt(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function Zx(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var tI=Yx(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function xO(e){let{classes:o}=tI(),t=v(),[r,a]=oI(e.history);if(eI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return he.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource,f=Gl(r);return he.createElement("div",{className:o.container},he.createElement("table",{className:o.root},he.createElement("tbody",null,f.map((l,s)=>he.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&he.createElement(he.Fragment,null,he.createElement("td",{className:o.author,rowSpan:l.span},he.createElement(Je,{value:l.meta.author,link:!0})),he.createElement("td",{className:o.dateTime,rowSpan:l.span},he.createElement(fe,{to:rI(n,l.meta.versionId)},aI(l.meta.lastUpdated)))),he.createElement("td",{className:o.lineNumber},s+1),he.createElement("td",{className:o.line},he.createElement("pre",{className:o.pre},l.value)))))))}function rI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function aI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Mo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Mo(r,"month");let a=Math.floor(o/86400);if(a>0)return Mo(a,"day");let n=Math.floor(o/3600);if(n>0)return Mo(n,"hour");let f=Math.floor(o/60);return f>0?Mo(f,"minute"):Mo(o,"second")}function Mo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as nI}from"@mantine/core";import{stringify as Ul}from"@medplum/core";import _e from"react";var fI=nI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function SO(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Ul(o,!0).match(/[^\r\n]+/g),a=Ul(t,!0).match(/[^\r\n]+/g),n=jt(r,a);return _e.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>_e.createElement(lI,{key:"delta"+l,delta:f})))}function lI(e){let{classes:o}=fI();return _e.createElement(_e.Fragment,null,"...",_e.createElement("br",null),e.delta.original.lines.length>0&&_e.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
64
|
+
}`.replace(/\s+/g," ")}function yi(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),vi(Ci(t),o).slice(0,5)}function Ci(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function vi(e,o){return e.sort((t,r)=>ln(r,o)-ln(t,o))}function ln(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,sn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,sn(ui(r),o));return t}function sn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Bi=bi(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function pn(e){let o=Eo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Bi(),[s,i]=ki(!1);return q.createElement(Pi,{height:60,p:8,style:{zIndex:101}},q.createElement(ct,{position:"apart"},q.createElement(ct,{spacing:"xs"},q.createElement(cn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),q.createElement(dn,{pathname:e.pathname,searchParams:e.searchParams})),q.createElement(Ee,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},q.createElement(Ee.Target,null,q.createElement(cn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},q.createElement(ct,{spacing:7},q.createElement(Ie,{value:r,radius:"xl",size:24}),q.createElement(qo,{size:"sm",className:f.userName},Ti(r?.name?.[0])),q.createElement(pr,{size:12,stroke:1.5})))),q.createElement(Ee.Dropdown,null,q.createElement(Di,{align:"center",p:"xl"},q.createElement(Ie,{size:"xl",radius:100,value:o.profile}),q.createElement(it,{value:o.profile?.name?.[0]}),q.createElement(qo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&q.createElement(Ee.Divider,null),n.map(u=>u.profile.reference!==mn(o.profile)&&q.createElement(Ee.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},q.createElement(ct,null,q.createElement(Si,{radius:"xl"}),q.createElement("div",{style:{flex:1}},q.createElement(qo,{size:"sm",weight:500},u.profile.display),q.createElement(qo,{color:"dimmed",size:"xs"},u.project.display))))),q.createElement(Ee.Divider,null),q.createElement(Ee.Item,{icon:q.createElement(Mr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),q.createElement(Ee.Item,{icon:q.createElement(mo,{size:14,stroke:1.5}),onClick:()=>a(`/${mn(r)}`)},"Account settings"),q.createElement(Ee.Item,{icon:q.createElement(br,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),q.createElement(qo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as ji,createStyles as _i,Navbar as Nr,ScrollArea as Zi,Space as Yi,Text as eu}from"@mantine/core";import re,{useState as ou}from"react";import{Button as wi,Group as Oi,Modal as Ei,NativeSelect as Li,Stack as Ri,TextInput as Ni}from"@mantine/core";import{showNotification as In}from"@mantine/notifications";import{deepClone as Hi,normalizeErrorString as Vi}from"@medplum/core";import ze from"react";import Fi from"react";function xn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Ai(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Mi(o,t);return o}function Ai(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Mi(e,o){e[o.name]=o.value}function J(e){return Fi.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=xn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function gn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=Hi(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent(new Event("change")),In({color:"green",message:"Success"}),e.onOk()}).catch(u=>{In({color:"red",message:Vi(u)})})}return ze.createElement(Ei,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(Ri,null,ze.createElement(qi,{config:t}),ze.createElement(Ni,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(Oi,{position:"right"},ze.createElement(wi,{mt:"sm",type:"submit"},"OK")))))}function qi(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Li,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Qi,{useState as Ji}from"react";import Gi,{useCallback as Ui}from"react";function Rr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function zi(e){return typeof e.display=="string"?e.display:Rr(e)}function Wi(e){return{value:Rr(e),label:zi(e),resource:e}}function Xi(e){return{code:e,display:e}}function go(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Ui(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,m=[];for(let v of d)v.code&&!m.some(k=>k.code===v.code)&&m.push(v);return m},[o,t]);return Gi.createElement(dt,{...n,creatable:r??!0,clearable:a??!0,toKey:Rr,toOption:Wi,loadOptions:f,onCreate:Xi,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function mt(e){let[o,t]=Ji(e.defaultValue);function r(a){let n=a[0],f=Ki(n);t(f),e.onChange&&e.onChange(f)}return Qi.createElement(go,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:$i(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function $i(e){return e?{code:e}:void 0}function Ki(e){return e?.code}var hn=_i(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function yn(e){let{classes:o}=hn(),t=qe(),r=au(e.pathname,e.searchParams,e.menus),[a,n]=ou(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return re.createElement(re.Fragment,null,re.createElement(Nr,{width:{sm:250},p:"xs"},re.createElement(Zi,null,re.createElement(Nr.Section,{mb:"sm"},re.createElement(mt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"http://hl7.org/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Nr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(eu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(tu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(ru,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(ji,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(kr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(gn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function tu(e){let{classes:o,cx:t}=hn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function ru(e){return e.icon?e.icon:re.createElement(Yi,{w:30})}function au(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=nu(e,o,f.href);l>a&&(a=l,r=f)}return r}function nu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function Yv(e){let o=lu(),[t,r]=iu(localStorage.navbarOpen==="true"),a=S(),n=nt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?oo.createElement(Er,null):oo.createElement(fu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&oo.createElement(pn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?oo.createElement(yn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},oo.createElement(po,{key:`${e.pathname}?${e.searchParams?.toString()}`},oo.createElement(su,{fallback:oo.createElement(Er,null)},e.children)))}import Hr from"react";import{Anchor as uu}from"@mantine/core";import We from"react";function Fe(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?We.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&We.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&We.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},We.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&We.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},We.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),We.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},We.createElement(uu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Cn(e){return Hr.createElement("div",null,e.values?.map((o,t)=>Hr.createElement("div",{key:"attatchment-"+t},Hr.createElement(Fe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as vn}from"@mantine/core";import fe,{useRef as cu,useState as mu}from"react";import Vr,{useRef as du}from"react";function ho(e){let o=S(),t=du(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Vr.createElement(Vr.Fragment,null,Vr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Sn(e){let[o,t]=mu(e.defaultValue??[]),r=cu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return fe.createElement("table",{style:{width:"100%"}},fe.createElement("colgroup",null,fe.createElement("col",{width:"97%"}),fe.createElement("col",{width:"3%"})),fe.createElement("tbody",null,o.map((n,f)=>fe.createElement("tr",{key:`${f}-${o.length}`},fe.createElement("td",null,fe.createElement(Fe,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(vn,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ge,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(ho,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(vn,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(Lo,{size:16})))))))}import{Button as bn}from"@mantine/core";import yo,{useState as pu}from"react";function pt(e){let[o,t]=pu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?yo.createElement(yo.Fragment,null,yo.createElement(Fe,{value:o,maxWidth:200}),yo.createElement(bn,{onClick:a=>{H(a),r(void 0)}},"Remove")):yo.createElement(ho,{onUpload:r},a=>yo.createElement(bn,{...a},"Upload..."))}import{getPropertyDisplayName as Au,globalSchema as Mu}from"@medplum/core";import Wo from"react";var xt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as xu}from"@mantine/core";import Go from"react";var Iu=xu(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function Pn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Iu();return Go.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Dn(e){return Go.createElement(Go.Fragment,null,Go.createElement("dt",null,e.term),Go.createElement("dd",null,e.children))}import{formatDateTime as Pu,formatPeriod as Du,formatTiming as Tu,getElementDefinitionTypeName as ku,getTypedPropertyValue as Bu,PropertyType as R}from"@medplum/core";import G from"react";import{formatCodeableConcept as gu}from"@medplum/core";import Tn from"react";function Co(e){return Tn.createElement(Tn.Fragment,null,gu(e.value))}import{formatCoding as hu}from"@medplum/core";import kn from"react";function Bn(e){return kn.createElement(kn.Fragment,null,hu(e.value))}import qr from"react";import An from"react";function It(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),An.createElement(An.Fragment,null,t.join("").trim())}function Mn(e){let o=e.value;return o?qr.createElement(qr.Fragment,null,o.name,o.name&&": ",o.telecom?.map((t,r)=>qr.createElement(It,{key:"telecom-"+r,value:t}))):null}import yu from"react";function Fn(e){return yu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Cu}from"@medplum/core";import wn from"react";function On(e){return wn.createElement(wn.Fragment,null,Cu(e.value))}import{formatQuantity as vu}from"@medplum/core";import En from"react";function Uo(e){return En.createElement(En.Fragment,null,vu(e.value))}import{formatRange as Su}from"@medplum/core";import Ln from"react";function gt(e){return Ln.createElement(Ln.Fragment,null,Su(e.value))}import ht from"react";function Rn(e){let o=e.value;return o?ht.createElement(ht.Fragment,null,ht.createElement(Uo,{value:o.numerator}),"\xA0/\xA0",ht.createElement(Uo,{value:o.denominator})):null}import{stringify as bu}from"@medplum/core";import Gr from"react";function to(e){if(!e.value)return null;let o=e.value.display||e.value.reference||bu(e.value);return e.link!==!1&&e.value.reference?Gr.createElement(ne,{to:e.value},o):Gr.createElement(Gr.Fragment,null,o)}import yt from"react";function Nn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return yt.createElement(yt.Fragment,null,t.map((a,n)=>yt.createElement("div",{key:`${n}-${t.length}`},yt.createElement(de,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function de(e){let{property:o,propertyType:t,value:r}=e;if(o?.max==="*"&&!e.arrayElement)return t===R.Attachment?G.createElement(Cn,{values:r,maxWidth:e.maxWidth}):G.createElement(Nn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case R.boolean:return G.createElement(G.Fragment,null,r===void 0?"":(!!r).toString());case R.SystemString:case R.string:return G.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case R.code:case R.date:case R.integer:case R.positiveInt:case R.unsignedInt:case R.uri:case R.url:return G.createElement(G.Fragment,null,r);case R.canonical:return G.createElement(to,{value:{reference:r},link:e.link});case R.dateTime:case R.instant:return G.createElement(G.Fragment,null,Pu(r));case R.markdown:return G.createElement("pre",null,r);case R.Address:return G.createElement(Na,{value:r});case R.Annotation:return G.createElement(G.Fragment,null,r?.text);case R.Attachment:return G.createElement(Fe,{value:r,maxWidth:e.maxWidth});case R.CodeableConcept:return G.createElement(Co,{value:r});case R.Coding:return G.createElement(Bn,{value:r});case R.ContactDetail:return G.createElement(Mn,{value:r});case R.ContactPoint:return G.createElement(It,{value:r});case R.HumanName:return G.createElement(it,{value:r});case R.Identifier:return G.createElement(Fn,{value:r});case R.Money:return G.createElement(On,{value:r});case R.Period:return G.createElement(G.Fragment,null,Du(r));case R.Quantity:case R.Duration:return G.createElement(Uo,{value:r});case R.Range:return G.createElement(gt,{value:r});case R.Ratio:return G.createElement(Rn,{value:r});case R.Reference:return G.createElement(to,{value:r,link:e.link});case R.Timing:return G.createElement(G.Fragment,null,Tu(r));case R.Dosage:case R.UsageContext:return G.createElement(zo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return G.createElement(zo,{value:{type:ku(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Ce(e,o){let t=Bu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Mu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Wo.createElement("div",null,t.name):Wo.createElement(Pn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(xt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Ce(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Wo.createElement(Dn,{key:f,term:Au(f)},Wo.createElement(de,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Wo.createElement("div",null,r,"\xA0not implemented")}import{Stack as sc}from"@mantine/core";import{getPropertyDisplayName as mf,globalSchema as ic}from"@medplum/core";import bo,{useState as uc}from"react";import{Group as Fu,Input as wu}from"@mantine/core";import Ct from"react";function vt(e){return Ct.createElement(Fu,{noWrap:!0},Ct.createElement("div",null,e.children),Ct.createElement("div",null,Ct.createElement(wu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ou}from"@mantine/core";import Eu from"react";function ce(e,o){return e?.issue?.filter(t=>Hn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
+
`)}function St(e,o){return e?.issue?.filter(t=>Hn(t.expression?.[0],o))}function Hn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function ve(e){return Eu.createElement(Ou.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:ce(e.outcome,e.htmlFor)},e.children)}import{Button as Vn,Group as Lu,Stack as Ru,TextInput as qn}from"@mantine/core";import{capitalize as Nu,deepClone as Hu}from"@medplum/core";import Te,{useEffect as Vu,useState as Gn}from"react";function Kb(e){let o=S(),t=X(e.defaultValue),[r,a]=Gn(),[n,f]=Gn();return Vu(()=>{t&&(f(Hu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Te.createElement("div",null,"Loading..."):Te.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Te.createElement(Ru,{mb:"xl"},Te.createElement(ve,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Te.createElement(qn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Te.createElement(ve,{title:"ID",htmlFor:"id",outcome:e.outcome},Te.createElement(qn,{name:"id",defaultValue:n.id,disabled:!0}))),Te.createElement(Qo,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Te.createElement(Lu,{position:"right",mt:"xl"},Te.createElement(Vn,{type:"submit"},"OK"),e.onDelete&&Te.createElement(Vn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function Xo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Nu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as Yd,Group as ec,NativeSelect as oc,Textarea as tc,TextInput as Zr}from"@mantine/core";import{capitalize as rc,getElementDefinitionTypeName as ac,PropertyType as w}from"@medplum/core";import V,{useState as nc}from"react";import qu,{useState as Gu}from"react";function Un(e){let[o,t]=Gu(e.defaultValue);function r(a){let n=zu(a);t(n),e.onChange&&e.onChange(n)}return qu.createElement(go,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Uu(o),onChange:r})}function Uu(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function zu(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Wu,{useState as Xu}from"react";function zn(e){let[o,t]=Xu(e.defaultValue);function r(a){let n=a[0],f=n&&Ju(n);t(f),e.onChange&&e.onChange(f)}return Wu.createElement(go,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Qu(o),onChange:r})}function Qu(e){return{system:e.system,code:e.code,display:e.display}}function Ju(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Zu,TextInput as Yu}from"@mantine/core";import Ur,{useRef as ed,useState as od}from"react";import{Group as $u,NativeSelect as Wn,TextInput as Ku}from"@mantine/core";import bt,{useRef as ju,useState as _u}from"react";function Pt(e){let[o,t]=_u(e.defaultValue),r=ju();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return bt.createElement($u,{spacing:"xs",grow:!0,noWrap:!0},bt.createElement(Wn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),bt.createElement(Wn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),bt.createElement(Ku,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Xn(e){let[o,t]=od(e.defaultValue),r=ed();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return Ur.createElement(Zu,{spacing:"xs",grow:!0,noWrap:!0},Ur.createElement(Yu,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Ur.createElement(Pt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as td}from"@mantine/core";import{isValidDate as Qn}from"@medplum/core";import rd from"react";function ke(e){return rd.createElement(td,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:fd(),defaultValue:ad(e.defaultValue),autoFocus:e.autoFocus,error:ce(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(nd(t))}}})}function ad(e){if(!e)return"";let o=new Date(e);return Qn(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function nd(e){if(!e)return"";let o=new Date(e);return Qn(o)?o.toISOString():""}function fd(){return"datetime-local"}import{JsonInput as ld}from"@mantine/core";import{stringify as sd}from"@medplum/core";import id from"react";function Jn(e){return id.createElement(ld,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:sd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as ud,NativeSelect as dd,TextInput as Dt}from"@mantine/core";import vo,{useRef as cd,useState as md}from"react";function $n(e){let[o,t]=md(e.defaultValue),r=cd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return vo.createElement(ud,{spacing:"xs",grow:!0,noWrap:!0},vo.createElement(dd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),vo.createElement(Dt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),vo.createElement(Dt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),vo.createElement(Dt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),vo.createElement(Dt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as pd,TextInput as Kn}from"@mantine/core";import zr,{useState as xd}from"react";function jn(e){let[o,t]=xd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return zr.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},zr.createElement(Kn,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),zr.createElement(Kn,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Id,TextInput as gd}from"@mantine/core";import Wr,{useCallback as Xr,useState as hd}from"react";var yd=["USD","EUR","CAD","GBP","AUD"];function _n(e){let{onChange:o}=e,[t,r]=hd(e.defaultValue),a=Xr(s=>{r(s),o&&o(s)},[o]),n=Xr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Xr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Wr.createElement(Id,{defaultValue:t?.currency,data:yd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Wr.createElement(gd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Wr.createElement(Ir,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Cd}from"@mantine/core";import Qr,{useState as vd}from"react";function Zn(e){let[o,t]=vd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qr.createElement(Cd,{spacing:"xs",grow:!0,noWrap:!0},Qr.createElement(ke,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Qr.createElement(ke,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Sd,NativeSelect as bd,TextInput as Yn}from"@mantine/core";import Tt,{useState as Pd}from"react";function Pe(e){let[o,t]=Pd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Tt.createElement(Sd,{spacing:"xs",grow:!0,noWrap:!0},Tt.createElement(bd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Tt.createElement(Yn,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Dd(a.currentTarget.value)})}}),Tt.createElement(Yn,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Dd(e){if(e)return parseFloat(e)}import{Group as Td}from"@mantine/core";import Jr,{useState as kd}from"react";function Jo(e){let[o,t]=kd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Jr.createElement(Td,{spacing:"xs",grow:!0,noWrap:!0},Jr.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),Jr.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Bd}from"@mantine/core";import $r,{useState as Ad}from"react";function ef(e){let[o,t]=Ad(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return $r.createElement(Bd,{spacing:"xs",grow:!0,noWrap:!0},$r.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),$r.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Nd,NativeSelect as Hd,TextInput as Vd}from"@mantine/core";import{createReference as qd}from"@medplum/core";import Bt,{useRef as tf,useState as rf}from"react";import{Autocomplete as Md,Group as Fd,Loader as wd,Text as of}from"@mantine/core";import{getDisplayString as Kr}from"@medplum/core";import Xe,{forwardRef as Od,useEffect as Ed,useState as jr}from"react";var Ld={Schedule:"_id",Task:"_id",Patient:"name",Practitioner:"name",Questionnaire:"name",ServiceRequest:"_id",DiagnosticReport:"_id",Specimen:"_id",Observation:"code",RequestGroup:"_id",ActivityDefinition:"name",User:"email:contains"};function kt(e){let o=S(),t=X(e.defaultValue),[r,a]=jr(t?Kr(t):""),[n,f]=jr(!1),[l,s]=jr([]);Ed(()=>{t&&a(Kr(t))},[t,a]);async function i(m){f(!0);let v=Ld[e.resourceType]||"name",k=new URLSearchParams({[v]:m,_count:"10"}),T=await o.searchResources(e.resourceType,k);s(T.map(g=>({value:Kr(g),resource:g}))),f(!1)}async function u(m){return a(m),i(m)}function d(m){a(m.value),s([]),e.onChange&&e.onChange(m.resource)}return Xe.createElement(Md,{name:e.name,itemComponent:Rd,value:r,data:l,placeholder:e.placeholder,onFocus:()=>i(r),onChange:u,onItemSubmit:d,rightSection:n?Xe.createElement(wd,{size:16}):null})}var Rd=Od(({value:e,resource:o,...t},r)=>Xe.createElement("div",{ref:r,...t},Xe.createElement(Fd,{noWrap:!0},Xe.createElement(Ie,{value:o}),Xe.createElement("div",null,Xe.createElement(of,null,e),Xe.createElement(of,{size:"xs",color:"dimmed"},o.birthDate)))));function So(e){let o=Gd(e.targetTypes),t=Ud(e.defaultValue,o),[r,a]=rf(e.defaultValue),[n,f]=rf(t),l=tf();l.current=r;let s=tf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Bt.createElement(Nd,{spacing:"xs",grow:!0,noWrap:!0},o?Bt.createElement(Hd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Bt.createElement(Vd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Bt.createElement(kt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?qd(u):void 0)}}))}function Gd(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Ud(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as af}from"@mantine/core";import me,{useRef as zd,useState as Wd}from"react";function nf(e){let[o,t]=Wd(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=zd();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return me.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},me.createElement("colgroup",null,me.createElement("col",{width:"97%"}),me.createElement("col",{width:"3%"})),me.createElement("tbody",null,o.map((n,f)=>me.createElement("tr",{key:`${f}-${o.length}`},me.createElement("td",null,me.createElement(Le,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),me.createElement("td",{style:{textAlign:"right"}},me.createElement(af,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},me.createElement(Ge,null))))),me.createElement("tr",null,me.createElement("td",null),me.createElement("td",{style:{textAlign:"right"}},me.createElement(af,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},me.createElement(io,null))))))}import{Button as sf,Chip as ff,Group as At,Modal as Xd,NativeSelect as Qd,Stack as Jd,Switch as $d,TextInput as Kd}from"@mantine/core";import{formatTiming as jd}from"@medplum/core";import K,{useRef as uf,useState as _r}from"react";var _d=["sun","mon","tue","wed","thu","fri","sat"];function df(e){let[o,t]=_r(e.defaultValue),[r,a]=_r(!1),n=uf();return n.current=o,K.createElement(K.Fragment,null,K.createElement(At,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,jd(n.current)||"No repeat"),K.createElement(sf,{onClick:()=>a(!0)},"Edit")),K.createElement(Zd,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var lf={repeat:{period:1,periodUnit:"d"}};function Zd(e){let[o,t]=_r(e.defaultValue||lf),r=uf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return K.createElement(Xd,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(Jd,null,K.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(ke,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement($d,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?lf.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(At,{spacing:"xs",grow:!0,noWrap:!0},K.createElement(Kd,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),K.createElement(Qd,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&K.createElement(ve,{title:"Repeat on"},K.createElement(ff.Group,{multiple:!0,onChange:s},K.createElement(At,{position:"apart",mt:"md",spacing:"xs"},_d.map(i=>K.createElement(ff,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(At,{position:"right"},K.createElement(sf,{onClick:()=>e.onOk(o)},"OK"))))}function Le(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===w.Attachment?V.createElement(Sn,{name:r,defaultValue:a,onChange:e.onChange}):V.createElement(nf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?V.createElement(fc,{elementDefinitionTypes:n,...e}):V.createElement(cf,{elementDefinitionType:n[0],...e})}function fc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=nc(t);return V.createElement(ec,{spacing:"xs",grow:!0,noWrap:!0},V.createElement(oc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),V.createElement(cf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",rc(r.code)))}}))}function cf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case w.SystemString:case w.canonical:case w.string:case w.time:case w.uri:case w.url:return V.createElement(Zr,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:ce(e.outcome,r)});case w.date:return V.createElement(Zr,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:ce(e.outcome,r)});case w.dateTime:case w.instant:return V.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case w.decimal:case w.integer:case w.positiveInt:case w.unsignedInt:return V.createElement(Zr,{type:"number",step:t===w.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case w.code:return V.createElement(mt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case w.boolean:return V.createElement(Yd,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case w.markdown:return V.createElement(tc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case w.Address:return V.createElement(Ga,{name:r,defaultValue:a,onChange:e.onChange});case w.Annotation:return V.createElement(Wa,{name:r,defaultValue:a,onChange:e.onChange});case w.Attachment:return V.createElement(pt,{name:r,defaultValue:a,onChange:e.onChange});case w.CodeableConcept:return V.createElement(Un,{property:o,name:r,defaultValue:a,onChange:e.onChange});case w.Coding:return V.createElement(zn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case w.ContactDetail:return V.createElement(Xn,{name:r,defaultValue:a,onChange:e.onChange});case w.ContactPoint:return V.createElement(Pt,{name:r,defaultValue:a,onChange:e.onChange});case w.Extension:return V.createElement(Jn,{name:r,defaultValue:a,onChange:e.onChange});case w.HumanName:return V.createElement($n,{name:r,defaultValue:a,onChange:e.onChange});case w.Identifier:return V.createElement(jn,{name:r,defaultValue:a,onChange:e.onChange});case w.Money:return V.createElement(_n,{name:r,defaultValue:a,onChange:e.onChange});case w.Period:return V.createElement(Zn,{name:r,defaultValue:a,onChange:e.onChange});case w.Duration:case w.Quantity:return V.createElement(Pe,{name:r,defaultValue:a,onChange:e.onChange});case w.Range:return V.createElement(Jo,{name:r,defaultValue:a,onChange:e.onChange});case w.Ratio:return V.createElement(ef,{name:r,defaultValue:a,onChange:e.onChange});case w.Reference:return V.createElement(So,{name:r,defaultValue:a,targetTypes:lc(o),onChange:e.onChange});case w.Timing:return V.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case w.Dosage:case w.UsageContext:return V.createElement(Qo,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return V.createElement(Qo,{typeName:ac(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function lc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Qo(e){let[o,t]=uc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=ic.types[a];if(!n)return bo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return bo.createElement(sc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||xt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Ce(f,s),m=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?bo.createElement(vt,{key:s,title:mf(s),description:i.definition,htmlFor:s},bo.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(v,k)=>{r(Xo(o,s,k??s,l[1],v))}})):bo.createElement(ve,{key:s,title:mf(s),description:i.definition,withAsterisk:m,htmlFor:s,outcome:e.outcome},bo.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(v,k)=>{r(Xo(o,s,k??s,l[1],v))}}))}))}import{Button as Yr,createStyles as dc,Group as pf}from"@mantine/core";import Y,{useMemo as cc,useState as mc}from"react";var pc=dc(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function xc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function xf(e){let{classes:o}=pc(),{onChangeMonth:t,onClick:r}=e,[a,n]=mc(ea);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=cc(()=>Ic(a,e.slots),[a,e.slots]);return Y.createElement("div",null,Y.createElement(pf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},Y.createElement("p",{style:{flex:1}},xc(a)),Y.createElement(pf,{position:"right",spacing:"xs"},Y.createElement(Yr,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),Y.createElement(Yr,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),Y.createElement("table",{className:o.table},Y.createElement("thead",null,Y.createElement("tr",null,Y.createElement("th",null,"SUN"),Y.createElement("th",null,"MON"),Y.createElement("th",null,"TUE"),Y.createElement("th",null,"WED"),Y.createElement("th",null,"THU"),Y.createElement("th",null,"FRI"),Y.createElement("th",null,"SAT"))),Y.createElement("tbody",null,l.map((s,i)=>Y.createElement("tr",{key:"week-"+i},s.map((u,d)=>Y.createElement("td",{key:"day-"+d},u&&Y.createElement(Yr,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function ea(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ic(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:gc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function gc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as hc,createStyles as yc}from"@mantine/core";import Cc from"react";var vc=yc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Qe(e){let{children:o,...t}=e,{classes:r}=vc();return Cc.createElement(hc,{className:r.root,...t},o)}import Bm from"react";import{ActionIcon as wf,Center as dm,createStyles as cm,Group as mm,Loader as pm,Menu as Re,ScrollArea as xm,TextInput as Im}from"@mantine/core";import{showNotification as gm,updateNotification as la}from"@mantine/notifications";import{getReferenceString as $o,normalizeErrorString as hm}from"@medplum/core";import b,{useCallback as wt,useEffect as ym,useRef as Of,useState as Ef}from"react";import{createStyles as Lc,Group as Ft,List as hf,Stack as yf,Text as De,Title as Cf}from"@mantine/core";import{capitalize as Rc,formatDateTime as ra,formatObservationValue as Nc}from"@medplum/core";import I,{useEffect as Hc,useState as Vc}from"react";import{Blockquote as Sc,createStyles as bc,Stack as Pc}from"@mantine/core";import If from"react";var Dc=bc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function oa({value:e}){let{classes:o}=Dc();return e?If.createElement(Pc,{justify:"flex-start",spacing:"xs"},e.map((t,r)=>t.text&&If.createElement(Sc,{key:`note-${r}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Fc}from"@mantine/core";import ta from"react";import{Text as Tc}from"@mantine/core";import{getDisplayString as kc,isOk as Bc,normalizeErrorString as Ac}from"@medplum/core";import gf,{useState as Mc}from"react";function we(e){let{value:o,link:t,...r}=e,[a,n]=Mc(),f=X(o,n),l;if(a&&!Bc(a))l=`[${Ac(a)}]`;else if(f)l=kc(f);else return null;return t?gf.createElement(ne,{to:o,...r},l):gf.createElement(Tc,{component:"span",...r},l)}function Je(e){return ta.createElement(Fc,{spacing:"xs"},ta.createElement(Ie,{size:24,radius:12,value:e.value,link:e.link}),ta.createElement(we,{value:e.value,link:e.link}))}import{Badge as wc}from"@mantine/core";import Oc from"react";var Ec={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Mt(e){return Oc.createElement(wc,{color:Ec[e.status]},e.status)}var vf=Lc(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));aa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function aa(e){let o=S(),t=X(e.value),[r,a]=Vc();if(Hc(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(yf,null,I.createElement(Cf,null,"Diagnostic Report"),I.createElement(qc,{value:t}),!e.hideSpecimenInfo&&Gc(r),t.result&&I.createElement(Uc,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(oa,{value:n}))}function qc({value:e}){return I.createElement(Ft,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(De,null,I.createElement(Je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(De,null,I.createElement(Je,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(De,null,I.createElement(Je,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(De,null,ra(e.issued))),e.status&&I.createElement("div",null,I.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(De,null,Rc(e.status))))}function Gc(e){return I.createElement(yf,{spacing:"xs"},I.createElement(Cf,{order:2,size:"h6"},"Specimens"),I.createElement(hf,{type:"ordered"},e?.map((o,t)=>I.createElement(hf.Item,{ml:"sm",key:`specimen-${o.id}-${t}`},I.createElement(Ft,{spacing:20},I.createElement(Ft,{spacing:5},I.createElement(De,{fw:500},"Collected:")," ",ra(o.collection?.collectedDateTime)),I.createElement(Ft,{spacing:5},I.createElement(De,{fw:500},"Received:")," ",ra(o.receivedTime)))))))}function Uc(e){let{classes:o}=vf();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,e.value?.map((t,r)=>I.createElement(zc,{key:`obs-${t.id}-${r}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function zc(e){let{classes:o,cx:t}=vf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Qc(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(ne,{to:r},I.createElement(Co,{value:r.code}))),I.createElement("td",null,I.createElement(Wc,{value:r})),I.createElement("td",null,I.createElement(Xc,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(Co,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement("ul",null,r.category.map((f,l)=>I.createElement("li",{key:`category-${l}`},I.createElement(Co,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(to,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Mt,{status:r.status}))),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(oa,{value:r.note}))))}function Wc(e){let o=e.value;return I.createElement(I.Fragment,null,Nc(o))}function Xc(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(gt,{value:o}):null}function Qc(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Jc,Paper as $c,useComponentDefaultProps as Kc}from"@mantine/core";import jc from"react";var _c=Jc((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Zc={shadow:"xs",radius:"md",withBorder:!0};function Po(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Kc("Panel",Zc,e),{classes:l,cx:s}=_c({width:r,fill:a},{name:"Panel",unstyled:n});return jc.createElement($c,{className:s(l.paper,o),...f},t)}import{createStyles as Yc}from"@mantine/core";import{getPropertyDisplayName as em,stringify as Sf,toTypedValue as bf}from"@medplum/core";import le,{useEffect as om,useState as tm}from"react";var rm=Yc(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Df(e){let{classes:o}=rm(),t=S(),[r,a]=tm();if(om(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?le.createElement("table",{className:o.root},le.createElement("colgroup",null,le.createElement("col",{style:{width:"30%"}}),le.createElement("col",{style:{width:"35%"}}),le.createElement("col",{style:{width:"35%"}})),le.createElement("thead",null,le.createElement("tr",null,le.createElement("th",null,"Property"),le.createElement("th",null,"Before"),le.createElement("th",null,"After"))),le.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Ce(bf(e.original),l),[d,m]=Ce(bf(e.revised),l);return Pf(i)&&Pf(d)||Sf(i)===Sf(d)?null:le.createElement("tr",{key:l},le.createElement("td",null,em(l)),le.createElement("td",{className:o.removed},le.createElement(de,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(de,{property:s,propertyType:m,value:d,ignoreMissingValues:!0})))}))):null}function Pf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import am,{useEffect as nm,useState as fm}from"react";function na(e){let o=S(),t=X(e.value),[r,a]=fm();return nm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:am.createElement(zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as lm,Group as sm,Menu as Tf,Text as fa}from"@mantine/core";import{formatDateTime as im,getReferenceString as um}from"@medplum/core";import ee from"react";function kf(e){return ee.createElement(Qe,null,e.children)}function $e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return ee.createElement(Po,{"data-testid":"timeline-item",fill:!0,...n},ee.createElement(sm,{position:"apart",spacing:8,mx:"xs",my:"sm"},ee.createElement(Ie,{value:f,link:!0,size:"md"}),ee.createElement("div",{style:{flex:1}},ee.createElement(fa,{size:"sm"},ee.createElement(we,{color:"dark",weight:500,value:f,link:!0})),ee.createElement(fa,{size:"xs"},ee.createElement(ne,{color:"dimmed",to:e.resource},im(l)),ee.createElement(fa,{component:"span",color:"dimmed",mx:8},"\xB7"),ee.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&ee.createElement(Tf,{position:"bottom-end",shadow:"md",width:200},ee.createElement(Tf.Target,null,ee.createElement(lm,{radius:"xl","aria-label":`Actions for ${um(e.resource)}`},ee.createElement(gr,null))),a)),ee.createElement(po,null,r&&ee.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&ee.createElement(ee.Fragment,null,e.children)))}function Mf(e,o){e.sort((t,r)=>{let a=Bf(t,o),n=Bf(r,o);return a>n?1:a<n?-1:Af(t,o)-Af(r,o)})}function Bf(e,o){if(!Ff(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Af(e,o){if(!Ff(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Ff(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Cm=cm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ke(e){let o=S(),t=qe(),r=o.getProfile(),a=Of(null),n=X(e.value),[f,l]=Ef(),[s,i]=Ef([]),u=e.loadTimelineResources,d=Of(s);d.current=s;let m=wt(y=>{Mf(y,n),y.reverse(),i(y)},[n]),v=wt(y=>{let L=[];for(let He of y){if(He.status!=="fulfilled")continue;let C=He.value;if(C.type==="history"&&l(C),C.entry)for(let W of C.entry)L.push(W.resource)}m(L)},[m]),k=wt(y=>m([...d.current,y]),[m]),T=wt(()=>{let y,L;"resourceType"in e.value?(y=e.value.resourceType,L=e.value.id):[y,L]=e.value.reference?.split("/"),u(o,y,L).then(v).catch(console.log)},[o,e.value,u,v]);ym(()=>T(),[T]);function g(y){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,y)).then(L=>k(L)).catch(console.log)}function D(y){!n||!e.createMedia||o.createResource(e.createMedia(n,r,y)).then(L=>k(L)).then(()=>la({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:b.createElement(cr,{size:16}),autoClose:2e3})).catch(L=>la({id:"upload-notification",color:"red",title:"Upload error",message:hm(L),icon:b.createElement(yr,{size:16}),autoClose:2e3}))}function c(y,L){return o.updateResource({...y,priority:L})}function F(y){c(y,"stat").then(T).catch(console.log)}function h(y){c(y,"routine").then(T).catch(console.log)}function M(y){t(`/${y.resourceType}/${y.id}`)}function ge(y){t(`/${y.resourceType}/${y.id}/edit`)}function $(y){t(`/${y.resourceType}/${y.id}/delete`)}function Se(y){t(`/${y.resourceType}/${y.id}/_history/${y.meta?.versionId}`)}function xe(){gm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function be(y){la({id:"upload-notification",loading:!0,title:"Uploading...",message:km(y),autoClose:!1,withCloseButton:!1})}return n?b.createElement(kf,null,e.createCommunication&&b.createElement(Po,null,b.createElement(J,{testid:"timeline-form",onSubmit:y=>{g(y.text);let L=a.current;L&&(L.value="",L.focus())}},b.createElement(mm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},b.createElement(Ie,{value:r}),b.createElement(Im,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),b.createElement(wf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},b.createElement(Pr,{size:16})),b.createElement(ho,{onUpload:D,onUploadStart:xe,onUploadProgress:be},y=>b.createElement(wf,{...y,radius:"xl",color:"blue",variant:"filled"},b.createElement(Lo,{size:16})))))),s.map(y=>{if(!y)return null;let L=`${y.resourceType}/${y.id}/${y.meta?.versionId}`;if(y.resourceType===n.resourceType&&y.id===n.id)return b.createElement(vm,{key:L,history:f,resource:y,onDetails:Se});switch(y.resourceType){case"AuditEvent":return b.createElement(Dm,{key:L,resource:y,onDetails:M});case"Communication":return b.createElement(bm,{key:L,resource:y,onPin:y.priority!=="stat"?F:void 0,onUnpin:y.priority==="stat"?h:void 0,onDetails:M,onEdit:ge,onDelete:$});case"DiagnosticReport":return b.createElement(Tm,{key:L,resource:y,onDetails:M,onEdit:ge,onDelete:$});case"Media":return b.createElement(Pm,{key:L,resource:y,onDetails:M,onEdit:ge,onDelete:$});default:return b.createElement($e,{key:L,resource:y,padding:!0},b.createElement(na,{value:y,ignoreMissingValues:!0}))}})):b.createElement(dm,{style:{width:"100%",height:"100%"}},b.createElement(pm,null))}function Do(e){return b.createElement(Re.Dropdown,null,b.createElement(Re.Label,null,"Resource"),e.onPin&&b.createElement(Re.Item,{icon:b.createElement(Dr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${$o(e.resource)}`},"Pin"),e.onUnpin&&b.createElement(Re.Item,{icon:b.createElement(Tr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${$o(e.resource)}`},"Unpin"),e.onDetails&&b.createElement(Re.Item,{icon:b.createElement(Sr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${$o(e.resource)}`},"Details"),e.onEdit&&b.createElement(Re.Item,{icon:b.createElement(hr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${$o(e.resource)}`},"Edit"),e.onDelete&&b.createElement(b.Fragment,null,b.createElement(Re.Divider,null),b.createElement(Re.Label,null,"Danger zone"),b.createElement(Re.Item,{color:"red",icon:b.createElement(Ho,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${$o(e.resource)}`},"Delete")))}function vm(e){let o=Sm(e.history,e.resource);return o?b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Do,{...e})},b.createElement(Df,{original:o,revised:e.resource})):b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Do,{...e})},b.createElement("h3",null,"Created"),b.createElement(na,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Sm(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function bm(e){let{classes:o}=Cm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return b.createElement($e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:b.createElement(Do,{...e})},b.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Pm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return b.createElement($e,{resource:e.resource,padding:!!t,popupMenuItems:b.createElement(Do,{...e})},b.createElement(Fe,{value:e.resource.content}))}function Dm(e){return b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Do,{...e})},b.createElement(xm,null,b.createElement("pre",null,e.resource.outcomeDesc)))}function Tm(e){return b.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Do,{...e})},b.createElement(aa,{value:e.resource}))}function km(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${sa(e.loaded)} / ${sa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${sa(e.loaded)}`}function sa(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function Lk(e){return Bm.createElement(Ke,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Lf from"react";function Ot(e){let{children:o,...t}=e;return Lf.createElement(Qe,null,Lf.createElement(Po,{...t},o))}import{createReference as Et}from"@medplum/core";import Am from"react";function Jk(e){return Am.createElement(Ke,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Et(o),subject:o.subject,sender:Et(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Et(o),subject:o.subject,operator:Et(t),issued:new Date().toISOString(),content:r})})}import{Button as Lp,Loader as Rp,Table as Np}from"@mantine/core";import{normalizeOperationOutcome as Hp}from"@medplum/core";import oe,{useEffect as cl,useRef as ml,useState as Gt}from"react";import{evalFhirPath as Mm}from"@medplum/core";import Fm from"react";function Rf(e){let o;try{o=Mm(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return Fm.createElement(de,{value:o[0]||"",propertyType:e.propertyType})}import{Button as Ao,Center as qt,createStyles as Cp,Group as ga,Loader as vp,Menu as ul,Pagination as Sp,Table as bp,Text as ha,UnstyledButton as Pp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Sa,formatSearchQuery as Dp,globalSchema as Tp}from"@medplum/core";import P,{useEffect as dl,useRef as kp,useState as ya}from"react";import{Box as wm,Button as Om,Modal as Em,Text as Lm}from"@mantine/core";import To from"react";function Hf(e){return To.createElement(Em,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},To.createElement(wm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&To.createElement(Nf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&To.createElement(Nf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),To.createElement(Lm,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Nf(e){return To.createElement(Om,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as _o,Modal as Xm}from"@mantine/core";import{globalSchema as Qm,stringify as Jm}from"@medplum/core";import Q,{useEffect as $m,useRef as Yf,useState as Km}from"react";import{capitalize as Rm,DEFAULT_SEARCH_COUNT as Nm,evalFhirPathTyped as Hm,formatDateTime as Vm,Operator as A}from"@medplum/core";import Lt from"react";var qm={string:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],fulltext:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],token:[A.EQUALS,A.NOT],reference:[A.EQUALS,A.NOT],numeric:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],quantity:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],date:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY],datetime:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY]},Gm={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function Ko(e,o){return{...e,filters:o,offset:0,name:void 0}}function iB(e){return Ko(e,[])}function Rt(e,o){return Ko(e,(e.filters??[]).filter(t=>t.code!==o))}function ko(e,o,t,r,a){a&&(e=Rt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),Ko(e,n)}function uB(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function qf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function Gf(e,o){return ia(e,o,-1)}function Uf(e,o){return ia(e,o,0)}function zf(e,o){return ia(e,o,1)}function ia(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),da(e,o,r,a)}function Wf(e,o){return ua(e,o,-1)}function Xf(e,o){return ua(e,o,0)}function Qf(e,o){return ua(e,o,1)}function ua(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),da(e,o,r,a)}function Jf(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),da(e,o,t,new Date)}function da(e,o,t,r){return e=Rt(e,o),e=Vf(e,o,A.GREATER_THAN_OR_EQUALS,t),e=Vf(e,o,A.LESS_THAN_OR_EQUALS,r),e}function Vf(e,o,t,r){return ko(e,o,t,r.toISOString())}function ca(e,o,t=!0){return ko(e,o,A.MISSING,t.toString())}function Um(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function $f(e,o){let t=e.count??Nm,r=(o-1)*t;return Um(e,r)}function ma(e,o,t){return o===Kf(e)&&t!==void 0&&t===jf(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function dB(e,o){let t=!1;return Kf(e)===o&&(t=!jf(e)),ma(e,o,t)}function Kf(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function jf(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function _f(e){return qm[e.type]}function jo(e){return Gm[e]??""}function he(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Rm).join(" "))}function Zf(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Vm(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?zm(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Wm(e,o.searchParams[0]):null}function zm(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Ce({type:e.resourceType,value:e},t);return r?Lt.createElement(de,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Wm(e,o){let t=Hm(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Lt.createElement(Lt.Fragment,null,t.map((r,a)=>Lt.createElement(de,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function el(e){let[o,t]=Km({search:JSON.parse(Jm(e.search))}),r=Yf(null),a=Yf(null);$m(()=>{t({search:e.search})},[e.search]);function n(c){c.key==="Enter"&&i()}function f(){i()}function l(c){c.key==="Enter"&&u()}function s(){u()}function i(){let c=o.search.fields??[],F=r.current?.value;if(F){let h=[...c,F];t({search:{...o.search,fields:h}})}}function u(){let c=o.search.fields??[],F=a.current?.value;if(F){let h=[...c];h.splice(h.indexOf(F),1),t({search:{...o.search,fields:h}})}}function d(){let c=o.search.fields??[],F=a.current?.value;if(!F)return;let h=[...c],M=h.indexOf(F);M<=0||(v(h,M,M-1),t({search:{...o.search,fields:h}}))}function m(){let c=o.search.fields??[],F=a.current?.value;if(!F)return;let h=[...c],M=h.indexOf(F);M>=h.length-1||(v(h,M,M+1),t({search:{...o.search,fields:h}}))}function v(c,F,h){let M=c[F];c[F]=c[h],c[h]=M}if(!e.visible)return null;let k=e.search.resourceType,T=Qm.types[k],g=o.search.fields??[],D=jm(T).filter(c=>!g.includes(c)).sort((c,F)=>c.localeCompare(F));return Q.createElement(Xm,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Q.createElement("div",null,Q.createElement("table",{style:{margin:"auto"}},Q.createElement("thead",null,Q.createElement("tr",null,Q.createElement("th",{colSpan:2,align:"center"},"Available"),Q.createElement("th",{colSpan:2,align:"center"},"Selected"))),Q.createElement("tbody",null,Q.createElement("tr",null,Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:c=>n(c),onDoubleClick:()=>f(),"data-testid":"available"},D.map(c=>Q.createElement("option",{key:c,value:c},he(c))))),Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:c=>l(c),onDoubleClick:()=>s(),"data-testid":"selected"},g.map(c=>Q.createElement("option",{key:c,value:c},he(c))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(_o,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(_o,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(_o,{compact:!0,variant:"outline",onClick:d},"Up")),Q.createElement("td",{align:"center"},Q.createElement(_o,{compact:!0,variant:"outline",onClick:m},"Down")))))),Q.createElement(_o,{onClick:()=>e.onOk(o.search)},"OK"))}function jm(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(he(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=he(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(he(a)))}return o}import{Button as Yo,Group as ap,Modal as np,NativeSelect as tl}from"@mantine/core";import{globalSchema as fp,stringify as rl}from"@medplum/core";import O,{useEffect as lp,useRef as nl,useState as xa}from"react";import{formatDateTime as _m,getSearchParameterDetails as Zm,globalSchema as Ym,Operator as ol,SearchParameterType as ep}from"@medplum/core";import Zo from"react";function Nt(e){let{resourceType:o,filter:t}=e,r=Ym.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===ol.EQUALS||t.operator===ol.NOT_EQUALS))return Zo.createElement(we,{value:{reference:t.value}});let a=Zm(o,r);if(t.code==="_lastUpdated"||a.type===ep.DATETIME)return Zo.createElement(Zo.Fragment,null,_m(t.value))}return Zo.createElement(Zo.Fragment,null,t.value)}import{Checkbox as op,TextInput as pa}from"@mantine/core";import{getSearchParameterDetails as tp,SearchParameterType as Bo}from"@medplum/core";import ro from"react";function Ht(e){let o=tp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Bo.REFERENCE:return ro.createElement(So,{name:t,defaultValue:{reference:e.defaultValue},targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Bo.BOOLEAN:return ro.createElement(op,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Bo.DATE:return ro.createElement(pa,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Bo.DATETIME:return ro.createElement(ke,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Bo.NUMBER:return ro.createElement(pa,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Bo.QUANTITY:return ro.createElement(Pe,{name:t,defaultValue:rp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return ro.createElement(pa,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function rp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function fl(e){let[o,t]=xa(JSON.parse(rl(e.search))),[r,a]=xa(-1),n=nl(o);n.current=o,lp(()=>{t(JSON.parse(rl(e.search)))},[e.search]);function f(u){t(ko(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=fp.types[l].searchParams??{},i=o.filters||[];return O.createElement(np,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},O.createElement("div",null,O.createElement("table",null,O.createElement("colgroup",null,O.createElement("col",{style:{width:200}}),O.createElement("col",{style:{width:200}}),O.createElement("col",{style:{width:380}}),O.createElement("col",{style:{width:120}})),O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"Field"),O.createElement("th",null,"Operation"),O.createElement("th",null,"Value"),O.createElement("th",null,"Actions"))),O.createElement("tbody",null,i.map((u,d)=>d===r?O.createElement(al,{key:`filter-${d}-${i.length}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:m=>{let v=[...i];v[d]=m,t(Ko(n.current,v)),a(-1)},onCancel:()=>a(-1)}):O.createElement(sp,{key:`filter-${d}-${i.length}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(qf(n.current,d))})),O.createElement(al,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),O.createElement(ap,{position:"right",mt:"xl"},O.createElement(Yo,{onClick:()=>e.onOk(n.current)},"OK")))}function sp(e){let{filter:o}=e;return O.createElement("tr",null,O.createElement("td",null,he(o.code)),O.createElement("td",null,jo(o.operator)),O.createElement("td",null,O.createElement(Nt,{resourceType:e.resourceType,filter:o})),O.createElement("td",null,O.createElement(Yo,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),O.createElement(Yo,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function al(e){let[o,t]=xa(e.defaultValue??{}),r=nl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&_f(l);return O.createElement("tr",null,O.createElement("td",null,O.createElement(tl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:Object.keys(e.searchParams).map(i=>({value:i,label:he(i)}))})),O.createElement("td",null,s&&O.createElement(tl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:jo(i)}))]})),O.createElement("td",null,l&&o.operator&&O.createElement(Ht,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),O.createElement("td",null,o.code&&o.operator&&o.value&&O.createElement(Yo,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&O.createElement(Yo,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as ip,Grid as Ia,Modal as up}from"@mantine/core";import ao,{useState as dp}from"react";function ll(e){let[o,t]=dp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return ao.createElement(up,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},ao.createElement(J,{onSubmit:r},ao.createElement(Ia,null,ao.createElement(Ia.Col,{span:10},ao.createElement(Ht,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),ao.createElement(Ia.Col,{span:2},ao.createElement(ip,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as se}from"@medplum/core";import p from"react";function sl(e){if(!e.searchParams)return null;function o(n,f){a(ma(e.search,n.code,f))}function t(n){a(Rt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?p.createElement(cp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},he(n.code))))}function cp(e){switch(e.searchParam.type){case"date":return p.createElement(mp,{...e});case"number":case"quantity":return p.createElement(pp,{...e});case"reference":return p.createElement(xp,{...e});case"string":case"token":case"uri":return p.createElement(Ip,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function mp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Ro,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(No,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(st,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(lt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(zf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Uf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Gf(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Qf(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Xf(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Wf(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Jf(e.search,t))},"Year to date"),p.createElement(Vt,{...e}))}function pp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Ro,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(No,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(lt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(st,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Vt,{...e}))}function xp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(Vt,{...e}))}function Ip(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Ro,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(No,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(uo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(dr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(ur,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),p.createElement(Vt,{...e}))}function Vt(e){let{searchParam:o}=e,t=o.code;return p.createElement(p.Fragment,null,p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(lr,{size:14}),onClick:()=>e.onChange(ca(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(fr,{size:14}),onClick:()=>e.onChange(ca(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(wr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as gp,globalSchema as hp}from"@medplum/core";function il(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(yp(o,r));return t}function yp(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=hp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=gp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ca=class extends Event{constructor(t){super("change");this.definition=t}},va=class extends Event{constructor(t){super("load");this.response=t}},no=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Bp=Cp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function Ap(e){let{classes:o}=Bp(),t=S(),[r,a]=ya(!1),[n,f]=ya(),{search:l,onLoad:s}=e,[i,u]=ya({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=kp(i);d.current=i;let m=l.total??"accurate";dl(()=>{f(void 0),t.search(l.resourceType,Dp({...l,total:m,fields:void 0})).then(C=>{u({...d.current,searchResponse:C}),s&&s(new va(C))}).catch(C=>{u({...d.current,searchResponse:void 0}),f(C)})},[t,l,m,s]);function v(C,W){C.stopPropagation();let ae=C.target.checked,ue={...d.current.selected};ae?ue[W]=!0:delete ue[W],u({...d.current,selected:ue})}function k(C){C.stopPropagation();let te=C.target.checked,ae={},ue=d.current.searchResponse;te&&ue?.entry&&ue.entry.forEach(Ze=>{Ze.resource?.id&&(ae[Ze.resource.id]=!0)}),u({...d.current,selected:ae})}function T(){let C=d.current;if(!C.searchResponse?.entry||C.searchResponse.entry.length===0)return!1;for(let W of C.searchResponse.entry)if(W.resource?.id&&!C.selected[W.resource.id])return!1;return!0}function g(C){e.onChange&&e.onChange(new Ca(C))}function D(C,W){ut(C.target)||C.button!==2&&(H(C),C.button!==1&&e.onClick&&e.onClick(new no(W,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new no(W,C)))}function c(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(dl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Tp.types[e.search.resourceType]))return P.createElement(qt,{style:{width:"100%",height:"100%"}},P.createElement(vp,null));let h=e.checkboxesEnabled,M=il(l),ge=l.resourceType,$=i.searchResponse,xe=$?.entry?.map(C=>C.resource),be="subtle",y="gray",L=16,He=window.innerWidth<768;return P.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&P.createElement(ga,{position:"apart",mb:"xl"},P.createElement(ga,{spacing:2},P.createElement(Ao,{compact:!0,variant:be,color:y,leftIcon:P.createElement(xr,{size:L}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),P.createElement(Ao,{compact:!0,variant:be,color:y,leftIcon:P.createElement(vr,{size:L}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&P.createElement(Ao,{compact:!0,variant:be,color:y,leftIcon:P.createElement(Cr,{size:L}),onClick:e.onNew},"New..."),!He&&c()&&P.createElement(Ao,{compact:!0,variant:be,color:y,leftIcon:P.createElement(Fr,{size:L}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!He&&e.onDelete&&P.createElement(Ao,{compact:!0,variant:be,color:y,leftIcon:P.createElement(Ho,{size:L}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!He&&e.onBulk&&P.createElement(Ao,{compact:!0,variant:be,color:y,leftIcon:P.createElement(sr,{size:L}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),$&&P.createElement(ha,{size:"xs",color:"dimmed"},Op(l,$.total),"-",Ep(l,$.total)," of"," ",`${m==="estimate"?"~":""}${$.total?.toLocaleString()}`)),P.createElement(bp,{className:o.table},P.createElement("thead",null,P.createElement("tr",null,h&&P.createElement("th",null,P.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:C=>k(C)})),M.map(C=>P.createElement("th",{key:C.name},P.createElement(ul,{shadow:"md",width:240,position:"bottom-end"},P.createElement(ul.Target,null,P.createElement(Pp,{className:o.control},P.createElement(ga,{position:"apart",noWrap:!0},P.createElement(ha,{weight:500,size:"sm"},he(C.name)),P.createElement(qt,{className:o.icon},P.createElement(nr,{size:14,stroke:1.5}))))),P.createElement(sl,{search:e.search,searchParams:C.searchParams,onPrompt:(W,te)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:te})},onChange:W=>{g(W)}}))))),!e.hideFilters&&P.createElement("tr",null,h&&P.createElement("th",null),M.map(C=>P.createElement("th",{key:C.name},C.searchParams&&P.createElement(Mp,{resourceType:ge,searchParams:C.searchParams,filters:e.search.filters}))))),P.createElement("tbody",null,xe?.map(C=>C&&P.createElement("tr",{key:C.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>D(W,C),onAuxClick:W=>D(W,C)},h&&P.createElement("td",null,P.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!i.selected[C.id],onChange:W=>v(W,C.id)})),M.map(W=>P.createElement("td",{key:W.name},Zf(C,W))))))),xe?.length===0&&P.createElement(Qe,null,P.createElement(qt,{style:{height:150}},P.createElement(ha,{size:"xl",color:"dimmed"},"No results"))),$?.total!==void 0&&$.total>0&&P.createElement(qt,{m:"md",p:"md"},P.createElement(Sp,{value:Fp(l),total:wp(l,$.total),onChange:C=>g($f(l,C)),getControlProps:C=>{switch(C){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&P.createElement("div",{"data-testid":"search-error"},P.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),P.createElement(el,{search:e.search,visible:d.current.fieldEditorVisible,onOk:C=>{g(C),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),P.createElement(fl,{search:e.search,visible:d.current.filterEditorVisible,onOk:C=>{g(C),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),P.createElement(Hf,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),P.createElement(ll,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?he(i.filterDialogSearchParam.code):"",resourceType:ge,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:C=>{g(ko(e.search,C.code,C.operator,C.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var vA=P.memo(Ap);function Mp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?P.createElement("span",null,"no filters"):P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement("div",{key:`filter-${r}-${o.length}`},jo(t.operator),"\xA0",P.createElement(Nt,{resourceType:e.resourceType,filter:t}))))}function Fp(e){return Math.floor((e.offset??0)/(e.count??Sa))+1}function wp(e,o){let t=e.count??Sa;return Math.ceil(o/t)}function Op(e,o){return Math.min(o,(e.offset??0)+1)}function Ep(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Sa))}function Vp(e){let o=S(),[t,r]=Gt(),[a,n]=Gt(),{query:f,fields:l}=e,[s,i]=Gt(),[u,d]=Gt({}),m=ml();m.current=s;let v=ml({});v.current=u,cl(()=>{n(void 0),o.graphql(f).then(i).catch(h=>n(Hp(h)))},[o,f]);function k(h,M){h.stopPropagation();let $=h.target.checked,Se={...v.current};$?Se[M]=!0:delete Se[M],d(Se)}function T(h){h.stopPropagation();let ge=h.target.checked,$={},Se=m.current?.data.ResourceList;ge&&Se&&Se.forEach(xe=>{xe.id&&($[xe.id]=!0)}),d($)}function g(){let h=m.current?.data.ResourceList;if(!h||h.length===0)return!1;for(let M of h)if(M.id&&!v.current[M.id])return!1;return!0}function D(h,M){ut(h.target)||(H(h),h.button!==1&&e.onClick&&e.onClick(new no(M,h)),h.button===1&&e.onAuxClick&&e.onAuxClick(new no(M,h)))}if(cl(()=>{o.requestSchema(e.resourceType).then(h=>{r({...h})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return oe.createElement(Rp,null);let F=e.checkboxesEnabled;return oe.createElement("div",{onContextMenu:h=>H(h),"data-testid":"search-control"},oe.createElement(Np,null,oe.createElement("thead",null,oe.createElement("tr",null,F&&oe.createElement("th",null,oe.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:g(),onChange:h=>T(h)})),l.map(h=>oe.createElement("th",{key:h.name},h.name)))),oe.createElement("tbody",null,s?.data.ResourceList.map(h=>h&&oe.createElement("tr",{key:h.id,"data-testid":"search-control-row",onClick:M=>D(M,h),onAuxClick:M=>D(M,h)},F&&oe.createElement("td",null,oe.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${h.id}`,checked:!!u[h.id],onChange:M=>k(M,h.id)})),l.map(M=>oe.createElement("td",{key:M.name},oe.createElement(Rf,{propertyType:M.propertyType,path:M.fhirPath,resource:h}))))))),s?.data.ResourceList.length===0&&oe.createElement("div",{"data-testid":"empty-search"},"No results"),a&&oe.createElement("div",{"data-testid":"search-error"},oe.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&oe.createElement(Lp,{onClick:()=>e.onBulk(Object.keys(v.current))},"Bulk..."))}var wA=oe.memo(Vp);import fo from"react";function je(e){return fo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},fo.createElement("title",null,"Medplum Logo"),fo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),fo.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),fo.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),fo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),fo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as qp}from"@mantine/core";import ba from"react";function Mo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ba.createElement(qp,{icon:ba.createElement(eo,{size:16}),color:"red"},o.map(t=>ba.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as Ut}from"@medplum/core";import Gp,{useCallback as Up}from"react";function XA(e){let o=Up((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return Gp.createElement(Ke,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Ut(t),sender:Ut(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Ut(t),operator:Ut(r),issued:new Date().toISOString(),content:a})})}import{Anchor as xl,Button as zp,createStyles as Wp,NativeSelect as Xp,Stack as Qp,TextInput as Da}from"@mantine/core";import{getReferenceString as Jp}from"@medplum/core";import N,{useEffect as pl,useRef as Il,useState as et}from"react";var gl=Wp(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function sM(e){let o=S(),t=X(e.value),[r,a]=et(void 0),[n,f]=et(),[l,s]=et(),[i,u]=et();function d(){s(void 0)}function m(){f(void 0)}let v=Il();if(v.current=i,pl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),pl(()=>(u(Yp(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",m)}),[t]),!r||!i)return null;function k(T,g){u({...v.current,[T]:g})}return N.createElement("div",null,N.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},N.createElement(Da,{label:"Plan Title",defaultValue:i.title,onChange:T=>k("title",T.currentTarget.value)}),N.createElement(hl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:T=>k("action",T)}),N.createElement(zp,{type:"submit"},"Save")))}function hl(e){let{classes:o}=gl(),t=Il();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return N.createElement("div",{className:o.section},e.actions.map(f=>N.createElement("div",{key:f.id},N.createElement($p,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),N.createElement("div",{className:o.bottomActions},N.createElement(xl,{href:"#",onClick:f=>{H(f),a({id:Cl()})}},"Add action")))}function $p(e){let{classes:o,cx:t}=gl(),{action:r}=e,a=Zp(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return N.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?N.createElement(jp,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):N.createElement(Kp,{action:r,actionType:a}),N.createElement("div",{className:o.bottomActions},N.createElement(xl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ta={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Kp(e){let{action:o,actionType:t}=e,[r,a]=yl(o);return N.createElement("div",null,N.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&N.createElement("div",null,N.createElement(to,{value:{reference:o.definitionCanonical}})),r&&N.createElement("div",null,N.createElement(de,{property:Ta,propertyType:a,value:r})))}function jp(e){let{action:o}=e,[t,r]=et(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return N.createElement(Qp,{spacing:"xl"},N.createElement(Da,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),N.createElement(Da,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),N.createElement(Xp,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&N.createElement(hl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return N.createElement(zt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return N.createElement(zt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return N.createElement(zt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return N.createElement(zt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),N.createElement(ve,{title:"Timing",description:"When the action should take place."},N.createElement(_p,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function zt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return N.createElement(kt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Jp(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function _p(e){let o=e.action,t="timing",[r,a]=yl(o);return N.createElement(Le,{property:Ta,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Xo(o,t,f??t,Ta,n))}})}function Zp(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function yl(e){return Ce({type:"PlanDefinitionAction",value:e},"timing")}var Pa=1;function Cl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Pa=Math.max(Pa,o+1))}return e}return"id-"+Pa++}function Yp(e){return{...e,action:vl(e.action)}}function vl(e){if(e)return e.map(o=>({...o,id:Cl(o.id),action:vl(o.action)}))}import{Anchor as tt,Button as gx,createStyles as hx,NativeSelect as yx,Textarea as Cx,TextInput as Ol,Title as vx}from"@mantine/core";import{globalSchema as Sx,isResource as bx}from"@medplum/core";import E,{useEffect as El,useRef as Px,useState as Qt}from"react";import{Button as ex,Checkbox as Bl,Group as ox,NativeSelect as tx,Radio as Pl,Stack as rx,Textarea as ax,TextInput as ot,Title as nx}from"@mantine/core";import{capitalize as Al,createReference as fx,deepEquals as lx,getQuestionnaireAnswers as sx,getReferenceString as Ml,getTypedPropertyValue as lo,globalSchema as ix,stringify as Dl}from"@medplum/core";import U,{useEffect as Tl,useState as Wt}from"react";var Sl=(D=>(D.group="group",D.display="display",D.question="question",D.boolean="boolean",D.decimal="decimal",D.integer="integer",D.date="date",D.dateTime="dateTime",D.time="time",D.string="string",D.text="text",D.url="url",D.choice="choice",D.openChoice="open-choice",D.attachment="attachment",D.reference="reference",D.quantity="quantity",D))(Sl||{});function bl(e){return e.type==="choice"||e.type==="open-choice"}function Fl(e){let o=S(),t=o.getProfile(),[r,a]=Wt(),n=X(e.questionnaire),[f,l]=Wt(),[s,i]=Wt({});Tl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Tl(()=>{l(n?cx(n):void 0)},[n]);function u(d){let m={resourceType:"QuestionnaireResponse",item:d};l(m),i(sx(m))}return!r||!n?null:U.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Ml(n),subject:e.subject,source:fx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&U.createElement(nx,null,n.title),n.item&&U.createElement(wl,{items:n.item,answers:s,onChange:u}),U.createElement(ox,{position:"right",mt:"xl"},U.createElement(ex,{type:"submit"},e.submitButtonText??"OK")))}function wl(e){let[o,t]=Wt(ka(e.items));function r(a,n){let f=o.slice();f[a]=n,t(f),e.onChange(f)}return U.createElement(rx,null,e.items.map((a,n)=>{if(!Ix(a,e.answers))return null;if(a.type==="display")return U.createElement("p",{key:a.linkId},a.text);if(a.type==="group")return U.createElement(Xt,{key:a.linkId,item:a,answers:e.answers,onChange:f=>r(n,f)});if(a.type==="boolean"){let f=a.initial&&a.initial.length>0?a.initial[0]:void 0;return U.createElement(vt,{key:a.linkId,title:a.text,htmlFor:a.linkId},U.createElement(Bl,{id:a.linkId,name:a.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r(n,{linkId:a.linkId,text:a.text,answer:[{valueBoolean:l.currentTarget.checked}]})}))}return U.createElement(ve,{key:a.linkId,htmlFor:a.linkId,title:a.text??""},U.createElement(Xt,{item:a,answers:e.answers,onChange:f=>r(n,f)}))}))}function Xt(e){let o=e.item,t=o.type;if(!t)return null;let r=o.linkId;if(!r)return null;let a=o.initial&&o.initial.length>0?o.initial[0]:void 0;function n(l){e.onChange({linkId:o.linkId,text:o.text,item:l})}function f(l){e.onChange({linkId:o.linkId,text:o.text,answer:[l]})}switch(t){case"group":return U.createElement("div",null,U.createElement("h3",null,o.text),o.item&&U.createElement(wl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return U.createElement(Bl,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return U.createElement(ot,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return U.createElement(ot,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return U.createElement(ot,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return U.createElement(ke,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return U.createElement(ot,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return U.createElement(ot,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return U.createElement(ax,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return U.createElement(pt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return U.createElement(So,{name:r,defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return U.createElement(Pe,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return xx(o)?U.createElement(ux,{name:r,item:o,initial:a,onChangeAnswer:f}):U.createElement(dx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function ux(e){let{name:o,item:t,initial:r}=e,a=lo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=lo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(kl(l))}return U.createElement(tx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=lo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Al(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:kl(a),data:n})}function kl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function dx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=ix.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=lo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],d=`${o}-option-${i}`,m=lo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Dl(m)===Dl(f)&&(s=d),l.push([d,m])}return U.createElement(Pl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(d=>d[0]===i);if(u){let d=u[1],m="value"+Al(d.type);a({[m]:d.value})}}},l.map(([i,u])=>U.createElement(Pl,{key:i,id:i,value:i,label:U.createElement(de,{property:n,propertyType:u.type,value:u.value})})))}function cx(e){return{resourceType:"QuestionnaireResponse",questionnaire:Ml(e),item:ka(e.item)}}function ka(e){return e?.map(mx)??[]}function mx(e){return{linkId:e.linkId,text:e.text,item:ka(e.item),answer:e.initial?.map(px)??[]}}function px(e){return{...e}}function xx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Ix(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=lo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),n=lo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),f=lx(a,n);if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}var Dx=hx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function UM(e){let o=S(),t=X(e.questionnaire),[r,a]=Qt(),[n,f]=Qt(),[l,s]=Qt(),[i,u]=Qt();function d(){u(void 0)}function m(){s(void 0)}return El(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),El(()=>(f(kx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",m)}),[t]),!r||!n?null:E.createElement("div",null,E.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},E.createElement(Rl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),E.createElement(gx,{type:"submit"},"Save")))}function Rl(e){let{classes:o,cx:t}=Dx(),r=e.item,a=e.item,n=bx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Px();u.current=e.item;function d(c){H(c),e.setSelectedKey(e.item.id)}function m(c){H(c),e.setHoverKey(e.item.id)}function v(c){let F=u.current;e.onChange({...F,item:F.item?.map(h=>h.id===c.id?c:h)})}function k(c){e.onChange({...e.item,item:[...e.item.item??[],c]})}function T(c){e.onChange({...e.item,item:e.item.item?.filter(F=>F!==c)})}function g(c,F){e.onChange({...u.current,[c]:F})}let D=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return E.createElement("div",{"data-testid":a.linkId,className:D,onClick:d,onMouseOver:m},E.createElement("div",{className:o.questionBody},s?E.createElement(E.Fragment,null,n&&E.createElement(Ol,{size:"xl",defaultValue:r.title,onChange:c=>g("title",c.currentTarget.value)}),!n&&E.createElement(Cx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:c=>g("text",c.currentTarget.value)}),bl(a)&&E.createElement(Tx,{options:a.answerOption,onChange:c=>g("answerOption",c)})):E.createElement(E.Fragment,null,r.title&&E.createElement(vx,null,r.title),a.text&&E.createElement("div",null,a.text),!f&&E.createElement(Xt,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(c=>E.createElement("div",{key:c.id},E.createElement(Rl,{item:c,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:v,onRemove:()=>T(c)}))),!f&&E.createElement("div",{className:o.topActions},s?E.createElement(E.Fragment,null,E.createElement(Ol,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:c=>g("linkId",c.currentTarget.value)}),!f&&E.createElement(yx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:c=>g("type",c.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):E.createElement("div",null,l)),E.createElement("div",{className:o.bottomActions},f&&E.createElement(E.Fragment,null,E.createElement(tt,{href:"#",onClick:c=>{c.preventDefault(),k({id:Fo(),linkId:Ll("q"),type:"string",text:"Question"})}},"Add item"),E.createElement(tt,{href:"#",onClick:c=>{c.preventDefault(),k({id:Fo(),linkId:Ll("g"),type:"group",text:"Group"})}},"Add group")),s&&!n&&E.createElement(tt,{href:"#",onClick:c=>{c.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Tx(e){let o=Sx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return E.createElement("div",null,t.map(r=>{let[a,n]=Ce({type:"QuestionnaireItemAnswerOption",value:r},"value");return E.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},E.createElement("div",null,E.createElement(Le,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),E.createElement("div",null,E.createElement(tt,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),E.createElement(tt,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:Fo()}])}},"Add choice"))}var Ba=1,Aa=1;function Ll(e){return e+Ba++}function Fo(){return"id-"+Aa++}function kx(e){return{...e,id:e.id||Fo(),item:Nl(e.item)}}function Nl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Aa=Math.max(Aa,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ba=Math.max(Ba,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Fo(),item:Nl(o.item),answerOption:Bx(o.answerOption)}))}function Bx(e){if(e)return e.map(o=>({...o,id:o.id||Fo()}))}import{ActionIcon as Jt,Button as Ax,createStyles as Mx,Divider as Fx,Group as rt,NativeSelect as Hl,Stack as $t,Text as wx,TextInput as Ox}from"@mantine/core";import{formatRange as Vl,getCodeBySystem as Ex}from"@medplum/core";import z,{useEffect as Lx,useState as Ma}from"react";var Rx=Mx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),Nx=["gender","age","gestationalAge","context","appliesTo"],Hx={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function ZM(e){e=Object.assign(Hx,e);let o=e.definition,[t,r]=Ma([]),[a,n]=Ma(1),[f,l]=Ma(1);return Lx(()=>{let k=Gx(o,l);r(Ux(k.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement($t,null,t.map(k=>z.createElement(Vx,{unit:Wx(o.quantitativeDetails?.unit),onChange:d,onAdd:m,onRemove:v,onRemoveGroup:u,key:`group-${k.id}`,intervalGroup:k}))),z.createElement(Jt,{title:"Add Group",size:"sm",onClick:k=>{H(k),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(T=>T+1)}},z.createElement(io,null)),z.createElement(rt,{position:"right"},z.createElement(Ax,{type:"submit"},"Save")));function s(){let k=t.flatMap(T=>T.intervals).filter(T=>!Xx(T));e.onSubmit({...o,qualifiedInterval:k})}function i(k){r(T=>[...T,k])}function u(k){r(T=>T.filter(g=>g.id!==k.id))}function d(k,T){r(g=>{g=[...g];let D=g.find(F=>F.id===k),c=D?.intervals.findIndex(F=>F.id===T.id);return c!==void 0&&D?.intervals[c]&&(D.intervals[c]=T),g})}function m(k,T){T.id===void 0&&(T.id=`id-${f}`,l(g=>g+1)),r(g=>{g=[...g];let D=g.findIndex(c=>c.id===k);if(D!==-1){let c={...g[D]};T={...T,...c.filters},c.intervals=[...c.intervals,T],g[D]=c}return g})}function v(k,T){r(g=>{g=[...g];let D=g.find(c=>c.id===k);return D&&(D.intervals=D.intervals.filter(c=>c.id!==T.id)),g})}}function Vx(e){let{intervalGroup:o,unit:t}=e,{classes:r}=Rx();return z.createElement(Qe,{"data-testid":o.id,className:r.section},z.createElement($t,{spacing:"lg"},z.createElement(rt,{position:"right"},z.createElement(Jt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ge,null))),z.createElement(qx,{intervalGroup:o,onChange:e.onChange}),z.createElement(Fx,null),o.intervals.map(a=>z.createElement($t,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(rt,null,z.createElement(Ox,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(Jt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ge,null))),z.createElement(Jo,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(Jt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(io,null))))}function qx(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement($t,{style:{maxWidth:"50%"}},z.createElement(rt,null,z.createElement(Hl,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(rt,{spacing:"xs"},z.createElement(wx,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(Jo,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Hl,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function Gx(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function Ux(e,o){let t=1,r={};for(let a of e){let n=zx(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Nx.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function zx(e){return[`gender=${e.gender}`,`age=${Vl(e.age)}`,`gestationalAge=${Vl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`].join(":")}function Wx(e){return e&&(Ex(e,"http://unitsofmeasure.org")||e.text)}function Xx(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as ql,Grid as Kt,Text as Qx}from"@mantine/core";import{formatDateTime as Jx,getReferenceString as $x}from"@medplum/core";import pe,{useEffect as Kx,useState as Gl}from"react";function sF(e){let o=S(),t=X(e.value),[r,a]=Gl(!1),[n,f]=Gl();if(Kx(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return pe.createElement(Kt,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),m=d?.input?.[0]?.valueReference,v=d?.output?.[0]?.valueReference;return pe.createElement(pe.Fragment,{key:`action-${u}`},pe.createElement(Kt.Col,{span:1,p:"md"},d?.status==="completed"?pe.createElement(mr,null):pe.createElement(Ar,{color:"gray"})),pe.createElement(Kt.Col,{span:9,p:"xs"},pe.createElement(Qx,{weight:500},i.title),i.description&&pe.createElement("div",null,i.description),pe.createElement("div",null,"Last edited by\xA0",pe.createElement(we,{value:d?.meta?.author}),"\xA0on\xA0",Jx(d?.meta?.lastUpdated)),pe.createElement("div",null,"Status: ",pe.createElement(Mt,{status:d?.status||"unknown"}))),pe.createElement(Kt.Col,{span:2,p:"md"},m&&!v&&pe.createElement(ql,{onClick:()=>e.onStart(d,m)},"Start"),m&&v&&pe.createElement(ql,{onClick:()=>e.onEdit(d,m,v)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===$x(u.resource))return u.resource}}import{createStyles as tI}from"@mantine/core";import ye,{useEffect as rI,useState as aI}from"react";import{stringify as Yx}from"@medplum/core";function jt(e,o){let t=jx(e,o);return _x(t,e,o)}function jx(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,m=u-1,v=l[d],k=l[m],T,g=0;i===-s||i!==s&&k.i<v.i?(g=v.i,T=v):(g=k.i+1,T=k),l[m]=void 0;let D=g-i,c={i:g,j:D,prev:Zx(T),snake:!1};for(;g<t&&D<r&&e[g]===o[D];)g++,D++;if(g>c.i&&(c={i:g,j:D,prev:c,snake:!0}),l[u]=c,g>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function _x(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function Zx(e){return e&&!e.snake&&e.prev?e.prev:e}function Ul(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:Yx(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return eI(t,o),oI(t),t}function eI(e,o){for(let t=1;t<o.length;t++){let r=jt(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function oI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var nI=tI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function CF(e){let{classes:o}=nI(),t=S(),[r,a]=aI(e.history);if(rI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ye.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource,f=Ul(r);return ye.createElement("div",{className:o.container},ye.createElement("table",{className:o.root},ye.createElement("tbody",null,f.map((l,s)=>ye.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ye.createElement(ye.Fragment,null,ye.createElement("td",{className:o.author,rowSpan:l.span},ye.createElement(Je,{value:l.meta.author,link:!0})),ye.createElement("td",{className:o.dateTime,rowSpan:l.span},ye.createElement(ne,{to:fI(n,l.meta.versionId)},lI(l.meta.lastUpdated)))),ye.createElement("td",{className:o.lineNumber},s+1),ye.createElement("td",{className:o.line},ye.createElement("pre",{className:o.pre},l.value)))))))}function fI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function lI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return wo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return wo(r,"month");let a=Math.floor(o/86400);if(a>0)return wo(a,"day");let n=Math.floor(o/3600);if(n>0)return wo(n,"hour");let f=Math.floor(o/60);return f>0?wo(f,"minute"):wo(o,"second")}function wo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as sI}from"@mantine/core";import{stringify as zl}from"@medplum/core";import _e from"react";var iI=sI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function kF(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=zl(o,!0).match(/[^\r\n]+/g),a=zl(t,!0).match(/[^\r\n]+/g),n=jt(r,a);return _e.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>_e.createElement(uI,{key:"delta"+l,delta:f})))}function uI(e){let{classes:o}=iI();return _e.createElement(_e.Fragment,null,"...",_e.createElement("br",null),e.delta.original.lines.length>0&&_e.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
66
66
|
`)),e.delta.revised.lines.length>0&&_e.createElement("div",{className:o.added},e.delta.revised.lines.join(`
|
|
67
|
-
`)),"...",_e.createElement("br",null))}import{Table as sI}from"@mantine/core";import{formatDateTime as iI,normalizeErrorString as uI}from"@medplum/core";import ue,{useEffect as dI,useState as cI}from"react";function MO(e){let o=v(),[t,r]=cI(e.history);return dI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ue.createElement(sI,{withBorder:!0,withColumnBorders:!0},ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Author"),ue.createElement("th",null,"Date"),ue.createElement("th",null,"Version"))),ue.createElement("tbody",null,t.entry?.map((a,n)=>ue.createElement(mI,{key:"entry-"+n,entry:a})))):ue.createElement("div",null,"Loading...")}function mI(e){let{response:o,resource:t}=e.entry;return t?ue.createElement("tr",null,ue.createElement("td",null,ue.createElement(Je,{value:t.meta?.author,link:!0})),ue.createElement("td",null,iI(t.meta?.lastUpdated)),ue.createElement("td",null,ue.createElement(fe,{to:pI(t)},t.meta?.versionId))):ue.createElement("tr",null,ue.createElement("td",{colSpan:3},uI(o?.outcome)))}function pI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as xI,createStyles as II,Stack as gI,Text as hI}from"@mantine/core";import{getReferenceString as yI}from"@medplum/core";import _,{useEffect as CI,useRef as vI,useState as at}from"react";var SI=II(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function GO(e){let{classes:o}=SI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=at(),l=vI();l.current=n;let[s,i]=at(ea()),[u,c]=at(),[d,k]=at(),[T,S]=at();if(CI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",yI(r)],["start","gt"+bI(s)],["start","lt"+PI(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let g=r.actor?.[0];return _.createElement("div",{className:o.container,"data-testid":"scheduler"},_.createElement("div",{className:o.info},g&&_.createElement(Ie,{value:g,size:"xl"}),g&&_.createElement(hI,{size:"xl",weight:500},_.createElement(we,{value:g})),_.createElement("p",null,"1 hour"),u&&_.createElement("p",null,u.toLocaleDateString()),d&&_.createElement("p",null,zl(new Date(d.start)))),_.createElement("div",{className:o.selection},!u&&_.createElement("div",null,_.createElement("h3",null,"Select date"),_.createElement(pf,{slots:n,onChangeMonth:i,onClick:c})),u&&!d&&_.createElement("div",null,_.createElement("h3",null,"Select time"),_.createElement(gI,null,n.map(D=>{let m=new Date(D.start);return m.getTime()>u.getTime()&&m.getTime()<u.getTime()+24*3600*1e3&&_.createElement("div",{key:D.id},_.createElement(xI,{variant:"outline",style:{width:150},onClick:()=>k(D)},zl(m)))}))),u&&d&&!T&&_.createElement(Ml,{questionnaire:a,submitButtonText:"Next",onSubmit:S}),u&&d&&T&&_.createElement("div",null,_.createElement("h3",null,"You're all set!"),_.createElement("p",null,"Check your email for a calendar invite."))))}function bI(e){return Wl(e.getTime())}function PI(e){return Wl(e.getTime()+31*24*60*60*1e3)}function Wl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function zl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as _t}from"@medplum/core";import DI from"react";function $O(e){return DI.createElement(Ke,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[_t(o)],subject:o.subject,sender:_t(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[_t(o)],subject:o.subject,operator:_t(t),issued:new Date().toISOString(),content:r})})}import rr,{useEffect as XI,useState as _l}from"react";import{Anchor as Xl,Button as TI,Center as kI,Group as BI,Stack as AI,Text as MI,TextInput as OI,Title as wI}from"@mantine/core";import Be,{useState as FI}from"react";function Zt(e){let o=v(),[t,r]=FI();return Be.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(n)}}},Be.createElement(kI,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(wI,null,"Create project")),Be.createElement(AI,{spacing:"xl"},Be.createElement(OI,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Be.createElement(MI,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Be.createElement(Xl,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Be.createElement(Xl,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Be.createElement(BI,{position:"right",mt:"xl",noWrap:!0},Be.createElement(TI,{type:"submit"},"Create project")))}import{Anchor as tr,Button as NI,Center as HI,Checkbox as VI,Divider as qI,Group as $l,PasswordInput as GI,Stack as UI,Text as Kl,TextInput as Oa}from"@mantine/core";import j,{useEffect as zI,useState as WI}from"react";import EI,{useEffect as LI,useRef as RI,useState as Ma}from"react";function Yt(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o||null,t.appendChild(r)}function er(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=RI(null),[n,f]=Ma(typeof google<"u"),[l,s]=Ma(!1),[i,u]=Ma(!1);return LI(()=>{if(typeof google>"u"){Yt("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?EI.createElement("div",{ref:a}):null}function or(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function Ql(e){typeof grecaptcha>"u"&&Yt("https://www.google.com/recaptcha/api.js?render="+e)}function Jl(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function jl(e){let o=or(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=WI(),f=bt(a,void 0);return zI(()=>{t&&Ql(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await Jl(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(s)}}},j.createElement(HI,{sx:{flexDirection:"column"}},e.children),j.createElement(Bo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement($l,{position:"center",p:"xl",style:{height:70}},j.createElement(er,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(s)}}})),j.createElement(qI,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(UI,{spacing:"xl"},j.createElement(Oa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(Oa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(Oa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(GI,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(Kl,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(tr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(tr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(Kl,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(tr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(tr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement($l,{position:"apart",mt:"xl",noWrap:!0},j.createElement(VI,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(NI,{type:"submit"},"Create account")))}function Pw(e){let{type:o,projectId:t,googleClientId:r,recaptchaSiteKey:a,onSuccess:n}=e,f=v(),[l,s]=_l(void 0),[i,u]=_l();XI(()=>{o==="patient"&&l&&f.startNewPatient({login:l,projectId:t}).then(d=>f.processCode(d.code)).then(()=>n()).catch(d=>u(d))},[f,o,t,l,n]);function c(d){d.code?f.processCode(d.code).then(()=>n()).catch(console.log):d.login&&s(d.login)}return rr.createElement(Et,{width:450},i&&rr.createElement("pre",null,JSON.stringify(i,null,2)),!l&&rr.createElement(jl,{projectId:t,googleClientId:r,recaptchaSiteKey:a,handleAuthResponse:c},e.children),l&&o==="project"&&rr.createElement(Zt,{login:l,handleAuthResponse:c}))}import{showNotification as is}from"@mantine/notifications";import{normalizeErrorString as us}from"@medplum/core";import fo,{useCallback as Fa,useEffect as vg,useState as Ea}from"react";import{Anchor as Zl,Button as Yl,Center as es,Checkbox as QI,Divider as JI,Group as wa,PasswordInput as $I,Stack as KI,TextInput as jI}from"@mantine/core";import{normalizeOperationOutcome as _I}from"@medplum/core";import K,{useCallback as ar,useState as os}from"react";function ts(e){let[o,t]=os();return o?K.createElement(YI,{email:o,...e}):K.createElement(ZI,{setEmail:t,...e})}function ZI(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,...n}=e,f=v(),l=!e.disableGoogleAuth&&or(e.googleClientId),s=ar(async c=>{if(!c.authorizeUrl)return!1;let d=JSON.stringify({...await f.ensureCodeChallenge(n),domain:c.domain}),k=new URL(c.authorizeUrl);return k.searchParams.set("state",d),window.location.assign(k.toString()),!0},[f,n]),i=ar(async c=>{let d=await f.post("auth/method",{email:c.email});await s(d)||o(c.email)},[f,s,o]),u=ar(async c=>{let d=await f.startGoogleLogin({...n,googleCredential:c.credential});await s(d)||r(d)},[f,n,s,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(es,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(wa,{position:"center",p:"xl",style:{height:70}},K.createElement(er,{googleClientId:l,handleGoogleCredential:u})),K.createElement(JI,{label:"or",labelPosition:"center",my:"lg"})),K.createElement(jI,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(wa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(Zl,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),K.createElement(Yl,{type:"submit"},"Next")))}function YI(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=os(),s=bt(f,void 0),i=ar(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(c=>l(_I(c)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(es,{sx:{flexDirection:"column"}},r),K.createElement(Bo,{issues:s}),K.createElement(KI,{spacing:"xl"},K.createElement($I,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(wa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(Zl,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(QI,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(Yl,{type:"submit"},"Sign in")))}import{Avatar as eg,Center as og,Group as tg,Stack as rg,Text as rs,Title as ag,UnstyledButton as ng}from"@mantine/core";import{normalizeOperationOutcome as fg}from"@medplum/core";import Ae,{useState as lg}from"react";function as(e){let o=v(),[t,r]=lg();return Ae.createElement(rg,null,Ae.createElement(og,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(ag,{order:3},"Choose profile")),Ae.createElement(Bo,{outcome:t}),e.memberships.map(a=>Ae.createElement(ng,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(fg(n)))}},Ae.createElement(tg,null,Ae.createElement(eg,{radius:"xl"}),Ae.createElement("div",{style:{flex:1}},Ae.createElement(rs,{size:"sm",weight:500},a.profile?.display),Ae.createElement(rs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as sg,Center as ig,Checkbox as ug,Group as dg,Stack as ns,Title as cg}from"@mantine/core";import Ne from"react";function fs(e){let o=v();return Ne.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ne.createElement(ns,null,Ne.createElement(ig,{sx:{flexDirection:"column"}},Ne.createElement(je,{size:32}),Ne.createElement(cg,null,"Choose scope")),Ne.createElement(ns,null,(e.scope||"openid").split(" ").map(t=>Ne.createElement(ug,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ne.createElement(dg,{position:"right",mt:"xl"},Ne.createElement(sg,{type:"submit"},"Set scope"))))}import{Alert as mg,Button as pg,Center as xg,Group as Ig,Stack as ls,TextInput as gg,Title as hg}from"@mantine/core";import{normalizeErrorString as yg}from"@medplum/core";import Me,{useState as Cg}from"react";function ss(e){let o=v(),[t,r]=Cg(void 0);return Me.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(yg(n)))}},Me.createElement(ls,null,Me.createElement(xg,{sx:{flexDirection:"column"}},Me.createElement(je,{size:32}),Me.createElement(hg,null,"Enter MFA code")),t&&Me.createElement(mg,{icon:Me.createElement(Ye,{size:16}),title:"Error",color:"red"},t),Me.createElement(ls,null,Me.createElement(gg,{name:"token",label:"MFA code",required:!0})),Me.createElement(Ig,{position:"right",mt:"xl"},Me.createElement(pg,{type:"submit"},"Submit code"))))}function CF(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=Ea(void 0),[c,d]=Ea(!1),[k,T]=Ea(void 0),S=Fa(m=>{f?f(m):s.processCode(m).then(()=>{r&&r()}).catch(O=>is({color:"red",message:us(O)}))},[s,f,r]),g=Fa(m=>{d(!!m.mfaRequired),m.login&&u(m.login),m.memberships&&T(m.memberships),m.code&&(t?T(void 0):S(m.code))},[t,S]),D=Fa(m=>{S(m.code)},[S]);return vg(()=>{o&&!i&&s.get("auth/login/"+o).then(g).catch(m=>is({color:"red",message:us(m)}))},[s,o,i,g]),fo.createElement(Et,{width:450},(()=>i?c?fo.createElement(ss,{login:i,handleAuthResponse:g}):k?fo.createElement(as,{login:i,memberships:k,handleAuthResponse:g}):e.projectId==="new"?fo.createElement(Zt,{login:i,handleAuthResponse:g}):e.chooseScopes?fo.createElement(fs,{login:i,scope:e.scope,handleAuthResponse:D}):fo.createElement("div",null,"Success"):fo.createElement(ts,{onForgotPassword:a,onRegister:n,handleAuthResponse:g,disableGoogleAuth:e.disableGoogleAuth,...l},e.children))())}export{Ra as AddressDisplay,qa as AddressInput,za as AnnotationInput,$v as AppShell,ct as AsyncAutocomplete,yn as AttachmentArrayDisplay,vn as AttachmentArrayInput,Io as AttachmentButton,Oe as AttachmentDisplay,xt as AttachmentInput,Go as BackboneElementDisplay,Wo as BackboneElementInput,pf as CalendarInput,St as CheckboxFormSection,pt as CodeInput,ho as CodeableConceptDisplay,Gn as CodeableConceptInput,kn as CodingDisplay,Un as CodingInput,An as ContactDetailDisplay,Wn as ContactDetailInput,gt as ContactPointDisplay,Dt as ContactPointInput,Qe as Container,ke as DateTimeInput,Mk as DefaultResourceTimeline,bn as DescriptionList,Pn as DescriptionListEntry,aa as DiagnosticReportDisplay,Et as Document,rc as ElementDefinitionInputSelector,df as ElementDefinitionTypeInput,Uk as EncounterTimeline,co as ErrorBoundary,Rp as FhirPathTable,J as Form,Ce as FormSection,mn as Header,ut as HumanNameDisplay,Jn as HumanNameInput,Mn as IdentifierDisplay,Kn as IdentifierInput,Er as Loading,je as Logo,fe as MedplumLink,Mg as MedplumProvider,kA as MemoizedFhirPathTable,IA as MemoizedSearchControl,wn as MoneyDisplay,jn as MoneyInput,hn as Navbar,Vc as ObservationTable,Bo as OperationOutcomeAlert,So as Panel,qA as PatientTimeline,rM as PlanDefinitionBuilder,qo as QuantityDisplay,Pe as QuantityInput,NM as QuestionnaireBuilder,Ml as QuestionnaireForm,Xt as QuestionnaireFormItem,vl as QuestionnaireItemType,ht as RangeDisplay,Xo as RangeInput,oo as ReferenceDisplay,Co as ReferenceInput,JM as ReferenceRangeEditor,Rx as ReferenceRangeGroupEditor,Pw as RegisterForm,rO as RequestGroupDisplay,Rn as ResourceArrayDisplay,af as ResourceArrayInput,Ie as ResourceAvatar,Je as ResourceBadge,xO as ResourceBlame,SO as ResourceDiff,Wb as ResourceForm,MO as ResourceHistoryTable,Bt as ResourceInput,we as ResourceName,ce as ResourcePropertyDisplay,Le as ResourcePropertyInput,na as ResourceTable,Ke as ResourceTimeline,GO as Scheduler,ya as SearchChangeEvent,ro as SearchClickEvent,Tp as SearchControl,Yf as SearchFieldEditor,nl as SearchFilterEditor,Ca as SearchLoadEvent,$O as ServiceRequestTimeline,CF as SignInForm,Ot as StatusBadge,Tf as Timeline,$e as TimelineItem,uf as TimingInput,da as addDateFilterBetween,nB as addField,Do as addFilter,zf as addLastMonthFilter,ca as addMissingFilter,Xf as addNextMonthFilter,Wf as addThisMonthFilter,Gf as addTodayFilter,Uf as addTomorrowFilter,Qf as addYearToDateFilter,qf as addYesterdayFilter,ve as buildFieldNameString,aB as clearFilters,Rt as clearFiltersOnField,od as convertIsoToLocal,td as convertLocalToIso,Yt as createScriptTag,Vf as deleteFilter,me as getErrorsForInput,bt as getIssuesForExpression,cc as getMonthString,Ko as getOpString,Jl as getRecaptcha,jf as getSearchOperators,$f as getSortField,ea as getStartMonth,aI as getTimeString,ye as getValueAndType,Ql as initRecaptcha,Sl as isChoiceQuestion,mx as isQuestionEnabled,Kf as isSortDescending,pn as parseForm,_f as renderValue,$o as setFilters,Vm as setOffset,Jf as setPage,zo as setPropertyValue,ma as setSort,Af as sortByDateAndPriority,fB as toggleSort,v as useMedplum,wo as useMedplumContext,qe as useMedplumNavigate,ft as useMedplumProfile,X as useResource};
|
|
67
|
+
`)),"...",_e.createElement("br",null))}import{Table as dI}from"@mantine/core";import{formatDateTime as cI,normalizeErrorString as mI}from"@medplum/core";import ie,{useEffect as pI,useState as xI}from"react";function LF(e){let o=S(),[t,r]=xI(e.history);return pI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ie.createElement(dI,{withBorder:!0,withColumnBorders:!0},ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Author"),ie.createElement("th",null,"Date"),ie.createElement("th",null,"Version"))),ie.createElement("tbody",null,t.entry?.map((a,n)=>ie.createElement(II,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function II(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Je,{value:t.meta?.author,link:!0})),ie.createElement("td",null,cI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:gI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},mI(o?.outcome)))}function gI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as hI,createStyles as yI,Stack as CI,Text as vI}from"@mantine/core";import{getReferenceString as SI}from"@medplum/core";import Z,{useEffect as bI,useRef as PI,useState as at}from"react";var DI=yI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function QF(e){let{classes:o}=DI(),t=S(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=at(),l=PI();l.current=n;let[s,i]=at(ea()),[u,d]=at(),[m,v]=at(),[k,T]=at();if(bI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",SI(r)],["start","gt"+TI(s)],["start","lt"+kI(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let g=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},g&&Z.createElement(Ie,{value:g,size:"xl"}),g&&Z.createElement(vI,{size:"xl",weight:500},Z.createElement(we,{value:g})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),m&&Z.createElement("p",null,Wl(new Date(m.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(xf,{slots:n,onChangeMonth:i,onClick:d})),u&&!m&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(CI,null,n.map(D=>{let c=new Date(D.start);return c.getTime()>u.getTime()&&c.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:D.id},Z.createElement(hI,{variant:"outline",style:{width:150},onClick:()=>v(D)},Wl(c)))}))),u&&m&&!k&&Z.createElement(Fl,{questionnaire:a,submitButtonText:"Next",onSubmit:T}),u&&m&&k&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function TI(e){return Xl(e.getTime())}function kI(e){return Xl(e.getTime()+31*24*60*60*1e3)}function Xl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Wl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as _t}from"@medplum/core";import BI from"react";function YF(e){return BI.createElement(Ke,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[_t(o)],subject:o.subject,sender:_t(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[_t(o)],subject:o.subject,operator:_t(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as KI}from"@medplum/core";import rr,{useEffect as jI,useState as Yl}from"react";import{Anchor as Ql,Button as AI,Center as MI,Group as FI,Stack as wI,Text as OI,TextInput as EI,Title as LI}from"@mantine/core";import{normalizeOperationOutcome as RI}from"@medplum/core";import Be,{useState as NI}from"react";function Zt(e){let o=S(),[t,r]=NI();return Be.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(RI(n))}}},Be.createElement(MI,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(LI,null,"Create project")),Be.createElement(wI,{spacing:"xl"},Be.createElement(EI,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:ce(t,"firstName")}),Be.createElement(OI,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Be.createElement(Ql,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Be.createElement(Ql,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Be.createElement(FI,{position:"right",mt:"xl",noWrap:!0},Be.createElement(AI,{type:"submit"},"Create project")))}import{Anchor as tr,Button as GI,Center as UI,Checkbox as zI,Divider as WI,Group as Kl,PasswordInput as XI,Stack as QI,Text as jl,TextInput as wa}from"@mantine/core";import{normalizeOperationOutcome as _l}from"@medplum/core";import _,{useEffect as JI,useState as $I}from"react";import HI,{useEffect as VI,useRef as qI,useState as Fa}from"react";function Yt(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function er(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=qI(null),[n,f]=Fa(typeof google<"u"),[l,s]=Fa(!1),[i,u]=Fa(!1);return VI(()=>{if(typeof google>"u"){Yt("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?HI.createElement("div",{ref:a}):null}function or(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function Jl(e){typeof grecaptcha>"u"&&Yt("https://www.google.com/recaptcha/api.js?render="+e)}function $l(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function Zl(e){let o=or(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=$I(),f=St(a,void 0);return JI(()=>{t&&Jl(t)},[t]),_.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await $l(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(_l(s))}}},_.createElement(UI,{sx:{flexDirection:"column"}},e.children),_.createElement(Mo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(Kl,{position:"center",p:"xl",style:{height:70}},_.createElement(er,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(_l(s))}}})),_.createElement(WI,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(QI,{spacing:"xl"},_.createElement(wa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:ce(a,"firstName")}),_.createElement(wa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:ce(a,"lastName")}),_.createElement(wa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:ce(a,"email")}),_.createElement(XI,{name:"password",label:"Password",autoComplete:"off",required:!0,error:ce(a,"password")}),_.createElement(jl,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(tr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(tr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(jl,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(tr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(tr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(Kl,{position:"apart",mt:"xl",noWrap:!0},_.createElement(zI,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(GI,{type:"submit"},"Create account")))}function Rw(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=Yl(void 0),[u,d]=Yl();jI(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(v=>l.processCode(v.code)).then(()=>f()).catch(v=>d(KI(v)))},[l,o,t,s,f]);function m(v){v.code?l.processCode(v.code).then(()=>f()).catch(console.log):v.login&&i(v.login)}return rr.createElement(Ot,{width:450},u&&rr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&rr.createElement(Zl,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:m},e.children),s&&o==="project"&&rr.createElement(Zt,{login:s,handleAuthResponse:m}))}import{showNotification as ds}from"@mantine/notifications";import{normalizeErrorString as cs}from"@medplum/core";import so,{useCallback as Ea,useEffect as Tg,useState as La}from"react";import{Anchor as es,Button as os,Center as ts,Checkbox as _I,Divider as ZI,Group as Oa,PasswordInput as YI,Stack as eg,TextInput as og}from"@mantine/core";import{normalizeOperationOutcome as tg}from"@medplum/core";import j,{useCallback as ar,useState as rs}from"react";function as(e){let[o,t]=rs();return o?j.createElement(ag,{email:o,...e}):j.createElement(rg,{setEmail:t,...e})}function rg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,...n}=e,f=S(),l=!e.disableGoogleAuth&&or(e.googleClientId),s=ar(async d=>{if(!d.authorizeUrl)return!1;let m=JSON.stringify({...await f.ensureCodeChallenge(n),domain:d.domain}),v=new URL(d.authorizeUrl);return v.searchParams.set("state",m),window.location.assign(v.toString()),!0},[f,n]),i=ar(async d=>{let m=await f.post("auth/method",{email:d.email});await s(m)||o(d.email)},[f,s,o]),u=ar(async d=>{let m=await f.startGoogleLogin({...n,googleCredential:d.credential});await s(m)||r(m)},[f,n,s,r]);return j.createElement(J,{style:{maxWidth:400},onSubmit:i},j.createElement(ts,{sx:{flexDirection:"column"}},a),l&&j.createElement(j.Fragment,null,j.createElement(Oa,{position:"center",p:"xl",style:{height:70}},j.createElement(er,{googleClientId:l,handleGoogleCredential:u})),j.createElement(ZI,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(og,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(Oa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(es,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),j.createElement(os,{type:"submit"},"Next")))}function ag(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=rs(),s=St(f,void 0),i=ar(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(tg(d)))},[n,a,t]);return j.createElement(J,{style:{maxWidth:400},onSubmit:i},j.createElement(ts,{sx:{flexDirection:"column"}},r),j.createElement(Mo,{issues:s}),j.createElement(eg,{spacing:"xl"},j.createElement(YI,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:ce(f,"password")})),j.createElement(Oa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(es,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(_I,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(os,{type:"submit"},"Sign in")))}import{Avatar as ng,Center as fg,Group as lg,Stack as sg,Text as ns,Title as ig,UnstyledButton as ug}from"@mantine/core";import{normalizeOperationOutcome as dg}from"@medplum/core";import Ae,{useState as cg}from"react";function fs(e){let o=S(),[t,r]=cg();return Ae.createElement(sg,null,Ae.createElement(fg,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(ig,{order:3},"Choose profile")),Ae.createElement(Mo,{outcome:t}),e.memberships.map(a=>Ae.createElement(ug,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(dg(n)))}},Ae.createElement(lg,null,Ae.createElement(ng,{radius:"xl"}),Ae.createElement("div",{style:{flex:1}},Ae.createElement(ns,{size:"sm",weight:500},a.profile?.display),Ae.createElement(ns,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as mg,Center as pg,Checkbox as xg,Group as Ig,Stack as ls,Title as gg}from"@mantine/core";import Ne from"react";function ss(e){let o=S();return Ne.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ne.createElement(ls,null,Ne.createElement(pg,{sx:{flexDirection:"column"}},Ne.createElement(je,{size:32}),Ne.createElement(gg,null,"Choose scope")),Ne.createElement(ls,null,(e.scope??"openid").split(" ").map(t=>Ne.createElement(xg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ne.createElement(Ig,{position:"right",mt:"xl"},Ne.createElement(mg,{type:"submit"},"Set scope"))))}import{Alert as hg,Button as yg,Center as Cg,Group as vg,Stack as is,TextInput as Sg,Title as bg}from"@mantine/core";import{normalizeErrorString as Pg}from"@medplum/core";import Me,{useState as Dg}from"react";function us(e){let o=S(),[t,r]=Dg(void 0);return Me.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(Pg(n)))}},Me.createElement(is,null,Me.createElement(Cg,{sx:{flexDirection:"column"}},Me.createElement(je,{size:32}),Me.createElement(bg,null,"Enter MFA code")),t&&Me.createElement(hg,{icon:Me.createElement(eo,{size:16}),title:"Error",color:"red"},t),Me.createElement(is,null,Me.createElement(Sg,{name:"token",label:"MFA code",required:!0})),Me.createElement(vg,{position:"right",mt:"xl"},Me.createElement(yg,{type:"submit"},"Submit code"))))}function wO(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=La(void 0),[d,m]=La(!1),[v,k]=La(void 0),T=Ea(c=>{f?f(c):s.processCode(c).then(()=>{r&&r()}).catch(F=>ds({color:"red",message:cs(F)}))},[s,f,r]),g=Ea(c=>{m(!!c.mfaRequired),c.login&&u(c.login),c.memberships&&k(c.memberships),c.code&&(t?k(void 0):T(c.code))},[t,T]),D=Ea(c=>{T(c.code)},[T]);return Tg(()=>{o&&!i&&s.get("auth/login/"+o).then(g).catch(c=>ds({color:"red",message:cs(c)}))},[s,o,i,g]),so.createElement(Ot,{width:450},(()=>i?d?so.createElement(us,{login:i,handleAuthResponse:g}):v?so.createElement(fs,{login:i,memberships:v,handleAuthResponse:g}):e.projectId==="new"?so.createElement(Zt,{login:i,handleAuthResponse:g}):e.chooseScopes?so.createElement(ss,{login:i,scope:e.scope,handleAuthResponse:D}):so.createElement("div",null,"Success"):so.createElement(as,{onForgotPassword:a,onRegister:n,handleAuthResponse:g,disableGoogleAuth:e.disableGoogleAuth,...l},e.children))())}export{Na as AddressDisplay,Ga as AddressInput,Wa as AnnotationInput,Yv as AppShell,dt as AsyncAutocomplete,Cn as AttachmentArrayDisplay,Sn as AttachmentArrayInput,ho as AttachmentButton,Fe as AttachmentDisplay,pt as AttachmentInput,zo as BackboneElementDisplay,Qo as BackboneElementInput,xf as CalendarInput,vt as CheckboxFormSection,mt as CodeInput,Co as CodeableConceptDisplay,Un as CodeableConceptInput,Bn as CodingDisplay,zn as CodingInput,Mn as ContactDetailDisplay,Xn as ContactDetailInput,It as ContactPointDisplay,Pt as ContactPointInput,Qe as Container,ke as DateTimeInput,Lk as DefaultResourceTimeline,Pn as DescriptionList,Dn as DescriptionListEntry,aa as DiagnosticReportDisplay,Ot as Document,fc as ElementDefinitionInputSelector,cf as ElementDefinitionTypeInput,Jk as EncounterTimeline,po as ErrorBoundary,Vp as FhirPathTable,J as Form,ve as FormSection,pn as Header,it as HumanNameDisplay,$n as HumanNameInput,Fn as IdentifierDisplay,jn as IdentifierInput,Er as Loading,je as Logo,ne as MedplumLink,Lg as MedplumProvider,wA as MemoizedFhirPathTable,vA as MemoizedSearchControl,On as MoneyDisplay,_n as MoneyInput,yn as Navbar,Uc as ObservationTable,Mo as OperationOutcomeAlert,Po as Panel,XA as PatientTimeline,sM as PlanDefinitionBuilder,Uo as QuantityDisplay,Pe as QuantityInput,UM as QuestionnaireBuilder,Fl as QuestionnaireForm,Xt as QuestionnaireFormItem,Sl as QuestionnaireItemType,gt as RangeDisplay,Jo as RangeInput,to as ReferenceDisplay,So as ReferenceInput,ZM as ReferenceRangeEditor,Vx as ReferenceRangeGroupEditor,Rw as RegisterForm,sF as RequestGroupDisplay,Nn as ResourceArrayDisplay,nf as ResourceArrayInput,Ie as ResourceAvatar,Je as ResourceBadge,CF as ResourceBlame,kF as ResourceDiff,Kb as ResourceForm,LF as ResourceHistoryTable,kt as ResourceInput,we as ResourceName,de as ResourcePropertyDisplay,Le as ResourcePropertyInput,na as ResourceTable,Ke as ResourceTimeline,QF as Scheduler,Ca as SearchChangeEvent,no as SearchClickEvent,Ap as SearchControl,el as SearchFieldEditor,fl as SearchFilterEditor,va as SearchLoadEvent,YF as ServiceRequestTimeline,wO as SignInForm,Mt as StatusBadge,kf as Timeline,$e as TimelineItem,df as TimingInput,da as addDateFilterBetween,uB as addField,ko as addFilter,Wf as addLastMonthFilter,ca as addMissingFilter,Qf as addNextMonthFilter,Xf as addThisMonthFilter,Uf as addTodayFilter,zf as addTomorrowFilter,Jf as addYearToDateFilter,Gf as addYesterdayFilter,he as buildFieldNameString,iB as clearFilters,Rt as clearFiltersOnField,ad as convertIsoToLocal,nd as convertLocalToIso,Yt as createScriptTag,qf as deleteFilter,ce as getErrorsForInput,St as getIssuesForExpression,xc as getMonthString,jo as getOpString,$l as getRecaptcha,_f as getSearchOperators,Kf as getSortField,ea as getStartMonth,lI as getTimeString,Ce as getValueAndType,Jl as initRecaptcha,bl as isChoiceQuestion,Ix as isQuestionEnabled,jf as isSortDescending,xn as parseForm,Zf as renderValue,Ko as setFilters,Um as setOffset,$f as setPage,Xo as setPropertyValue,ma as setSort,Mf as sortByDateAndPriority,dB as toggleSort,S as useMedplum,Eo as useMedplumContext,qe as useMedplumNavigate,nt as useMedplumProfile,X as useResource};
|
|
68
68
|
//# sourceMappingURL=index.mjs.map
|