@medplum/react 2.0.31 → 2.0.32
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/esm/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{formatAddress as bs}from"@medplum/core";import Wa from"react";function Xa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,bs(o)):null}import{Group as Ds,NativeSelect as Qa,TextInput as qo}from"@mantine/core";import Ve,{useRef as Ts,useState as ks}from"react";function Ja(e,o){return e.line&&e.line.length>o?e.line[o]:""}function $a(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ka(e){let[o,t]=ks(e.defaultValue||{}),r=Ts();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a($a(r.current||{},0,c))}function s(c){a($a(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function m(c){a({...r.current,postalCode:c})}return Ve.createElement(Ds,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Qa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Qa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(qo,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>m(c.currentTarget.value)}))}import{TextInput as Ls}from"@mantine/core";import{createReference as Rs}from"@medplum/core";import Ns,{useRef as Hs,useState as Vs}from"react";import{showNotification as Bs}from"@mantine/notifications";import As,{createContext as Fs,useContext as Ms,useEffect as ja,useMemo as ws,useState as Os}from"react";var _a=Fs(void 0);function nh(e){let o=e.medplum,t=e.navigate??Es,[r,a]=Os({profile:o.getProfile(),loading:!1});ja(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ja(()=>{function f(){Bs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=ws(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return As.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Ms(_a)}function v(){return Uo().medplum}function qe(){return Uo().navigate}function mt(){return Uo().profile}function Es(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Vs(e.defaultValue||{}),a=Hs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Rs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Ns.createElement(Ls,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Iu,useMantineTheme as gu}from"@mantine/core";import to,{Suspense as hu,useState as Cu}from"react";import{Alert as Qs}from"@mantine/core";import{normalizeErrorString as Js}from"@medplum/core";import{forwardRef as qs,createElement as en}from"react";import eo from"prop-types";var Ya={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 Us=Object.defineProperty,Gs=Object.defineProperties,zs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?Us(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,tn=(e,o)=>{for(var t in o||(o={}))rn.call(o,t)&&on(e,t,o[t]);if(pt)for(var t of pt(o))an.call(o,t)&&on(e,t,o[t]);return e},Ws=(e,o)=>Gs(e,zs(o)),Xs=(e,o)=>{var t={};for(var r in e)rn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&an.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=qs((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,m=Xs(f,["color","size","stroke","children"]);return en("svg",tn(Ws(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),m),[...t.map(([c,h])=>en(c,h)),...u||[]])});return r.propTypes={color:eo.string,size:eo.oneOfType([eo.string,eo.number]),stroke:eo.oneOfType([eo.string,eo.number])},r.displayName=`${o}`,r};var cr=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 oo=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 mr=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 pr=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 xr=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 gr=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 hr=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 Ee=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 Go=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Cr=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 yr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=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 co=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var zo=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 vr=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 Sr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Pr=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 br=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 Dr=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 mo=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 po=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Tr=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 kr=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 Br=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 Ar=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 Fr=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 xt=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 Mr=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 wr=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 Or=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 Er=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Lr=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Rr=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 xo=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 Wo=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 Xo=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 Nr=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 Hr=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 Vr=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 Qo=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 qr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Ur from"react";var Io=class extends Ur.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?Ur.createElement(Qs,{icon:Ur.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Js(this.state.error)):this.props.children}};import{Center as $s,Loader as Ks}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement($s,{style:{width:"100%",height:"100vh"}},nn.createElement(Ks,null))}import{Avatar as wi,createStyles as Oi,Group as Ct,Header as Ei,Menu as Le,Stack as Li,Text as Jo,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Ri,getReferenceString as vn}from"@medplum/core";import G,{useState as Ni}from"react";import{formatHumanName as js}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,js(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ui,getImageSrc as di}from"@medplum/core";import zr from"react";import{Anchor as _s}from"@mantine/core";import{isReference as Zs,isResource as Ys}from"@medplum/core";import ei from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(ln(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&ln(o[0]))return!0}return!1}function ln(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=oi(t);return r&&(s+="/"+r),ei.createElement(_s,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function oi(e){if(e){if(typeof e=="string")return ti(e);if(Ys(e))return ri(e);if(Zs(e))return ai(e)}return"#"}function ti(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ri(e){return`/${e.resourceType}/${e.id}`}function ai(e){return`/${e.reference}`}import{deepEquals as ni,isReference as dn,isResource as fi,normalizeOperationOutcome as li}from"@medplum/core";import{useCallback as si,useEffect as sn,useState as ii}from"react";function X(e,o){let t=v(),[r,a]=ii(un(t,e)),n=si(f=>{ni(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return dn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(li(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(fi(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?ui(o):e.alt??"",r=(o&&di(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?zr.createElement(ne,{to:o},zr.createElement(cn,{src:r,alt:t,radius:a,...n})):zr.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as hi,Group as Ci,Text as pn}from"@mantine/core";import{formatHumanName as yi,getDisplayString as hn,getReferenceString as vi,isUUID as Si}from"@medplum/core";import Ge,{forwardRef as Pi,useCallback as xn}from"react";import{Loader as ci,MultiSelect as mi}from"@mantine/core";import mn,{useCallback as go,useEffect as pi,useRef as ho,useState as Co}from"react";import{showNotification as xi}from"@mantine/notifications";import{normalizeErrorString as Ii}from"@medplum/core";function yo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=gi(o),u=ho(null),[m,c]=Co(void 0),[h,P]=Co(),[k,I]=Co(),[b,d]=Co(),[w,y]=Co(i.map(r)),[O,Ie]=Co([]),ge=ho();ge.current=m;let ue=ho();ue.current=h;let Y=ho();Y.current=k;let No=ho();No.current=b;let C=ho();C.current=O;let N=go(()=>{P(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;I(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),I(void 0),No.current&&(de.length>0&&n(de.slice(0,1)),d(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||xi({color:"red",message:Ii(de)})})},[a,n,r]),Te=go(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);P(_)},[N]),he=go(_=>{let ae=[],de=[];for(let Ho of _){let ct=C.current?.find(Ps=>Ps.value===Ho),Vo=ct?.resource;!Vo&&l!==!1&&f&&(Vo=f(Ho),ct=r(Vo)),Vo&&ae.push(Vo),ct&&de.push(ct)}n(ae),y(de)},[l,n,f,r]),Ye=go(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),C.current&&C.current.length>0&&(Ie(C.current.slice(0,1)),he([C.current[0].value]))):d(!0))},[he]),D=go(_=>{let ae=r(f(_));return Ie([...C.current,ae]),ae},[f,Ie,r]),W=go((_,ae)=>!ae,[]);return pi(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(mi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...w,...O],onFocus:N,onChange:he,onCreate:D,rightSectionWidth:40,rightSection:k?mn.createElement(ci,{size:16}):null,filter:W,creatable:!0})}function gi(e){return e?Array.isArray(e)?e:[e]:[]}var bi=hi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Di(e){return e.id}function Ti(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=bi(),t=qe(),r=v(),a=xn(async(f,l)=>{let s=Bi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Ai(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${vi(f[0])}`)},[t]);return Ge.createElement(yo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Rr,{size:16}),placeholder:"Search",itemComponent:ki,toKey:Di,toOption:Ti,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var ki=Pi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ge.createElement("div",{ref:t,...o},Ge.createElement(Ci,{noWrap:!0},Ge.createElement(Ce,{value:e}),Ge.createElement("div",null,Ge.createElement(pn,null,hn(e)),Ge.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Bi(e){let o=JSON.stringify(e);return Si(e)?`{
|
|
1
|
+
import{formatAddress as Ts}from"@medplum/core";import Wa from"react";function Qa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,Ts(o)):null}import{Group as ks,NativeSelect as Xa,TextInput as Go}from"@mantine/core";import qe,{useRef as Bs,useState as As}from"react";function Ja(e,o){return e.line&&e.line.length>o?e.line[o]:""}function $a(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ka(e){let[o,t]=As(e.defaultValue||{}),r=Bs();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a($a(r.current||{},0,c))}function s(c){a($a(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return qe.createElement(ks,{spacing:"xs",grow:!0,noWrap:!0},qe.createElement(Xa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),qe.createElement(Xa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),qe.createElement(Go,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Ns}from"@mantine/core";import{createReference as Hs}from"@medplum/core";import Vs,{useRef as qs,useState as Gs}from"react";import{showNotification as Fs}from"@mantine/notifications";import Ms,{createContext as ws,useContext as Os,useEffect as ja,useMemo as Es,useState as Ls}from"react";var _a=ws(void 0);function mh(e){let o=e.medplum,t=e.navigate??Rs,[r,a]=Ls({profile:o.getProfile(),loading:!1});ja(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ja(()=>{function f(){Fs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Es(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ms.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Os(_a)}function S(){return Uo().medplum}function Ge(){return Uo().navigate}function mt(){return Uo().profile}function Rs(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Gs(e.defaultValue||{}),a=qs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Hs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Vs.createElement(Ns,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as hu,useMantineTheme as Cu}from"@mantine/core";import to,{Suspense as yu,useState as vu}from"react";import{Alert as $s}from"@mantine/core";import{normalizeErrorString as Ks}from"@medplum/core";import{forwardRef as Us,createElement as en}from"react";import eo from"prop-types";var Ya={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 zs=Object.defineProperty,Ws=Object.defineProperties,Qs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?zs(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,tn=(e,o)=>{for(var t in o||(o={}))rn.call(o,t)&&on(e,t,o[t]);if(pt)for(var t of pt(o))an.call(o,t)&&on(e,t,o[t]);return e},Xs=(e,o)=>Ws(e,Qs(o)),Js=(e,o)=>{var t={};for(var r in e)rn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&an.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Us((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=Js(f,["color","size","stroke","children"]);return en("svg",tn(Xs(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,y])=>en(c,y)),...u||[]])});return r.propTypes={color:eo.string,size:eo.oneOfType([eo.string,eo.number]),stroke:eo.oneOfType([eo.string,eo.number])},r.displayName=`${o}`,r};var dr=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 oo=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 cr=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 mr=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 pr=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 xr=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 Ir=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 gr=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 Ee=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 zo=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var hr=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 Cr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=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 mo=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var Wo=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 yr=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 vr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Sr=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 Pr=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 br=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 po=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 xo=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Dr=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 Tr=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 kr=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 Br=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 Ar=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 xt=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 Fr=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 Mr=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 wr=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 Or=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Er=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Lr=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 Io=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 Qo=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 Xo=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 Rr=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 Nr=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 Hr=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 Jo=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 Vr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import qr from"react";var go=class extends qr.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?qr.createElement($s,{icon:qr.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Ks(this.state.error)):this.props.children}};import{Center as js,Loader as _s}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement(js,{style:{width:"100%",height:"100vh"}},nn.createElement(_s,null))}import{Avatar as Ei,createStyles as Li,Group as Ct,Header as Ri,Menu as Le,Stack as Ni,Text as $o,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Hi,getReferenceString as vn}from"@medplum/core";import U,{useState as Vi}from"react";import{formatHumanName as Zs}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,Zs(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ci,getImageSrc as mi}from"@medplum/core";import Ur from"react";import{Anchor as Ys}from"@mantine/core";import{isReference as ei,isResource as oi}from"@medplum/core";import ti from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(ln(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&ln(o[0]))return!0}return!1}function ln(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=Ge(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=ri(t);return r&&(s+="/"+r),ti.createElement(Ys,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function ri(e){if(e){if(typeof e=="string")return ai(e);if(oi(e))return ni(e);if(ei(e))return fi(e)}return"#"}function ai(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ni(e){return`/${e.resourceType}/${e.id}`}function fi(e){return`/${e.reference}`}import{deepEquals as li,isReference as dn,isResource as si,normalizeOperationOutcome as ii}from"@medplum/core";import{useCallback as ui,useEffect as sn,useState as di}from"react";function Q(e,o){let t=S(),[r,a]=di(un(t,e)),n=ui(f=>{li(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return dn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(ii(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(si(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=Q(e.value),t=o?ci(o):e.alt??"",r=(o&&mi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Ur.createElement(ne,{to:o},Ur.createElement(cn,{src:r,alt:t,radius:a,...n})):Ur.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as yi,Group as vi,Text as pn}from"@mantine/core";import{formatHumanName as Si,getDisplayString as hn,getReferenceString as Pi,isUUID as bi}from"@medplum/core";import ze,{forwardRef as Di,useCallback as xn}from"react";import{Loader as pi,MultiSelect as xi}from"@mantine/core";import mn,{useCallback as ho,useEffect as Ii,useRef as Co,useState as yo}from"react";import{showNotification as gi}from"@mantine/notifications";import{normalizeErrorString as hi}from"@medplum/core";function vo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=Ci(o),u=Co(null),[d,c]=yo(void 0),[y,b]=yo(),[A,I]=yo(),[D,p]=yo(),[g,C]=yo(i.map(r)),[O,Ie]=yo([]),ge=Co();ge.current=d;let ue=Co();ue.current=y;let Y=Co();Y.current=A;let Ho=Co();Ho.current=D;let v=Co();v.current=O;let N=ho(()=>{b(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;I(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),I(void 0),Ho.current&&(de.length>0&&n(de.slice(0,1)),p(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||gi({color:"red",message:hi(de)})})},[a,n,r]),Te=ho(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);b(_)},[N]),he=ho(_=>{let ae=[],de=[];for(let Vo of _){let ct=v.current?.find(Ds=>Ds.value===Vo),qo=ct?.resource;!qo&&l!==!1&&f&&(qo=f(Vo),ct=r(qo)),qo&&ae.push(qo),ct&&de.push(ct)}n(ae),C(de)},[l,n,f,r]),Ye=ho(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),v.current&&v.current.length>0&&(Ie(v.current.slice(0,1)),he([v.current[0].value]))):p(!0))},[he]),T=ho(_=>{let ae=r(f(_));return Ie([...v.current,ae]),ae},[f,Ie,r]),W=ho((_,ae)=>!ae,[]);return Ii(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(xi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...g,...O],onFocus:N,onChange:he,onCreate:T,rightSectionWidth:40,rightSection:A?mn.createElement(pi,{size:16}):null,filter:W,creatable:!0})}function Ci(e){return e?Array.isArray(e)?e:[e]:[]}var Ti=yi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ki(e){return e.id}function Bi(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=Ti(),t=Ge(),r=S(),a=xn(async(f,l)=>{let s=Fi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Mi(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${Pi(f[0])}`)},[t]);return ze.createElement(vo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:ze.createElement(Lr,{size:16}),placeholder:"Search",itemComponent:Ai,toKey:ki,toOption:Bi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Ai=Di(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),ze.createElement("div",{ref:t,...o},ze.createElement(vi,{noWrap:!0},ze.createElement(Ce,{value:e}),ze.createElement("div",null,ze.createElement(pn,null,hn(e)),ze.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Fi(e){let o=JSON.stringify(e);return bi(e)?`{
|
|
2
2
|
Patients1: PatientList(_id: ${o}, _count: 1) {
|
|
3
3
|
resourceType
|
|
4
4
|
id
|
|
@@ -61,8 +61,8 @@ import{formatAddress as bs}from"@medplum/core";import Wa from"react";function Xa
|
|
|
61
61
|
display
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
}`.replace(/\s+/g," ")}function Ai(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),Mi(Fi(t),o).slice(0,5)}function Fi(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 Mi(e,o){return e.sort((t,r)=>In(r,o)-In(t,o))}function In(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,gn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,gn(yi(r),o));return t}function gn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Hi=Oi(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 Sn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Hi(),[s,i]=Ni(!1);return G.createElement(Ei,{height:60,p:8,style:{zIndex:101}},G.createElement(Ct,{position:"apart"},G.createElement(Ct,{spacing:"xs"},G.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),G.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),G.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},G.createElement(Le.Target,null,G.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},G.createElement(Ct,{spacing:7},G.createElement(Ce,{value:r,radius:"xl",size:24}),G.createElement(Jo,{size:"sm",className:f.userName},Ri(r?.name?.[0])),G.createElement(yr,{size:12,stroke:1.5})))),G.createElement(Le.Dropdown,null,G.createElement(Li,{align:"center",p:"xl"},G.createElement(Ce,{size:"xl",radius:100,value:o.profile}),G.createElement(gt,{value:o.profile?.name?.[0]}),G.createElement(Jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&G.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&G.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},G.createElement(Ct,null,G.createElement(wi,{radius:"xl"}),G.createElement("div",{style:{flex:1}},G.createElement(Jo,{size:"sm",weight:500},u.profile.display),G.createElement(Jo,{color:"dimmed",size:"xs"},u.project.display))))),G.createElement(Le.Divider,null),G.createElement(Le.Item,{icon:G.createElement(Hr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),G.createElement(Le.Item,{icon:G.createElement(xo,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),G.createElement(Le.Item,{icon:G.createElement(Fr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),G.createElement(Jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as fu,createStyles as lu,Navbar as Xr,ScrollArea as su,Space as iu,Text as uu}from"@mantine/core";import re,{useState as du}from"react";import{Button as Gi,Group as zi,Modal as Wi,NativeSelect as Xi,Stack as Qi,TextInput as Ji}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as $i,normalizeErrorString as Ki}from"@medplum/core";import ze from"react";import Ui from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Vi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&qi(o,t);return o}function Vi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function qi(e,o){e[o.name]=o.value}function J(e){return Ui.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 Dn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=$i(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"}),bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{bn({color:"red",message:Ki(u)})})}return ze.createElement(Wi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(Qi,null,ze.createElement(ji,{config:t}),ze.createElement(Ji,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(zi,{position:"right"},ze.createElement(Gi,{mt:"sm",type:"submit"},"OK")))))}function ji(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Xi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import tu,{useState as ru}from"react";import _i,{useCallback as Zi}from"react";function Wr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Yi(e){return typeof e.display=="string"?e.display:Wr(e)}function eu(e){return{value:Wr(e),label:Yi(e),resource:e}}function ou(e){return{code:e,display:e}}function vo(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Zi(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,m=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let h of m)h.code&&!c.some(P=>P.code===h.code)&&c.push(h);return c},[o,t]);return _i.createElement(yo,{...n,creatable:r??!0,clearable:a??!0,toKey:Wr,toOption:eu,loadOptions:f,onCreate:ou,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=ru(e.defaultValue);function r(a){let n=a[0],f=nu(n);t(f),e.onChange&&e.onChange(f)}return tu.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:au(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function au(e){return e?{code:e}:void 0}function nu(e){return e?.code}var Tn=lu(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 kn(e){let{classes:o}=Tn(),t=qe(),r=pu(e.pathname,e.searchParams,e.menus),[a,n]=du(!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(Xr,{width:{sm:250},p:"xs"},re.createElement(su,null,re.createElement(Xr.Section,{mb:"sm"},re.createElement(yt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Xr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(uu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(cu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(mu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(fu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Er,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Dn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function cu(e){let{classes:o,cx:t}=Tn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function mu(e){return e.icon?e.icon:re.createElement(iu,{w:30})}function pu(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=xu(e,o,f.href);l>a&&(a=l,r=f)}return r}function xu(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 AS(e){let o=gu(),[t,r]=Cu(localStorage.navbarOpen==="true"),a=v(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?to.createElement(Gr,null):to.createElement(Iu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&to.createElement(Sn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?to.createElement(kn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},to.createElement(Io,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(hu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as yu}from"@mantine/core";import We from"react";function we(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(yu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Bn(e){return Qr.createElement("div",null,e.values?.map((o,t)=>Qr.createElement("div",{key:"attatchment-"+t},Qr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as An}from"@mantine/core";import fe,{useRef as Su,useState as Pu}from"react";import Jr,{useRef as vu}from"react";function So(e){let o=v(),t=vu(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 Jr.createElement(Jr.Fragment,null,Jr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Fn(e){let[o,t]=Pu(e.defaultValue??[]),r=Su();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(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(An,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(So,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(zo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import Po,{useState as bu}from"react";function vt(e){let[o,t]=bu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Po.createElement(Po.Fragment,null,Po.createElement(we,{value:o,maxWidth:200}),Po.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Po.createElement(So,{onUpload:r},a=>Po.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as zu,globalSchema as Wu}from"@medplum/core";import _o from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Du}from"@mantine/core";import $o from"react";var Tu=Du(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 wn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Tu();return $o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return $o.createElement($o.Fragment,null,$o.createElement("dt",null,e.term),$o.createElement("dd",null,e.children))}import{formatDateTime as Eu,formatPeriod as Lu,formatTiming as Ru,getElementDefinitionTypeName as Nu,getTypedPropertyValue as Hu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as ku}from"@medplum/core";import En from"react";function bo(e){return En.createElement(En.Fragment,null,ku(e.value))}import{formatCoding as Bu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Bu(e.value))}import $r from"react";import Nn from"react";function Pt(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("]")),Nn.createElement(Nn.Fragment,null,t.join("").trim())}function Hn(e){let o=e.value;return o?$r.createElement($r.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>$r.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Au from"react";function Vn(e){return Au.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Fu}from"@medplum/core";import qn from"react";function Un(e){return qn.createElement(qn.Fragment,null,Fu(e.value))}import{formatQuantity as Mu}from"@medplum/core";import Gn from"react";function Ko(e){return Gn.createElement(Gn.Fragment,null,Mu(e.value))}import{formatRange as wu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,wu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(Ko,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(Ko,{value:o.denominator})):null}import{stringify as Ou}from"@medplum/core";import Kr from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ou(e.value);return e.link!==!1&&e.value.reference?Kr.createElement(ne,{to:e.value},o):Kr.createElement(Kr.Fragment,null,o)}import Tt from"react";function Xn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Vu,Box as qu,CopyButton as Uu,Tooltip as Gu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(qu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Uu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Gu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Vu,{color:n?"teal":"gray",onClick:f},n?E.createElement(Go,{size:"1rem"}):E.createElement(Sr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Xn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ro,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Eu(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Xa,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(we,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(bo,{value:r});case V.Coding:return E.createElement(Rn,{value:r});case V.ContactDetail:return E.createElement(Hn,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Vn,{value:r});case V.Money:return E.createElement(Un,{value:r});case V.Period:return E.createElement(E.Fragment,null,Lu(r));case V.Quantity:case V.Duration:return E.createElement(Ko,{value:r});case V.Range:return E.createElement(bt,{value:r});case V.Ratio:return E.createElement(Wn,{value:r});case V.Reference:return E.createElement(ro,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Ru(r));case V.Dosage:case V.UsageContext:return E.createElement(jo,{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 E.createElement(jo,{value:{type:Nu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=Hu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function jo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Wu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?_o.createElement("div",null,t.name):_o.createElement(wn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(St.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:_o.createElement(On,{key:f,term:zu(f)},_o.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):_o.createElement("div",null,r,"\xA0not implemented")}import{Stack as bc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as Dc}from"@medplum/core";import ko,{useState as Tc}from"react";import{Group as Xu,Input as Qu}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Xu,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement(Qu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ju}from"@mantine/core";import $u from"react";function me(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
-
`)}function At(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))}function Qn(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 Pe(e){return $u.createElement(Ju.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Jn,Group as Ku,Stack as ju,TextInput as $n}from"@mantine/core";import{capitalize as _u,deepClone as Zu}from"@medplum/core";import ke,{useEffect as Yu,useState as Kn}from"react";function kb(e){let o=v(),t=X(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return Yu(()=>{t&&(f(Zu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(ju,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement($n,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement($n,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(Yo,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(Ku,{position:"right",mt:"xl"},ke.createElement(Jn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(Jn,{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]",_u(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as xc,Group as Ic,NativeSelect as gc,Textarea as hc,TextInput as aa}from"@mantine/core";import{capitalize as Cc,getElementDefinitionTypeName as yc,PropertyType as L}from"@medplum/core";import U,{useState as vc}from"react";import ed,{useState as od}from"react";function jn(e){let[o,t]=od(e.defaultValue);function r(a){let n=rd(a);t(n),e.onChange&&e.onChange(n)}return ed.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&td(o),maxSelectedValues:1,onChange:r})}function td(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function rd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import ad,{useState as nd}from"react";function _n(e){let[o,t]=nd(e.defaultValue);function r(a){let n=a[0],f=n&&ld(n);t(f),e.onChange&&e.onChange(f)}return ad.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&fd(o),maxSelectedValues:1,onChange:r})}function fd(e){return{system:e.system,code:e.code,display:e.display}}function ld(e){return{system:e.system,code:e.code,display:e.display}}import{Group as cd,TextInput as md}from"@mantine/core";import jr,{useRef as pd,useState as xd}from"react";import{Group as sd,NativeSelect as Zn,TextInput as id}from"@mantine/core";import Ft,{useRef as ud,useState as dd}from"react";function Mt(e){let[o,t]=dd(e.defaultValue),r=ud();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 Ft.createElement(sd,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(Zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(id,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=xd(e.defaultValue),r=pd();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 jr.createElement(cd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(md,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),jr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Id}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import gd from"react";function Be(e){return gd.createElement(Id,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:yd(),defaultValue:hd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Cd(t))}}})}function hd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Cd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function yd(){return"datetime-local"}import{JsonInput as vd}from"@mantine/core";import{stringify as Sd}from"@medplum/core";import Pd from"react";function of(e){return Pd.createElement(vd,{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 bd,NativeSelect as Dd,TextInput as wt}from"@mantine/core";import Do,{useRef as Td,useState as kd}from"react";function tf(e){let[o,t]=kd(e.defaultValue),r=Td();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 Do.createElement(bd,{spacing:"xs",grow:!0,noWrap:!0},Do.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"]}),Do.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),Do.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Bd,TextInput as rf}from"@mantine/core";import _r,{useState as Ad}from"react";function af(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(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),_r.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Fd,TextInput as Md}from"@mantine/core";import Zr,{useCallback as Yr,useState as wd}from"react";var Od=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=wd(e.defaultValue),a=Yr(s=>{r(s),o&&o(s)},[o]),n=Yr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Yr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Zr.createElement(Fd,{defaultValue:t?.currency,data:Od,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Zr.createElement(Md,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Zr.createElement(Pr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Ed}from"@mantine/core";import ea,{useState as Ld}from"react";function ff(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),ea.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Rd,NativeSelect as Nd,TextInput as lf}from"@mantine/core";import Ot,{useState as Hd}from"react";function be(e){let[o,t]=Hd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Nd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ot.createElement(lf,{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:Vd(a.currentTarget.value)})}}),Ot.createElement(lf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Vd(e){if(e)return parseFloat(e)}import{Group as qd}from"@mantine/core";import oa,{useState as Ud}from"react";function et(e){let[o,t]=Ud(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(qd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),oa.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Gd}from"@mantine/core";import ta,{useState as zd}from"react";function sf(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ta.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Yd,NativeSelect as ec,TextInput as oc}from"@mantine/core";import{createReference as tc}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Wd,Text as uf}from"@mantine/core";import{getDisplayString as Xd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as Qd,useCallback as df,useState as Jd}from"react";var $d={Observation:"code",User:"email:contains"},Kd=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function jd(e){return{value:cf(e),label:Xd(e),resource:e}}function Et(e){let o=v(),t=e.resourceType,[r,a]=Jd(),n=X(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let m=Zd(t),c=new URLSearchParams({[m]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=df(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:ao.createElement(yo,{name:e.name,itemComponent:_d,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:jd,loadOptions:l,onChange:s,clearable:!0})}var _d=Qd(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Wd,{noWrap:!0},ao.createElement(Ce,{value:o}),ao.createElement("div",null,ao.createElement(uf,null,e),ao.createElement(uf,{size:"xs",color:"dimmed"},o.birthDate)))));function Zd(e){return $d[e]??(Kd.includes(e)?"name":"_id")}function To(e){let o=rc(e.targetTypes),t=ac(e.defaultValue,o),[r,a]=pf(e.defaultValue),[n,f]=pf(t),l=mf();l.current=r;let s=mf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Lt.createElement(Yd,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(ec,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Lt.createElement(oc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Lt.createElement(Et,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?tc(u):void 0)}}))}function rc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function ac(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as xf}from"@mantine/core";import pe,{useRef as nc,useState as fc}from"react";function If(e){let[o,t]=fc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=nc();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(Re,{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(xf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(co,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as lc,NativeSelect as sc,Stack as ic,Switch as uc,TextInput as dc}from"@mantine/core";import{formatTiming as cc}from"@medplum/core";import $,{useRef as yf,useState as ra}from"react";var mc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ra(e.defaultValue),[r,a]=ra(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,cc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(pc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var hf={repeat:{period:1,periodUnit:"d"}};function pc(e){let[o,t]=ra(e.defaultValue||hf),r=yf();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(lc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(ic,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(uc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?hf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(dc,{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(sc,{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(Pe,{title:"Repeat on"},$.createElement(gf.Group,{multiple:!0,onChange:s},$.createElement(Rt,{position:"apart",mt:"md",spacing:"xs"},mc.map(i=>$.createElement(gf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Rt,{position:"right"},$.createElement(Cf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(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===L.Attachment?U.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):U.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?U.createElement(Sc,{elementDefinitionTypes:n,...e}):U.createElement(Sf,{elementDefinitionType:n[0],...e})}function Sc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=vc(t);return U.createElement(Ic,{spacing:"xs",grow:!0,noWrap:!0},U.createElement(gc,{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}))}),U.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Cc(r.code)))}}))}function Sf(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 L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return U.createElement(aa,{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 L.date:return U.createElement(aa,{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 L.dateTime:case L.instant:return U.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return U.createElement(aa,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return U.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return U.createElement(xc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return U.createElement(hc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return U.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return U.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return U.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return U.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return U.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return U.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return U.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return U.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return U.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return U.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return U.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return U.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return U.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return U.createElement(et,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return U.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return U.createElement(To,{name:r,defaultValue:a,targetTypes:Pc(o),onChange:e.onChange});case L.Timing:return U.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return U.createElement(Yo,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return U.createElement(Yo,{typeName:yc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Pc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Yo(e){let[o,t]=Tc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Dc.types[a];if(!n)return ko.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return ko.createElement(bc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||St.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,m]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?ko.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,outcome:e.outcome,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}})):ko.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}}))}))}import{Button as na,createStyles as kc,Group as bf}from"@mantine/core";import ee,{useMemo as Bc,useState as Ac}from"react";var Fc=kc(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 Mc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=Fc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Ac(fa);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Bc(()=>wc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Mc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(na,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(na,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,m)=>ee.createElement("td",{key:"day-"+m},u&&ee.createElement(na,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function fa(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function wc(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:Oc(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 Oc(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 Ec,createStyles as Lc}from"@mantine/core";import Rc from"react";var Nc=Lc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Nc();return Rc.createElement(Ec,{className:r.root,...t},o)}import Qm from"react";import{ActionIcon as Gf,Center as Am,createStyles as Fm,Group as Mm,Loader as wm,Menu as Ne,ScrollArea as Om,TextInput as Em}from"@mantine/core";import{showNotification as Lm,updateNotification as ma}from"@mantine/notifications";import{getReferenceString as ot,normalizeErrorString as Rm}from"@medplum/core";import T,{useCallback as Vt,useEffect as Nm,useRef as zf,useState as Wf}from"react";import{createStyles as _c,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as Zc,formatCodeableConcept as Yc,formatDateTime as ia,formatObservationValue as em,isReference as om}from"@medplum/core";import g,{useEffect as tm,useState as rm}from"react";import{Blockquote as Hc,createStyles as Vc,Stack as qc}from"@mantine/core";import Tf from"react";var Uc=Vc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function la({value:e}){let{classes:o}=Uc();return e?Tf.createElement(qc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(Hc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Jc}from"@mantine/core";import sa from"react";import{Text as Gc}from"@mantine/core";import{getDisplayString as zc,isOk as Wc,normalizeErrorString as Xc}from"@medplum/core";import kf,{useState as Qc}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=Qc(),f=X(o,n),l;if(a&&!Wc(a))l=`[${Xc(a)}]`;else if(f)l=zc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Gc,{component:"span",...r},l)}function Qe(e){return sa.createElement(Jc,{spacing:"xs"},sa.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),sa.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as $c}from"@mantine/core";import Kc from"react";var jc={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 Nt(e){return Kc.createElement($c,{color:jc[e.status]},e.status)}var Mf=_c(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}}));ua.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ua(e){let o=v(),t=X(e.value),[r,a]=rm();if(tm(()=>{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 g.createElement(Af,null,g.createElement(Ff,null,"Diagnostic Report"),g.createElement(am,{value:t}),!e.hideSpecimenInfo&&nm(r),t.result&&g.createElement(fm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&g.createElement(la,{value:n}))}function am({value:e}){return g.createElement(Ht,{mt:"md",spacing:30},e.subject&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),g.createElement(De,null,g.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.issued&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),g.createElement(De,null,ia(e.issued))),e.status&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),g.createElement(De,null,Zc(e.status))))}function nm(e){return g.createElement(Af,{spacing:"xs"},g.createElement(Ff,{order:2,size:"h6"},"Specimens"),g.createElement(Bf,{type:"ordered"},e?.map(o=>g.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},g.createElement(Ht,{spacing:20},g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Collected:")," ",ia(o.collection?.collectedDateTime)),g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Received:")," ",ia(o.receivedTime)))))))}function fm(e){let{classes:o}=Mf();return g.createElement("table",{className:o.table},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Test"),g.createElement("th",null,"Value"),g.createElement("th",null,"Reference Range"),g.createElement("th",null,"Interpretation"),g.createElement("th",null,"Category"),g.createElement("th",null,"Performer"),g.createElement("th",null,"Status"))),g.createElement("tbody",null,e.value?.map(t=>g.createElement(lm,{key:`obs-${om(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function lm(e){let{classes:o,cx:t}=Mf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=um(r);return g.createElement(g.Fragment,null,g.createElement("tr",{className:t({[o.criticalRow]:n})},g.createElement("td",{rowSpan:a?2:1},g.createElement(ne,{to:r},g.createElement(bo,{value:r.code}))),g.createElement("td",null,g.createElement(sm,{value:r})),g.createElement("td",null,g.createElement(im,{value:r.referenceRange})),g.createElement("td",null,r.interpretation&&r.interpretation.length>0&&g.createElement(bo,{value:r.interpretation[0]})),g.createElement("td",null,r.category&&r.category.length>0&&g.createElement("ul",null,r.category.map(f=>g.createElement("li",{key:`category-${Yc(f)}`},g.createElement(bo,{value:f}))))),g.createElement("td",null,r.performer?.map(f=>g.createElement(ro,{key:f.reference,value:f}))),g.createElement("td",null,r.status&&g.createElement(Nt,{status:r.status}))),a&&g.createElement("tr",null,g.createElement("td",{colSpan:6},g.createElement(la,{value:r.note}))))}function sm(e){let o=e.value;return g.createElement(g.Fragment,null,em(o))}function im(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?g.createElement(g.Fragment,null,o.text):g.createElement(bt,{value:o}):null}function um(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as dm,Paper as cm,useComponentDefaultProps as mm}from"@mantine/core";import pm from"react";var xm=dm((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%"}}})),Im={shadow:"xs",radius:"md",withBorder:!0};function Bo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=mm("Panel",Im,e),{classes:l,cx:s}=xm({width:r,fill:a},{name:"Panel",unstyled:n});return pm.createElement(cm,{className:s(l.paper,o),...f},t)}import{createStyles as gm}from"@mantine/core";import{getPropertyDisplayName as hm,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as Cm,useState as ym}from"react";var vm=gm(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 Lf(e){let{classes:o}=vm(),t=v(),[r,a]=ym();if(Cm(()=>{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]=Se(Of(e.original),l),[m,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(m)||wf(i)===wf(m)?null:le.createElement("tr",{key:l},le.createElement("td",null,hm(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:m,ignoreMissingValues:!0})))}))):null}function Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Sm,{useEffect as Pm,useState as bm}from"react";function da(e){let o=v(),t=X(e.value),[r,a]=bm();return Pm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Sm.createElement(jo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Dm,Group as Tm,Menu as Rf,Text as ca}from"@mantine/core";import{formatDateTime as km,getReferenceString as Bm}from"@medplum/core";import oe from"react";function Nf(e){return oe.createElement(Xe,null,e.children)}function Je(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Bo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Tm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(ca,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ca,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},km(l)),oe.createElement(ca,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Rf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Rf.Target,null,oe.createElement(Dm,{radius:"xl","aria-label":`Actions for ${Bm(e.resource)}`},oe.createElement(br,null))),a)),oe.createElement(Io,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function qf(e,o){e.sort((t,r)=>{let a=Hf(t,o),n=Hf(r,o);return a>n?1:a<n?-1:Vf(t,o)-Vf(r,o)})}function Hf(e,o){if(!Uf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Vf(e,o){if(!Uf(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 Uf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Hm=Fm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=zf(null),n=X(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,m=zf(s);m.current=s;let c=Vt(C=>{qf(C,n),C.reverse(),i(C)},[n]),h=Vt(C=>{let N=[];for(let Te of C){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let Ye of he.entry)N.push(Ye.resource)}c(N)},[c]),P=Vt(C=>c([...m.current,C]),[c]),k=Vt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(h).catch(console.log)},[o,e.value,u,h]);Nm(()=>k(),[k]);function I(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>P(N)).catch(console.log)}function b(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>P(N)).then(()=>ma({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(Go,{size:16}),autoClose:2e3})).catch(N=>ma({id:"upload-notification",color:"red",title:"Upload error",message:Rm(N),icon:T.createElement(Tr,{size:16}),autoClose:2e3}))}function d(C,N){return o.updateResource({...C,priority:N})}function w(C){d(C,"stat").then(k).catch(console.log)}function y(C){d(C,"routine").then(k).catch(console.log)}function O(C){t(`/${C.resourceType}/${C.id}`)}function Ie(C){t(`/${C.resourceType}/${C.id}/edit`)}function ge(C){t(`/${C.resourceType}/${C.id}/delete`)}function ue(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Y(){Lm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function No(C){ma({id:"upload-notification",loading:!0,title:"Uploading...",message:Xm(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Nf,null,e.createCommunication&&T.createElement(Bo,null,T.createElement(J,{testid:"timeline-form",onSubmit:C=>{I(C.text);let N=a.current;N&&(N.value="",N.focus())}},T.createElement(Mm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement(Em,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(Gf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Mr,{size:16})),T.createElement(So,{onUpload:b,onUploadStart:Y,onUploadProgress:No},C=>T.createElement(Gf,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(zo,{size:16})))))),s.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(Vm,{key:N,history:f,resource:C,onDetails:ue});switch(C.resourceType){case"AuditEvent":return T.createElement(zm,{key:N,resource:C,onDetails:O});case"Communication":return T.createElement(Um,{key:N,resource:C,onPin:C.priority!=="stat"?w:void 0,onUnpin:C.priority==="stat"?y:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return T.createElement(Wm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return T.createElement(Gm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});default:return T.createElement(Je,{key:N,resource:C,padding:!0},T.createElement(da,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Am,{style:{width:"100%",height:"100%"}},T.createElement(wm,null))}function Ao(e){return T.createElement(Ne.Dropdown,null,T.createElement(Ne.Label,null,"Resource"),e.onPin&&T.createElement(Ne.Item,{icon:T.createElement(wr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${ot(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Ne.Item,{icon:T.createElement(Or,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${ot(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Ne.Item,{icon:T.createElement(Ar,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${ot(e.resource)}`},"Details"),e.onEdit&&T.createElement(Ne.Item,{icon:T.createElement(Dr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${ot(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(Ne.Divider,null),T.createElement(Ne.Label,null,"Danger zone"),T.createElement(Ne.Item,{color:"red",icon:T.createElement(Qo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${ot(e.resource)}`},"Delete")))}function Vm(e){let o=qm(e.history,e.resource);return o?T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Lf,{original:o,revised:e.resource})):T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("h3",null,"Created"),T.createElement(da,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function qm(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 Um(e){let{classes:o}=Hm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Gm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(we,{value:e.resource.content}))}function zm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Om,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function Wm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(ua,{value:e.resource}))}function Xm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${pa(e.loaded)} / ${pa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${pa(e.loaded)}`}function pa(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 pB(e){return Qm.createElement($e,{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 Xf from"react";function qt(e){let{children:o,...t}=e;return Xf.createElement(Xe,null,Xf.createElement(Bo,{...t},o))}import{createReference as Ut}from"@medplum/core";import Jm from"react";function TB(e){return Jm.createElement($e,{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:Ut(o),subject:o.subject,sender:Ut(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Ut(o),subject:o.subject,operator:Ut(t),issued:new Date().toISOString(),content:r})})}import{Button as ex,Loader as ox,Table as tx}from"@mantine/core";import{normalizeOperationOutcome as rx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as $m}from"@medplum/core";import Km from"react";function Qf(e){let o;try{o=$m(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 Km.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Hp,Button as Oo,Center as Jt,createStyles as Vp,Group as $t,Loader as qp,Menu as yl,Pagination as Up,Table as Gp,Text as Pa,UnstyledButton as zp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as ka,formatSearchQuery as Wp,globalSchema as Xp}from"@medplum/core";import S,{useCallback as vl,useEffect as Sl,useRef as Qp,useState as ba}from"react";import{Box as jm,Button as _m,Modal as Zm,Text as Ym}from"@mantine/core";import Fo from"react";function $f(e){return Fo.createElement(Zm,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Fo.createElement(jm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Fo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Fo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Fo.createElement(Ym,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Fo.createElement(_m,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as at,Modal as ip}from"@mantine/core";import{globalSchema as up,stringify as dp}from"@medplum/core";import Q,{useEffect as cp,useRef as il,useState as mp}from"react";import{capitalize as ep,DEFAULT_SEARCH_COUNT as op,evalFhirPathTyped as tp,formatDateTime as rp,Operator as M}from"@medplum/core";import Gt from"react";var ap={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},np={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 tt(e,o){return{...e,filters:o,offset:0,name:void 0}}function GB(e){return tt(e,[])}function zt(e,o){return tt(e,(e.filters??[]).filter(t=>t.code!==o))}function Mo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),tt(e,n)}function zB(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 jf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function _f(e,o){return xa(e,o,-1)}function Zf(e,o){return xa(e,o,0)}function Yf(e,o){return xa(e,o,1)}function xa(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),ga(e,o,r,a)}function el(e,o){return Ia(e,o,-1)}function ol(e,o){return Ia(e,o,0)}function tl(e,o){return Ia(e,o,1)}function Ia(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),ga(e,o,r,a)}function rl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ga(e,o,t,new Date)}function ga(e,o,t,r){return e=zt(e,o),e=Kf(e,o,M.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,M.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return Mo(e,o,t,r.toISOString())}function ha(e,o,t=!0){return Mo(e,o,M.MISSING,t.toString())}function fp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??op,r=(o-1)*t;return fp(e,r)}function Ca(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function WB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),Ca(e,o,t)}function nl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function fl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ll(e){return ap[e.type]}function rt(e){return np[e]??""}function ye(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(ep).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?rp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?lp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?sp(e,o.searchParams[0]):null}function lp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Gt.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function sp(e,o){let t=tp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Gt.createElement(Gt.Fragment,null,t.map((r,a)=>Gt.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=mp({search:JSON.parse(dp(e.search))}),r=il(null),a=il(null);cp(()=>{t({search:e.search})},[e.search]);function n(d){d.key==="Enter"&&i()}function f(){i()}function l(d){d.key==="Enter"&&u()}function s(){u()}function i(){let d=o.search.fields??[],w=r.current?.value;if(w){let y=[...d,w];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],w=a.current?.value;if(w){let y=[...d];y.splice(y.indexOf(w),1),t({search:{...o.search,fields:y}})}}function m(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O<=0||(h(y,O,O-1),t({search:{...o.search,fields:y}}))}function c(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O>=y.length-1||(h(y,O,O+1),t({search:{...o.search,fields:y}}))}function h(d,w,y){let O=d[w];d[w]=d[y],d[y]=O}if(!e.visible)return null;let P=e.search.resourceType,k=up.types[P],I=o.search.fields??[],b=pp(k).filter(d=>!I.includes(d)).sort((d,w)=>d.localeCompare(w));return Q.createElement(ip,{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:d=>n(d),onDoubleClick:()=>f(),"data-testid":"available"},b.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))),Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:d=>l(d),onDoubleClick:()=>s(),"data-testid":"selected"},I.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:m},"Up")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:c},"Down")))))),Q.createElement(at,{onClick:()=>e.onOk(o.search)},"OK"))}function pp(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(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as ft,Group as Sp,Modal as Pp,NativeSelect as cl}from"@mantine/core";import{globalSchema as bp,stringify as ml}from"@medplum/core";import R,{useEffect as Dp,useRef as xl,useState as va}from"react";import{formatDateTime as xp,getSearchParameterDetails as Ip,globalSchema as gp,Operator as dl,SearchParameterType as hp}from"@medplum/core";import nt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=gp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return nt.createElement(Oe,{value:{reference:t.value}});let a=Ip(o,r);if(t.code==="_lastUpdated"||a.type===hp.DATETIME)return nt.createElement(nt.Fragment,null,xp(t.value))}return nt.createElement(nt.Fragment,null,t.value)}import{Checkbox as Cp,TextInput as ya}from"@mantine/core";import{getSearchParameterDetails as yp,SearchParameterType as wo}from"@medplum/core";import no from"react";function Xt(e){let o=yp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case wo.REFERENCE:return no.createElement(To,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case wo.BOOLEAN:return no.createElement(Cp,{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 wo.DATE:return no.createElement(ya,{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 wo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case wo.NUMBER:return no.createElement(ya,{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 wo.QUANTITY:return no.createElement(be,{name:t,defaultValue:vp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(ya,{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 vp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Il(e){let[o,t]=va(JSON.parse(ml(e.search))),[r,a]=va(-1),n=xl(o);n.current=o,Dp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(Mo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=bp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Pp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,m)=>m===r?R.createElement(pl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let h=[...i];h[m]=c,t(tt(n.current,h)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Tp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(m),onDelete:()=>t(jf(n.current,m))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(Sp,{position:"right",mt:"xl"},R.createElement(ft,{onClick:()=>e.onOk(n.current)},"OK")))}function Tp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,rt(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=va(e.defaultValue??{}),r=xl(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&&ll(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(cl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,s&&R.createElement(cl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:rt(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Xt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(ft,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as kp,Grid as Sa,Modal as Bp}from"@mantine/core";import fo,{useState as Ap}from"react";function gl(e){let[o,t]=Ap(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Bp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(Sa,null,fo.createElement(Sa.Col,{span:10},fo.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(Sa.Col,{span:2},fo.createElement(kp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as se}from"@medplum/core";import p from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(Ca(e.search,n.code,f))}function t(n){a(zt(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(Fp,{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},ye(n.code))))}function Fp(e){switch(e.searchParam.type){case"date":return p.createElement(Mp,{...e});case"number":case"quantity":return p.createElement(wp,{...e});case"reference":return p.createElement(Op,{...e});case"string":case"token":case"uri":return p.createElement(Ep,{...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(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(xt,{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(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),p.createElement(Qt,{...e}))}function wp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Qt,{...e}))}function Op(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(Qt,{...e}))}function Ep(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(hr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),p.createElement(Qt,{...e}))}function Qt(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(pr,{size:14}),onClick:()=>e.onChange(ha(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onChange(ha(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(qr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Lp,globalSchema as Rp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Np(o,r));return t}function Np(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=Rp.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=Lp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Da=class extends Event{constructor(t){super("change");this.definition=t}},Ta=class extends Event{constructor(t){super("load");this.response=t}},lo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Jp=Vp(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 $p(e){let{classes:o}=Jp(),t=v(),[r,a]=ba(!1),[n,f]=ba(),{search:l,onLoad:s}=e,[i,u]=ba({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),m=Qp(i);m.current=i;let c=l.total??"accurate",h=vl(D=>{f(void 0),t.search(l.resourceType,Wp({...l,total:c,fields:void 0}),D).then(W=>{u({...m.current,searchResponse:W}),s&&s(new Ta(W))}).catch(W=>{u({...m.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),P=vl(()=>{u({...m.current,searchResponse:void 0}),h({cache:"reload"})},[h]);Sl(()=>{h()},[h]);function k(D,W){D.stopPropagation();let ae=D.target.checked,de={...m.current.selected};ae?de[W]=!0:delete de[W],u({...m.current,selected:de})}function I(D){D.stopPropagation();let _=D.target.checked,ae={},de=m.current.searchResponse;_&&de?.entry&&de.entry.forEach(Ho=>{Ho.resource?.id&&(ae[Ho.resource.id]=!0)}),u({...m.current,selected:ae})}function b(){let D=m.current;if(!D.searchResponse?.entry||D.searchResponse.entry.length===0)return!1;for(let W of D.searchResponse.entry)if(W.resource?.id&&!D.selected[W.resource.id])return!1;return!0}function d(D){e.onChange&&e.onChange(new Da(D))}function w(D,W){if(ht(D.target)||D.button===2)return;H(D);let _=D.button===1||D.ctrlKey||D.metaKey;!_&&e.onClick&&e.onClick(new lo(W,D)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,D))}function y(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Sl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Xp.types[e.search.resourceType]))return S.createElement(Jt,{style:{width:"100%",height:"100%"}},S.createElement(qp,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,C=Y?.entry?.map(D=>D.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement($t,{position:"apart",mb:"xl"},S.createElement($t,{spacing:2},S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(vr,{size:he}),onClick:()=>u({...m.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Br,{size:he}),onClick:()=>u({...m.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(kr,{size:he}),onClick:e.onNew},"New..."),!Ye&&y()&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Vr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...m.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Qo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(xr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement($t,{spacing:2},Y&&S.createElement(Pa,{size:"xs",color:"dimmed"},Zp(l,Y.total),"-",Yp(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),S.createElement(Hp,{title:"Refresh",onClick:P},S.createElement(Lr,{size:"1.125rem"})))),S.createElement(Gp,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,Ie&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:b(),onChange:D=>I(D)})),ge.map(D=>S.createElement("th",{key:D.name},S.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},S.createElement(yl.Target,null,S.createElement(zp,{className:o.control},S.createElement($t,{position:"apart",noWrap:!0},S.createElement(Pa,{weight:500,size:"sm"},ye(D.name)),S.createElement(Jt,{className:o.icon},S.createElement(cr,{size:14,stroke:1.5}))))),S.createElement(hl,{search:e.search,searchParams:D.searchParams,onPrompt:(W,_)=>{u({...m.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{d(W)}}))))),!e.hideFilters&&S.createElement("tr",null,Ie&&S.createElement("th",null),ge.map(D=>S.createElement("th",{key:D.name},D.searchParams&&S.createElement(Kp,{resourceType:ue,searchParams:D.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,C?.map(D=>D&&S.createElement("tr",{key:D.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>w(W,D),onAuxClick:W=>w(W,D)},Ie&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${D.id}`,checked:!!i.selected[D.id],onChange:W=>k(W,D.id)})),ge.map(W=>S.createElement("td",{key:W.name},sl(D,W))))))),C?.length===0&&S.createElement(Xe,null,S.createElement(Jt,{style:{height:150}},S.createElement(Pa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&S.createElement(Jt,{m:"md",p:"md"},S.createElement(Up,{value:jp(l),total:_p(l,Y.total),onChange:D=>d(al(l,D)),getControlProps:D=>{switch(D){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(ul,{search:e.search,visible:m.current.fieldEditorVisible,onOk:D=>{d(D),u({...m.current,fieldEditorVisible:!1})},onCancel:()=>{u({...m.current,fieldEditorVisible:!1})}}),S.createElement(Il,{search:e.search,visible:m.current.filterEditorVisible,onOk:D=>{d(D),u({...m.current,filterEditorVisible:!1})},onCancel:()=>{u({...m.current,filterEditorVisible:!1})}}),S.createElement($f,{visible:m.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...m.current,exportDialogVisible:!1})}}),S.createElement(gl,{key:i.filterDialogSearchParam?.code,visible:m.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:D=>{d(Mo(e.search,D.code,D.operator,D.value)),u({...m.current,filterDialogVisible:!1})},onCancel:()=>{u({...m.current,filterDialogVisible:!1})}}))}var eF=S.memo($p);function Kp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},rt(t.operator),"\xA0",S.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function jp(e){return Math.floor((e.offset??0)/(e.count??ka))+1}function _p(e,o){let t=e.count??ka;return Math.ceil(o/t)}function Zp(e,o){return Math.min(o,(e.offset??0)+1)}function Yp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??ka))}function ax(e){let o=v(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,m]=Kt({}),c=bl();c.current=s;let h=bl({});h.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(rx(y)))},[o,f]);function P(y,O){y.stopPropagation();let ge=y.target.checked,ue={...h.current};ge?ue[O]=!0:delete ue[O],m(ue)}function k(y){y.stopPropagation();let Ie=y.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),m(ge)}function I(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let O of y)if(O.id&&!h.current[O.id])return!1;return!0}function b(y,O){ht(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new lo(O,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,y)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(ox,null);let w=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(tx,null,te.createElement("thead",null,te.createElement("tr",null,w&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),onChange:y=>k(y)})),l.map(y=>te.createElement("th",{key:y.name},y.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(y=>y&&te.createElement("tr",{key:y.id,"data-testid":"search-control-row",onClick:O=>b(O,y),onAuxClick:O=>b(O,y)},w&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!u[y.id],onChange:O=>P(O,y.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Qf,{propertyType:O.propertyType,path:O.fhirPath,resource:y}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(ex,{onClick:()=>e.onBulk(Object.keys(h.current))},"Bulk..."))}var dF=te.memo(ax);import so from"react";function Ke(e){return so.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},so.createElement("title",null,"Medplum Logo"),so.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),so.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"}),so.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"}),so.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),so.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as nx}from"@mantine/core";import Ba from"react";function Eo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Ba.createElement(nx,{icon:Ba.createElement(oo,{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 jt}from"@medplum/core";import fx,{useCallback as lx}from"react";function bF(e){let o=lx((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 fx.createElement($e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:jt(t),sender:jt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:jt(t),operator:jt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Tl,Button as sx,createStyles as ix,NativeSelect as ux,Stack as dx,TextInput as Fa}from"@mantine/core";import{getReferenceString as cx}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as lt}from"react";var Bl=ix(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 UF(e){let o=v(),t=X(e.value),[r,a]=lt(void 0),[n,f]=lt(),[l,s]=lt(),[i,u]=lt();function m(){s(void 0)}function c(){f(void 0)}let h=kl();if(h.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(hx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function P(k,I){u({...h.current,[k]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Fa,{label:"Plan Title",defaultValue:i.title,onChange:k=>P("title",k.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:k=>P("action",k)}),q.createElement(sx,{type:"submit"},"Save")))}function Al(e){let{classes:o}=Bl(),t=kl();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 q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(mx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:f=>{H(f),a({id:Ml()})}},"Add action")))}function mx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=gx(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 q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(xx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(px,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ma={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function px(e){let{action:o,actionType:t}=e,[r,a]=Fl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ro,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(ce,{property:Ma,propertyType:a,value:r})))}function xx(e){let{action:o}=e,[t,r]=lt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(dx,{spacing:"xl"},q.createElement(Fa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Fa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(ux,{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&&q.createElement(Al,{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 q.createElement(_t,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(_t,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(_t,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(_t,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(Ix,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function _t(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Et,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:cx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Ix(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Ma,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Zo(o,t,f??t,Ma,n))}})}function gx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Fl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Aa=1;function Ml(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Aa=Math.max(Aa,o+1))}return e}return"id-"+Aa++}function hx(e){return{...e,action:wl(e.action)}}function wl(e){if(e)return e.map(o=>({...o,id:Ml(o.id),action:wl(o.action)}))}import{Anchor as je,Button as Vx,createStyles as qx,NativeSelect as Ux,Textarea as Gx,TextInput as Oa,Title as zx}from"@mantine/core";import{globalSchema as Wx,isResource as Xx}from"@medplum/core";import F,{useEffect as Ql,useRef as Qx,useState as Yt}from"react";import{Button as Lo,Checkbox as Ul,Group as Cx,NativeSelect as yx,Radio as Ll,Stack as vx,Stepper as Rl,Textarea as Sx,TextInput as st,Title as Px}from"@mantine/core";import{capitalize as Gl,createReference as bx,getExtension as Dx,getQuestionnaireAnswers as Tx,getReferenceString as zl,getTypedPropertyValue as io,globalSchema as kx,stringify as Nl,evalFhirPathTyped as Bx}from"@medplum/core";import A,{useEffect as Hl,useState as it}from"react";var Ol=(b=>(b.group="group",b.display="display",b.question="question",b.boolean="boolean",b.decimal="decimal",b.integer="integer",b.date="date",b.dateTime="dateTime",b.time="time",b.string="string",b.text="text",b.url="url",b.choice="choice",b.openChoice="open-choice",b.attachment="attachment",b.reference="reference",b.quantity="quantity",b))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Wl(e){let o=v(),t=o.getProfile(),[r,a]=it(),n=X(e.questionnaire),[f,l]=it(),[s,i]=it({}),[u,m]=it(0),c=Nx(n?.item??[]),h=()=>m(I=>I>=c?I:I+1),P=()=>m(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?wx(n):void 0)},[n]);function k(I){let b={resourceType:"QuestionnaireResponse",item:I};l(b),i(Tx(b))}return!r||!n?null:A.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:zl(n),subject:e.subject,source:bx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&A.createElement(Px,null,n.title),n.item&&A.createElement(Xl,{items:n.item,answers:s,onChange:k,activePage:u,renderPages:c>0}),A.createElement(Cx,{position:"right",mt:"xl"},A.createElement(Mx,{activePage:u,numberOfPages:c,nextStep:h,prevStep:P,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=it(wa(e.items));function r(n,f){let l=o.slice();l[n]=f,t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?A.createElement(Rl.Step,{label:n.text,key:n.linkId},A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r})):A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r}));return e.renderPages?A.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):A.createElement(vx,null,a)}function Vl(e){if(!Rx(e.item,e.answers))return null;if(e.item.type==="display")return A.createElement("p",{key:e.item.linkId},e.item.text);if(e.item.type==="group")return A.createElement(Zt,{key:e.item.linkId,item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)});if(e.item.type==="boolean"){let o=e.item.initial&&e.item.initial.length>0?e.item.initial[0]:void 0;return A.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},A.createElement(Ul,{id:e.item.linkId,name:e.item.linkId,defaultChecked:o?.valueBoolean,onChange:t=>e.setResponseItem(e.index,{linkId:e.item.linkId,text:e.item.text,answer:[{valueBoolean:t.currentTarget.checked}]})}))}return A.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},A.createElement(Zt,{item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)}))}function Zt(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 A.createElement("div",null,A.createElement("h3",null,o.text),o.item&&A.createElement(Xl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return A.createElement(Ul,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return A.createElement(st,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return A.createElement(st,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return A.createElement(st,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return A.createElement(Be,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return A.createElement(st,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return A.createElement(st,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return A.createElement(Sx,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return A.createElement(vt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return A.createElement(To,{name:r,targetTypes:Hx(o),defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return A.createElement(be,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return Lx(o)?A.createElement(Ax,{name:r,item:o,initial:a,onChangeAnswer:f}):A.createElement(Fx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function Ax(e){let{name:o,item:t,initial:r}=e,a=io({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=io({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(ql(l))}return A.createElement(yx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=io({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Gl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ql(a),data:n})}function ql(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Fx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=kx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=io({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],m=`${o}-option-${i}`,c=io({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=m),l.push([m,c])}return A.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(m=>m[0]===i);if(u){let m=u[1],c="value"+Gl(m.type);a({[c]:m.value})}}},l.map(([i,u])=>A.createElement(Ll,{key:i,id:i,value:i,label:A.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Mx(e){return e.activePage===0&&e.numberOfPages<=0?A.createElement(Lo,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.nextStep},"Next")):A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep},"Next"))}function wx(e){return{resourceType:"QuestionnaireResponse",questionnaire:zl(e),item:wa(e.item)}}function wa(e){return e?.map(Ox)??[]}function Ox(e){return{linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Ex)??[]}}function Ex(e){return{...e}}function Lx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Rx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=io({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=io({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),f,{operator:l}=r;if(l==="exists")f=!!a===n.value;else if(a===void 0)f=!1;else{let s=l==="="||l==="!="?l?.replace("=","~"):l,[{value:i}]=Bx(`%actualAnswer ${s} %expectedAnswer`,[a],{actualAnswer:a,expectedAnswer:n});f=i}if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Nx(e){return e.filter(t=>Dx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Hx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}var Jx=qx(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 vM(e){let o=v(),t=X(e.questionnaire),[r,a]=Yt(),[n,f]=Yt(),[l,s]=Yt(),[i,u]=Yt();function m(){u(void 0)}function c(){s(void 0)}return Ql(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Ql(()=>(f(jx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Jl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Vx,{type:"submit"},"Save")))}function Jl(e){let{classes:o,cx:t}=Jx(),r=e.item,a=e.item,n=Xx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Qx();u.current=e.item;function m(d){H(d),e.setSelectedKey(e.item.id)}function c(d){H(d),e.setHoverKey(e.item.id)}function h(d){let w=u.current;e.onChange({...w,item:w.item?.map(y=>y.id===d.id?d:y)})}function P(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function k(d){e.onChange({...e.item,item:e.item.item?.filter(w=>w!==d)})}function I(d,w){e.onChange({...u.current,[d]:w})}let b=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:b,onClick:m,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:d=>I("title",d.currentTarget.value)}),!n&&F.createElement(Gx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>I("text",d.currentTarget.value)}),a.type==="reference"&&F.createElement(Kx,{item:a,onChange:d=>I("extension",d)}),El(a)&&F.createElement($x,{options:a.answerOption,onChange:d=>I("answerOption",d)})):F.createElement(F.Fragment,null,r.title&&F.createElement(zx,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Zt,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>F.createElement("div",{key:d.id},F.createElement(Jl,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:h,onRemove:()=>k(d)}))),!f&&F.createElement("div",{className:o.topActions},s?F.createElement(F.Fragment,null,F.createElement(Oa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:d=>I("linkId",d.currentTarget.value)}),!f&&F.createElement(Ux,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>I("type",d.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"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P(Zx())}},"Add Page"),s&&!n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function $x(e){let o=Wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return F.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return F.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Re,{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)}})),F.createElement("div",null,F.createElement(je,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function Kx(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return F.createElement(F.Fragment,null,t.map(r=>F.createElement("div",{key:r.id},F.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Oa,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),F.createElement("div",null,F.createElement(je,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:_e(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ea=1,La=1;function Ra(e){return e+Ea++}function _e(){return"id-"+La++}function jx(e){return{...e,id:e.id||_e(),item:$l(e.item)}}function $l(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(La=Math.max(La,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ea=Math.max(Ea,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||_e(),item:$l(o.item),answerOption:_x(o.answerOption)}))}function _x(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function Zx(){return{id:_e(),linkId:Ra("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{ActionIcon as er,Button as Yx,createStyles as eI,Divider as oI,Group as ut,NativeSelect as Na,Stack as or,Text as tI,TextInput as rI}from"@mantine/core";import{formatRange as Kl,getCodeBySystem as aI}from"@medplum/core";import z,{useEffect as nI,useState as Ha}from"react";var fI=eI(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"}})),lI=["gender","age","gestationalAge","context","appliesTo","category"],sI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function MM(e){e=Object.assign(sI,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return nI(()=>{let P=dI(o,l);r(cI(P.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(or,null,t.map(P=>z.createElement(iI,{unit:pI(o.quantitativeDetails?.unit),onChange:m,onAdd:c,onRemove:h,onRemoveGroup:u,key:`group-${P.id}`,intervalGroup:P}))),z.createElement(er,{title:"Add Group",size:"sm",onClick:P=>{H(P),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(co,null)),z.createElement(ut,{position:"right"},z.createElement(Yx,{type:"submit"},"Save")));function s(){let P=t.flatMap(k=>k.intervals).filter(k=>!xI(k));e.onSubmit({...o,qualifiedInterval:P})}function i(P){r(k=>[...k,P])}function u(P){r(k=>k.filter(I=>I.id!==P.id))}function m(P,k){r(I=>{I=[...I];let b=I.find(w=>w.id===P),d=b?.intervals.findIndex(w=>w.id===k.id);return d!==void 0&&b?.intervals[d]&&(b.intervals[d]=k),I})}function c(P,k){k.id===void 0&&(k.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let b=I.findIndex(d=>d.id===P);if(b!==-1){let d={...I[b]};k={...k,...d.filters},d.intervals=[...d.intervals,k],I[b]=d}return I})}function h(P,k){r(I=>{I=[...I];let b=I.find(d=>d.id===P);return b&&(b.intervals=b.intervals.filter(d=>d.id!==k.id)),I})}}function iI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=fI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(or,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(er,{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(Ue,null))),z.createElement(uI,{intervalGroup:o,onChange:e.onChange}),z.createElement(oI,null),o.intervals.map(a=>z.createElement(or,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(rI,{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(er,{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(Ue,null))),z.createElement(et,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(er,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(co,null))))}function uI(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(or,{style:{maxWidth:"50%"}},z.createElement(ut,null,z.createElement(Na,{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(ut,{spacing:"xs"},z.createElement(tI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(et,{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(Na,{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"}]}})}}}),z.createElement(Na,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function dI(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 cI(e,o){let t=1,r={};for(let a of e){let n=mI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(lI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function mI(e){return[`gender=${e.gender}`,`age=${Kl(e.age)}`,`gestationalAge=${Kl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function pI(e){return e&&(aI(e,"http://unitsofmeasure.org")||e.text)}function xI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as jl,Grid as tr,Text as II}from"@mantine/core";import{formatDateTime as gI,getReferenceString as hI}from"@medplum/core";import xe,{useEffect as CI,useState as _l}from"react";function UM(e){let o=v(),t=X(e.value),[r,a]=_l(!1),[n,f]=_l();if(CI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(tr,null,t.action?.map((i,u)=>{let m=i.resource&&s(i.resource),c=m?.input?.[0]?.valueReference,h=m?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(tr.Col,{span:1,p:"md"},m?.status==="completed"?xe.createElement(Cr,null):xe.createElement(Nr,{color:"gray"})),xe.createElement(tr.Col,{span:9,p:"xs"},xe.createElement(II,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:m?.meta?.author}),"\xA0on\xA0",gI(m?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:m?.status||"unknown"}))),xe.createElement(tr.Col,{span:2,p:"md"},c&&!h&&xe.createElement(jl,{onClick:()=>e.onStart(m,c)},"Start"),c&&h&&xe.createElement(jl,{onClick:()=>e.onEdit(m,c,h)},"Edit")))}));function l(i){let u=[];if(i.action)for(let m of i.action)m.resource?.reference&&u.push({request:{method:"GET",url:m.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===hI(u.resource))return u.resource}}import{createStyles as TI}from"@mantine/core";import ve,{useEffect as kI,useState as BI}from"react";import{stringify as PI}from"@medplum/core";function rr(e,o){let t=yI(e,o);return vI(t,e,o)}function yI(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,m=u+1,c=u-1,h=l[m],P=l[c],k,I=0;i===-s||i!==s&&P.i<h.i?(I=h.i,k=h):(I=P.i+1,k=P),l[c]=void 0;let b=I-i,d={i:I,j:b,prev:SI(k),snake:!1};for(;I<t&&b<r&&e[I]===o[b];)I++,b++;if(I>d.i&&(d={i:I,j:b,prev:d,snake:!0}),l[u]=d,I>=t&&b>=r)return l[u]}l[f+s-1]=void 0}}function vI(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)},m;i.lines.length===0&&u.lines.length>0?m="insert":i.lines.length>0&&u.lines.length===0?m="delete":m="change",r.push({original:i,revised:u,type:m}),a.snake&&(a=a.prev)}return r}function SI(e){return e&&!e.snake&&e.prev?e.prev:e}function Zl(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:PI(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 bI(t,o),DI(t),t}function bI(e,o){for(let t=1;t<o.length;t++){let r=rr(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 DI(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 AI=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 YM(e){let{classes:o}=AI(),t=v(),[r,a]=BI(e.history);if(kI(()=>{!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 ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Zl(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Qe,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:FI(n,l.meta.versionId)},MI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function FI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function MI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ro(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ro(r,"month");let a=Math.floor(o/86400);if(a>0)return Ro(a,"day");let n=Math.floor(o/3600);if(n>0)return Ro(n,"hour");let f=Math.floor(o/60);return f>0?Ro(f,"minute"):Ro(o,"second")}function Ro(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as wI}from"@mantine/core";import{stringify as Yl}from"@medplum/core";import Ze from"react";var OI=wI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function fw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Yl(o,!0).match(/[^\r\n]+/g),a=Yl(t,!0).match(/[^\r\n]+/g),n=rr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(EI,{key:"delta"+l,delta:f})))}function EI(e){let{classes:o}=OI();return Ze.createElement(Ze.Fragment,null,"...",Ze.createElement("br",null),e.delta.original.lines.length>0&&Ze.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
64
|
+
}`.replace(/\s+/g," ")}function Mi(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),Oi(wi(t),o).slice(0,5)}function wi(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 Oi(e,o){return e.sort((t,r)=>In(r,o)-In(t,o))}function In(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,gn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,gn(Si(r),o));return t}function gn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var qi=Li(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 Sn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=qi(),[s,i]=Vi(!1);return U.createElement(Ri,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(Le.Target,null,U.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement($o,{size:"sm",className:f.userName},Hi(r?.name?.[0])),U.createElement(Cr,{size:12,stroke:1.5})))),U.createElement(Le.Dropdown,null,U.createElement(Ni,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(gt,{value:o.profile?.name?.[0]}),U.createElement($o,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&U.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(Ei,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement($o,{size:"sm",weight:500},u.profile.display),U.createElement($o,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Le.Divider,null),U.createElement(Le.Item,{icon:U.createElement(Nr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Le.Item,{icon:U.createElement(Io,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),U.createElement(Le.Item,{icon:U.createElement(Ar,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement($o,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as su,createStyles as iu,Navbar as Wr,ScrollArea as uu,Space as du,Text as cu}from"@mantine/core";import re,{useState as mu}from"react";import{Button as Wi,Group as Qi,Modal as Xi,NativeSelect as Ji,Stack as $i,TextInput as Ki}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as ji,normalizeErrorString as _i}from"@medplum/core";import We from"react";import zi from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Gi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ui(o,t);return o}function Gi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ui(e,o){e[o.name]=o.value}function J(e){return zi.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 Dn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=ji(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"}),bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{bn({color:"red",message:_i(u)})})}return We.createElement(Xi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},We.createElement(J,{onSubmit:r},We.createElement($i,null,We.createElement(Zi,{config:t}),We.createElement(Ki,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),We.createElement(Qi,{position:"right"},We.createElement(Wi,{mt:"sm",type:"submit"},"OK")))))}function Zi(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return We.createElement(Ji,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import au,{useState as nu}from"react";import Yi,{useCallback as eu}from"react";function zr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function ou(e){return typeof e.display=="string"?e.display:zr(e)}function tu(e){return{value:zr(e),label:ou(e),resource:e}}function ru(e){return{code:e,display:e}}function So(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=eu(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let y of d)y.code&&!c.some(b=>b.code===y.code)&&c.push(y);return c},[o,t]);return Yi.createElement(vo,{...n,creatable:r??!0,clearable:a??!0,toKey:zr,toOption:tu,loadOptions:f,onCreate:ru,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=nu(e.defaultValue);function r(a){let n=a[0],f=lu(n);t(f),e.onChange&&e.onChange(f)}return au.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:fu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function fu(e){return e?{code:e}:void 0}function lu(e){return e?.code}var Tn=iu(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 kn(e){let{classes:o}=Tn(),t=Ge(),r=Iu(e.pathname,e.searchParams,e.menus),[a,n]=mu(!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(Wr,{width:{sm:250},p:"xs"},re.createElement(uu,null,re.createElement(Wr.Section,{mb:"sm"},re.createElement(yt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Wr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(cu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(pu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(xu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(su,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Or,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Dn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function pu(e){let{classes:o,cx:t}=Tn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function xu(e){return e.icon?e.icon:re.createElement(du,{w:30})}function Iu(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=gu(e,o,f.href);l>a&&(a=l,r=f)}return r}function gu(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 NS(e){let o=Cu(),[t,r]=vu(localStorage.navbarOpen==="true"),a=S(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?to.createElement(Gr,null):to.createElement(hu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&to.createElement(Sn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?to.createElement(kn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},to.createElement(go,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(yu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as Su}from"@mantine/core";import Qe from"react";function we(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Qe.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Qe.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Qe.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Qe.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Qe.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Qe.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Qe.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Qe.createElement(Su,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Bn(e){return Qr.createElement("div",null,e.values?.map((o,t)=>Qr.createElement("div",{key:"attatchment-"+t},Qr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as An}from"@mantine/core";import fe,{useRef as bu,useState as Du}from"react";import Xr,{useRef as Pu}from"react";function Po(e){let o=S(),t=Pu(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 Xr.createElement(Xr.Fragment,null,Xr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Fn(e){let[o,t]=Du(e.defaultValue??[]),r=bu();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(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(An,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(Wo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import bo,{useState as Tu}from"react";function vt(e){let[o,t]=Tu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?bo.createElement(bo.Fragment,null,bo.createElement(we,{value:o,maxWidth:200}),bo.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):bo.createElement(Po,{onUpload:r},a=>bo.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as Qu,globalSchema as Xu}from"@medplum/core";import Zo from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as ku}from"@mantine/core";import Ko from"react";var Bu=ku(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 wn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Bu();return Ko.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return Ko.createElement(Ko.Fragment,null,Ko.createElement("dt",null,e.term),Ko.createElement("dd",null,e.children))}import{formatDateTime as Ru,formatPeriod as Nu,formatTiming as Hu,getElementDefinitionTypeName as Vu,getTypedPropertyValue as qu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as Au}from"@medplum/core";import En from"react";function Do(e){return En.createElement(En.Fragment,null,Au(e.value))}import{formatCoding as Fu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Fu(e.value))}import Jr from"react";import Nn from"react";function Pt(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("]")),Nn.createElement(Nn.Fragment,null,t.join("").trim())}function Hn(e){let o=e.value;return o?Jr.createElement(Jr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Jr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Mu from"react";function Vn(e){return Mu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as wu}from"@medplum/core";import qn from"react";function Gn(e){return qn.createElement(qn.Fragment,null,wu(e.value))}import{formatQuantity as Ou}from"@medplum/core";import Un from"react";function jo(e){return Un.createElement(Un.Fragment,null,Ou(e.value))}import{formatRange as Eu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,Eu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(jo,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(jo,{value:o.denominator})):null}import{stringify as Lu}from"@medplum/core";import $r from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Lu(e.value);return e.link!==!1&&e.value.reference?$r.createElement(ne,{to:e.value},o):$r.createElement($r.Fragment,null,o)}import Tt from"react";function Qn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Gu,Box as Uu,CopyButton as zu,Tooltip as Wu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Uu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(zu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Wu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Gu,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(vr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Qn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ro,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Ru(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Qa,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(we,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(Do,{value:r});case V.Coding:return E.createElement(Rn,{value:r});case V.ContactDetail:return E.createElement(Hn,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Vn,{value:r});case V.Money:return E.createElement(Gn,{value:r});case V.Period:return E.createElement(E.Fragment,null,Nu(r));case V.Quantity:case V.Duration:return E.createElement(jo,{value:r});case V.Range:return E.createElement(bt,{value:r});case V.Ratio:return E.createElement(Wn,{value:r});case V.Reference:return E.createElement(ro,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Hu(r));case V.Dosage:case V.UsageContext:return E.createElement(_o,{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 E.createElement(_o,{value:{type:Vu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=qu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function _o(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Xu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Zo.createElement("div",null,t.name):Zo.createElement(wn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(St.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Zo.createElement(On,{key:f,term:Qu(f)},Zo.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Zo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Tc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as kc}from"@medplum/core";import Bo,{useState as Bc}from"react";import{Group as Ju,Input as $u}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Ju,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement($u.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ku}from"@mantine/core";import ju from"react";function me(e,o){return e?.issue?.filter(t=>Xn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
+
`)}function At(e,o){return e?.issue?.filter(t=>Xn(t.expression?.[0],o))}function Xn(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 Pe(e){return ju.createElement(Ku.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Jn,Group as _u,Stack as Zu,TextInput as $n}from"@mantine/core";import{capitalize as Yu,deepClone as ed}from"@medplum/core";import ke,{useEffect as od,useState as Kn}from"react";function Lb(e){let o=S(),t=Q(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return od(()=>{t&&(f(ed(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(Zu,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement($n,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement($n,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(et,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(_u,{position:"right",mt:"xl"},ke.createElement(Jn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(Jn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function Yo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Yu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as gc,Group as hc,NativeSelect as Cc,Textarea as yc,TextInput as ra}from"@mantine/core";import{capitalize as vc,getElementDefinitionTypeName as Sc,PropertyType as L}from"@medplum/core";import G,{useState as Pc}from"react";import td,{useState as rd}from"react";function jn(e){let[o,t]=rd(e.defaultValue);function r(a){let n=nd(a);t(n),e.onChange&&e.onChange(n)}return td.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&ad(o),maxSelectedValues:1,onChange:r})}function ad(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function nd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import fd,{useState as ld}from"react";function _n(e){let[o,t]=ld(e.defaultValue);function r(a){let n=a[0],f=n&&id(n);t(f),e.onChange&&e.onChange(f)}return fd.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&sd(o),maxSelectedValues:1,onChange:r})}function sd(e){return{system:e.system,code:e.code,display:e.display}}function id(e){return{system:e.system,code:e.code,display:e.display}}import{Group as pd,TextInput as xd}from"@mantine/core";import Kr,{useRef as Id,useState as gd}from"react";import{Group as ud,NativeSelect as Zn,TextInput as dd}from"@mantine/core";import Ft,{useRef as cd,useState as md}from"react";function Mt(e){let[o,t]=md(e.defaultValue),r=cd();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 Ft.createElement(ud,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(Zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(dd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=gd(e.defaultValue),r=Id();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 Kr.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},Kr.createElement(xd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Kr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as hd}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import Cd from"react";function Be(e){return Cd.createElement(hd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Sd(),defaultValue:yd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(vd(t))}}})}function yd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function vd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function Sd(){return"datetime-local"}import{JsonInput as Pd}from"@mantine/core";import{stringify as bd}from"@medplum/core";import Dd from"react";function of(e){return Dd.createElement(Pd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:bd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Td,NativeSelect as kd,TextInput as wt}from"@mantine/core";import To,{useRef as Bd,useState as Ad}from"react";function tf(e){let[o,t]=Ad(e.defaultValue),r=Bd();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 To.createElement(Td,{spacing:"xs",grow:!0,noWrap:!0},To.createElement(kd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),To.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),To.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),To.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),To.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Fd,TextInput as rf}from"@mantine/core";import jr,{useState as Md}from"react";function af(e){let[o,t]=Md(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return jr.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),jr.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as wd,TextInput as Od}from"@mantine/core";import _r,{useCallback as Zr,useState as Ed}from"react";var Ld=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=Ed(e.defaultValue),a=Zr(s=>{r(s),o&&o(s)},[o]),n=Zr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Zr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=_r.createElement(wd,{defaultValue:t?.currency,data:Ld,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return _r.createElement(Od,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:_r.createElement(Sr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Rd}from"@mantine/core";import Yr,{useState as Nd}from"react";function ff(e){let[o,t]=Nd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Yr.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Yr.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Yr.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Hd,NativeSelect as Vd,TextInput as lf}from"@mantine/core";import Ot,{useState as qd}from"react";function be(e){let[o,t]=qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Hd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Vd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ot.createElement(lf,{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:Gd(a.currentTarget.value)})}}),Ot.createElement(lf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Gd(e){if(e)return parseFloat(e)}import{Group as Ud}from"@mantine/core";import ea,{useState as zd}from"react";function ot(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ea.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Wd}from"@mantine/core";import oa,{useState as Qd}from"react";function sf(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(Wd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),oa.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as oc,NativeSelect as tc,TextInput as rc}from"@mantine/core";import{createReference as ac}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Xd,Text as uf}from"@mantine/core";import{getDisplayString as Jd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as $d,useCallback as df,useState as Kd}from"react";var jd={Observation:"code",User:"email:contains"},_d=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Zd(e){return{value:cf(e),label:Jd(e),resource:e}}function Et(e){let o=S(),t=e.resourceType,[r,a]=Kd(),n=Q(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let d=ec(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=df(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:ao.createElement(vo,{name:e.name,itemComponent:Yd,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:Zd,loadOptions:l,onChange:s,clearable:!0})}var Yd=$d(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Xd,{noWrap:!0},ao.createElement(Ce,{value:o}),ao.createElement("div",null,ao.createElement(uf,null,e),ao.createElement(uf,{size:"xs",color:"dimmed"},o.birthDate)))));function ec(e){return jd[e]??(_d.includes(e)?"name":"_id")}function ko(e){let o=nc(e.targetTypes),t=fc(e.defaultValue,o),[r,a]=pf(e.defaultValue),[n,f]=pf(t),l=mf();l.current=r;let s=mf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Lt.createElement(oc,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(tc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Lt.createElement(rc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Lt.createElement(Et,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?ac(u):void 0)}}))}function nc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function fc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as xf}from"@mantine/core";import pe,{useRef as lc,useState as sc}from"react";function If(e){let[o,t]=sc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=lc();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(Re,{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(xf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(mo,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as ic,NativeSelect as uc,Stack as dc,Switch as cc,TextInput as mc}from"@mantine/core";import{formatTiming as pc}from"@medplum/core";import $,{useRef as yf,useState as ta}from"react";var xc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ta(e.defaultValue),[r,a]=ta(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,pc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(Ic,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var hf={repeat:{period:1,periodUnit:"d"}};function Ic(e){let[o,t]=ta(e.defaultValue||hf),r=yf();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(ic,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(dc,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(cc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?hf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(mc,{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(uc,{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(Pe,{title:"Repeat on"},$.createElement(gf.Group,{multiple:!0,onChange:s},$.createElement(Rt,{position:"apart",mt:"md",spacing:"xs"},xc.map(i=>$.createElement(gf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Rt,{position:"right"},$.createElement(Cf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(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===L.Attachment?G.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(bc,{elementDefinitionTypes:n,...e}):G.createElement(Sf,{elementDefinitionType:n[0],...e})}function bc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Pc(t);return G.createElement(hc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Cc,{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}))}),G.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",vc(r.code)))}}))}function Sf(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 L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(ra,{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 L.date:return G.createElement(ra,{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 L.dateTime:case L.instant:return G.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(ra,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(gc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(yc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(ot,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(ko,{name:r,defaultValue:a,targetTypes:Dc(o),onChange:e.onChange});case L.Timing:return G.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(et,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(et,{typeName:Sc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Dc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function et(e){let[o,t]=Bc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=kc.types[a];if(!n)return Bo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Bo.createElement(Tc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||St.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Bo.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},Bo.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(y,b)=>{r(Yo(o,s,b??s,l[1],y))}})):Bo.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Bo.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(y,b)=>{r(Yo(o,s,b??s,l[1],y))}}))}))}import{Button as aa,createStyles as Ac,Group as bf}from"@mantine/core";import ee,{useMemo as Fc,useState as Mc}from"react";var wc=Ac(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 Oc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=wc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Mc(na);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Fc(()=>Ec(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Oc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(aa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(aa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,d)=>ee.createElement("td",{key:"day-"+d},u&&ee.createElement(aa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function na(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ec(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:Lc(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 Lc(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 Rc,createStyles as Nc}from"@mantine/core";import Hc from"react";var Vc=Nc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Vc();return Hc.createElement(Rc,{className:r.root,...t},o)}import $m from"react";import{ActionIcon as Uf,Center as Mm,createStyles as wm,Group as Om,Loader as Em,Menu as Ne,ScrollArea as Lm,TextInput as Rm}from"@mantine/core";import{showNotification as Nm,updateNotification as ca}from"@mantine/notifications";import{getReferenceString as tt,normalizeErrorString as Hm}from"@medplum/core";import k,{useCallback as Vt,useEffect as Vm,useRef as zf,useState as Wf}from"react";import{createStyles as Yc,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as em,formatCodeableConcept as om,formatDateTime as sa,formatObservationValue as tm,isReference as rm}from"@medplum/core";import h,{useEffect as am,useState as nm}from"react";import{Blockquote as qc,createStyles as Gc,Stack as Uc}from"@mantine/core";import Tf from"react";var zc=Gc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function fa({value:e}){let{classes:o}=zc();return e?Tf.createElement(Uc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(qc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Kc}from"@mantine/core";import la from"react";import{Text as Wc}from"@mantine/core";import{getDisplayString as Qc,isOk as Xc,normalizeErrorString as Jc}from"@medplum/core";import kf,{useState as $c}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=$c(),f=Q(o,n),l;if(a&&!Xc(a))l=`[${Jc(a)}]`;else if(f)l=Qc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Wc,{component:"span",...r},l)}function Je(e){return la.createElement(Kc,{spacing:"xs"},la.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),la.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as jc}from"@mantine/core";import _c from"react";var Zc={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 Nt(e){return _c.createElement(jc,{color:Zc[e.status]},e.status)}var Mf=Yc(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}}));ia.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ia(e){let o=S(),t=Q(e.value),[r,a]=nm();if(am(()=>{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 h.createElement(Af,null,h.createElement(Ff,null,"Diagnostic Report"),h.createElement(fm,{value:t}),!e.hideSpecimenInfo&&lm(r),t.result&&h.createElement(sm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(fa,{value:n}))}function fm({value:e}){return h.createElement(Ht,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(De,null,h.createElement(Je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(De,null,h.createElement(Je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(De,null,h.createElement(Je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(De,null,sa(e.issued))),e.status&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(De,null,em(e.status))))}function lm(e){return h.createElement(Af,{spacing:"xs"},h.createElement(Ff,{order:2,size:"h6"},"Specimens"),h.createElement(Bf,{type:"ordered"},e?.map(o=>h.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Ht,{spacing:20},h.createElement(Ht,{spacing:5},h.createElement(De,{fw:500},"Collected:")," ",sa(o.collection?.collectedDateTime)),h.createElement(Ht,{spacing:5},h.createElement(De,{fw:500},"Received:")," ",sa(o.receivedTime)))))))}function sm(e){let{classes:o}=Mf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,e.value?.map(t=>h.createElement(im,{key:`obs-${rm(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function im(e){let{classes:o,cx:t}=Mf(),r=Q(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=cm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(ne,{to:r},h.createElement(Do,{value:r.code}))),h.createElement("td",null,h.createElement(um,{value:r})),h.createElement("td",null,h.createElement(dm,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Do,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement("ul",null,r.category.map(f=>h.createElement("li",{key:`category-${om(f)}`},h.createElement(Do,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(ro,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Nt,{status:r.status}))),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(fa,{value:r.note}))))}function um(e){let o=e.value;return h.createElement(h.Fragment,null,tm(o))}function dm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(bt,{value:o}):null}function cm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as mm,Paper as pm,useComponentDefaultProps as xm}from"@mantine/core";import Im from"react";var gm=mm((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%"}}})),hm={shadow:"xs",radius:"md",withBorder:!0};function Ao(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=xm("Panel",hm,e),{classes:l,cx:s}=gm({width:r,fill:a},{name:"Panel",unstyled:n});return Im.createElement(pm,{className:s(l.paper,o),...f},t)}import{createStyles as Cm}from"@mantine/core";import{getPropertyDisplayName as ym,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as vm,useState as Sm}from"react";var Pm=Cm(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 Lf(e){let{classes:o}=Pm(),t=S(),[r,a]=Sm();if(vm(()=>{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]=Se(Of(e.original),l),[d,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(d)||wf(i)===wf(d)?null:le.createElement("tr",{key:l},le.createElement("td",null,ym(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import bm,{useEffect as Dm,useState as Tm}from"react";function ua(e){let o=S(),t=Q(e.value),[r,a]=Tm();return Dm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:bm.createElement(_o,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as km,Group as Bm,Menu as Rf,Text as da}from"@mantine/core";import{formatDateTime as Am,getReferenceString as Fm}from"@medplum/core";import oe from"react";function Nf(e){return oe.createElement(Xe,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 oe.createElement(Ao,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Bm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(da,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(da,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},Am(l)),oe.createElement(da,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Rf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Rf.Target,null,oe.createElement(km,{radius:"xl","aria-label":`Actions for ${Fm(e.resource)}`},oe.createElement(Pr,null))),a)),oe.createElement(go,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function qf(e,o){e.sort((t,r)=>{let a=Hf(t,o),n=Hf(r,o);return a>n?1:a<n?-1:Vf(t,o)-Vf(r,o)})}function Hf(e,o){if(!Gf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Vf(e,o){if(!Gf(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 Gf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var qm=wm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ke(e){let o=S(),t=Ge(),r=o.getProfile(),a=zf(null),n=Q(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,d=zf(s);d.current=s;let c=Vt(v=>{qf(v,n),v.reverse(),i(v)},[n]),y=Vt(v=>{let N=[];for(let Te of v){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let Ye of he.entry)N.push(Ye.resource)}c(N)},[c]),b=Vt(v=>c([...d.current,v]),[c]),A=Vt(()=>{let v,N;"resourceType"in e.value?(v=e.value.resourceType,N=e.value.id):[v,N]=e.value.reference?.split("/"),u(o,v,N).then(y).catch(console.log)},[o,e.value,u,y]);Vm(()=>A(),[A]);function I(v){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,v)).then(N=>b(N)).catch(console.log)}function D(v){!n||!e.createMedia||o.createResource(e.createMedia(n,r,v)).then(N=>b(N)).then(()=>ca({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(zo,{size:16}),autoClose:2e3})).catch(N=>ca({id:"upload-notification",color:"red",title:"Upload error",message:Hm(N),icon:k.createElement(Dr,{size:16}),autoClose:2e3}))}function p(v,N){return o.updateResource({...v,priority:N})}function g(v){p(v,"stat").then(A).catch(console.log)}function C(v){p(v,"routine").then(A).catch(console.log)}function O(v){t(`/${v.resourceType}/${v.id}`)}function Ie(v){t(`/${v.resourceType}/${v.id}/edit`)}function ge(v){t(`/${v.resourceType}/${v.id}/delete`)}function ue(v){t(`/${v.resourceType}/${v.id}/_history/${v.meta?.versionId}`)}function Y(){Nm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Ho(v){ca({id:"upload-notification",loading:!0,title:"Uploading...",message:Jm(v),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Nf,null,e.createCommunication&&k.createElement(Ao,null,k.createElement(J,{testid:"timeline-form",onSubmit:v=>{I(v.text);let N=a.current;N&&(N.value="",N.focus())}},k.createElement(Om,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(Rm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(Uf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(Fr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:Y,onUploadProgress:Ho},v=>k.createElement(Uf,{...v,radius:"xl",color:"blue",variant:"filled"},k.createElement(Wo,{size:16})))))),s.map(v=>{if(!v)return null;let N=`${v.resourceType}/${v.id}/${v.meta?.versionId}`;if(v.resourceType===n.resourceType&&v.id===n.id)return k.createElement(Gm,{key:N,history:f,resource:v,onDetails:ue});switch(v.resourceType){case"AuditEvent":return k.createElement(Qm,{key:N,resource:v,onDetails:O});case"Communication":return k.createElement(zm,{key:N,resource:v,onPin:v.priority!=="stat"?g:void 0,onUnpin:v.priority==="stat"?C:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return k.createElement(Xm,{key:N,resource:v,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return k.createElement(Wm,{key:N,resource:v,onDetails:O,onEdit:Ie,onDelete:ge});default:return k.createElement($e,{key:N,resource:v,padding:!0},k.createElement(ua,{value:v,ignoreMissingValues:!0}))}})):k.createElement(Mm,{style:{width:"100%",height:"100%"}},k.createElement(Em,null))}function Fo(e){return k.createElement(Ne.Dropdown,null,k.createElement(Ne.Label,null,"Resource"),e.onPin&&k.createElement(Ne.Item,{icon:k.createElement(Mr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${tt(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(Ne.Item,{icon:k.createElement(wr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${tt(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(Ne.Item,{icon:k.createElement(Br,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${tt(e.resource)}`},"Details"),e.onEdit&&k.createElement(Ne.Item,{icon:k.createElement(br,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${tt(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(Ne.Divider,null),k.createElement(Ne.Label,null,"Danger zone"),k.createElement(Ne.Item,{color:"red",icon:k.createElement(Jo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${tt(e.resource)}`},"Delete")))}function Gm(e){let o=Um(e.history,e.resource);return o?k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(Lf,{original:o,revised:e.resource})):k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement("h3",null,"Created"),k.createElement(ua,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Um(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 zm(e){let{classes:o}=qm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement($e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(Fo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Wm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement($e,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(we,{value:e.resource.content}))}function Qm(e){return k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(Lm,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function Xm(e){return k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(ia,{value:e.resource}))}function Jm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ma(e.loaded)} / ${ma(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ma(e.loaded)}`}function ma(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 SB(e){return $m.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 Qf from"react";function qt(e){let{children:o,...t}=e;return Qf.createElement(Xe,null,Qf.createElement(Ao,{...t},o))}import{createReference as Gt}from"@medplum/core";import Km from"react";function EB(e){return Km.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:Gt(o),subject:o.subject,sender:Gt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Gt(o),subject:o.subject,operator:Gt(t),issued:new Date().toISOString(),content:r})})}import{Button as tx,Loader as rx,Table as ax}from"@mantine/core";import{normalizeOperationOutcome as nx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as jm}from"@medplum/core";import _m from"react";function Xf(e){let o;try{o=jm(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 _m.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as qp,Button as Eo,Center as Jt,createStyles as Gp,Group as $t,Loader as Up,Menu as yl,Pagination as zp,Table as Wp,Text as Sa,UnstyledButton as Qp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ta,formatSearchQuery as Xp,globalSchema as Jp}from"@medplum/core";import P,{useCallback as vl,useEffect as Sl,useRef as $p,useState as Pa}from"react";import{Box as Zm,Button as Ym,Modal as ep,Text as op}from"@mantine/core";import Mo from"react";function $f(e){return Mo.createElement(ep,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Mo.createElement(Zm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Mo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Mo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Mo.createElement(op,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Mo.createElement(Ym,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as nt,Modal as dp}from"@mantine/core";import{globalSchema as cp,stringify as mp}from"@medplum/core";import X,{useEffect as pp,useRef as il,useState as xp}from"react";import{capitalize as tp,DEFAULT_SEARCH_COUNT as rp,evalFhirPathTyped as ap,formatDateTime as np,Operator as w}from"@medplum/core";import Ut from"react";var fp={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},lp={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 rt(e,o){return{...e,filters:o,offset:0,name:void 0}}function jB(e){return rt(e,[])}function zt(e,o){return rt(e,(e.filters??[]).filter(t=>t.code!==o))}function wo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),rt(e,n)}function _B(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 jf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function _f(e,o){return pa(e,o,-1)}function Zf(e,o){return pa(e,o,0)}function Yf(e,o){return pa(e,o,1)}function pa(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),Ia(e,o,r,a)}function el(e,o){return xa(e,o,-1)}function ol(e,o){return xa(e,o,0)}function tl(e,o){return xa(e,o,1)}function xa(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),Ia(e,o,r,a)}function rl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ia(e,o,t,new Date)}function Ia(e,o,t,r){return e=zt(e,o),e=Kf(e,o,w.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,w.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return wo(e,o,t,r.toISOString())}function ga(e,o,t=!0){return wo(e,o,w.MISSING,t.toString())}function sp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??rp,r=(o-1)*t;return sp(e,r)}function ha(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function ZB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),ha(e,o,t)}function nl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function fl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ll(e){return fp[e.type]}function at(e){return lp[e]??""}function ye(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(tp).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?np(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?ip(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?up(e,o.searchParams[0]):null}function ip(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Ut.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function up(e,o){let t=ap(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Ut.createElement(Ut.Fragment,null,t.map((r,a)=>Ut.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=xp({search:JSON.parse(mp(e.search))}),r=il(null),a=il(null);pp(()=>{t({search:e.search})},[e.search]);function n(p){p.key==="Enter"&&i()}function f(){i()}function l(p){p.key==="Enter"&&u()}function s(){u()}function i(){let p=o.search.fields??[],g=r.current?.value;if(g){let C=[...p,g];t({search:{...o.search,fields:C}})}}function u(){let p=o.search.fields??[],g=a.current?.value;if(g){let C=[...p];C.splice(C.indexOf(g),1),t({search:{...o.search,fields:C}})}}function d(){let p=o.search.fields??[],g=a.current?.value;if(!g)return;let C=[...p],O=C.indexOf(g);O<=0||(y(C,O,O-1),t({search:{...o.search,fields:C}}))}function c(){let p=o.search.fields??[],g=a.current?.value;if(!g)return;let C=[...p],O=C.indexOf(g);O>=C.length-1||(y(C,O,O+1),t({search:{...o.search,fields:C}}))}function y(p,g,C){let O=p[g];p[g]=p[C],p[C]=O}if(!e.visible)return null;let b=e.search.resourceType,A=cp.types[b],I=o.search.fields??[],D=Ip(A).filter(p=>!I.includes(p)).sort((p,g)=>p.localeCompare(g));return X.createElement(dp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},X.createElement("div",null,X.createElement("table",{style:{margin:"auto"}},X.createElement("thead",null,X.createElement("tr",null,X.createElement("th",{colSpan:2,align:"center"},"Available"),X.createElement("th",{colSpan:2,align:"center"},"Selected"))),X.createElement("tbody",null,X.createElement("tr",null,X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:p=>n(p),onDoubleClick:()=>f(),"data-testid":"available"},D.map(p=>X.createElement("option",{key:p,value:p},ye(p))))),X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:p=>l(p),onDoubleClick:()=>s(),"data-testid":"selected"},I.map(p=>X.createElement("option",{key:p,value:p},ye(p))))))),X.createElement("tfoot",null,X.createElement("tr",null,X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:i},"Add")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:u},"Remove")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:d},"Up")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:c},"Down")))))),X.createElement(nt,{onClick:()=>e.onOk(o.search)},"OK"))}function Ip(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(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as lt,Group as bp,Modal as Dp,NativeSelect as cl}from"@mantine/core";import{globalSchema as Tp,stringify as ml}from"@medplum/core";import R,{useEffect as kp,useRef as xl,useState as ya}from"react";import{formatDateTime as gp,getSearchParameterDetails as hp,globalSchema as Cp,Operator as dl,SearchParameterType as yp}from"@medplum/core";import ft from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=Cp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return ft.createElement(Oe,{value:{reference:t.value}});let a=hp(o,r);if(t.code==="_lastUpdated"||a.type===yp.DATETIME)return ft.createElement(ft.Fragment,null,gp(t.value))}return ft.createElement(ft.Fragment,null,t.value)}import{Checkbox as vp,TextInput as Ca}from"@mantine/core";import{getSearchParameterDetails as Sp,SearchParameterType as Oo}from"@medplum/core";import no from"react";function Qt(e){let o=Sp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Oo.REFERENCE:return no.createElement(ko,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Oo.BOOLEAN:return no.createElement(vp,{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 Oo.DATE:return no.createElement(Ca,{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 Oo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Oo.NUMBER:return no.createElement(Ca,{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 Oo.QUANTITY:return no.createElement(be,{name:t,defaultValue:Pp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(Ca,{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 Pp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Il(e){let[o,t]=ya(JSON.parse(ml(e.search))),[r,a]=ya(-1),n=xl(o);n.current=o,kp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(wo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Tp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Dp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(pl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let y=[...i];y[d]=c,t(rt(n.current,y)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Bp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(jf(n.current,d))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(bp,{position:"right",mt:"xl"},R.createElement(lt,{onClick:()=>e.onOk(n.current)},"OK")))}function Bp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,at(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=ya(e.defaultValue??{}),r=xl(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&&ll(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(cl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,s&&R.createElement(cl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:at(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Qt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(lt,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Ap,Grid as va,Modal as Fp}from"@mantine/core";import fo,{useState as Mp}from"react";function gl(e){let[o,t]=Mp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Fp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(va,null,fo.createElement(va.Col,{span:10},fo.createElement(Qt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(va.Col,{span:2},fo.createElement(Ap,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as se}from"@medplum/core";import m from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(ha(e.search,n.code,f))}function t(n){a(zt(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?m.createElement(wp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},ye(n.code))))}function wp(e){switch(e.searchParam.type){case"date":return m.createElement(Op,{...e});case"number":case"quantity":return m.createElement(Ep,{...e});case"reference":return m.createElement(Lp,{...e});case"string":case"token":case"uri":return m.createElement(Rp,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Op(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(xr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),m.createElement(Xt,{...e}))}function Ep(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Xt,{...e}))}function Lp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),m.createElement(Xt,{...e}))}function Rp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),m.createElement(Xt,{...e}))}function Xt(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(mr,{size:14}),onClick:()=>e.onChange(ga(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(cr,{size:14}),onClick:()=>e.onChange(ga(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Vr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Np,globalSchema as Hp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Vp(o,r));return t}function Vp(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=Np(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var ba=class extends Event{constructor(t){super("change");this.definition=t}},Da=class extends Event{constructor(t){super("load");this.response=t}},lo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Kp=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 jp(e){let{classes:o}=Kp(),t=S(),[r,a]=Pa(!1),[n,f]=Pa(),{search:l,onLoad:s}=e,[i,u]=Pa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=$p(i);d.current=i;let c=l.total??"accurate",y=vl(T=>{f(void 0),t.search(l.resourceType,Xp({...l,total:c,fields:void 0}),T).then(W=>{u({...d.current,searchResponse:W}),s&&s(new Da(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),b=vl(()=>{u({...d.current,searchResponse:void 0}),y({cache:"reload"})},[y]);Sl(()=>{y()},[y]);function A(T,W){T.stopPropagation();let ae=T.target.checked,de={...d.current.selected};ae?de[W]=!0:delete de[W],u({...d.current,selected:de})}function I(T){T.stopPropagation();let _=T.target.checked,ae={},de=d.current.searchResponse;_&&de?.entry&&de.entry.forEach(Vo=>{Vo.resource?.id&&(ae[Vo.resource.id]=!0)}),u({...d.current,selected:ae})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let W of T.searchResponse.entry)if(W.resource?.id&&!T.selected[W.resource.id])return!1;return!0}function p(T){e.onChange&&e.onChange(new ba(T))}function g(T,W){if(ht(T.target)||T.button===2)return;H(T);let _=T.button===1||T.ctrlKey||T.metaKey;!_&&e.onClick&&e.onClick(new lo(W,T)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,T))}function C(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Sl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Jp.types[e.search.resourceType]))return P.createElement(Jt,{style:{width:"100%",height:"100%"}},P.createElement(Up,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,v=Y?.entry?.map(T=>T.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return P.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&P.createElement($t,{position:"apart",mb:"xl"},P.createElement($t,{spacing:2},P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(yr,{size:he}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(kr,{size:he}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Tr,{size:he}),onClick:e.onNew},"New..."),!Ye&&C()&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Hr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Jo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(pr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),P.createElement($t,{spacing:2},Y&&P.createElement(Sa,{size:"xs",color:"dimmed"},ex(l,Y.total),"-",ox(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),P.createElement(qp,{title:"Refresh",onClick:b},P.createElement(Er,{size:"1.125rem"})))),P.createElement(Wp,{className:o.table},P.createElement("thead",null,P.createElement("tr",null,Ie&&P.createElement("th",null,P.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>I(T)})),ge.map(T=>P.createElement("th",{key:T.name},P.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},P.createElement(yl.Target,null,P.createElement(Qp,{className:o.control},P.createElement($t,{position:"apart",noWrap:!0},P.createElement(Sa,{weight:500,size:"sm"},ye(T.name)),P.createElement(Jt,{className:o.icon},P.createElement(dr,{size:14,stroke:1.5}))))),P.createElement(hl,{search:e.search,searchParams:T.searchParams,onPrompt:(W,_)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{p(W)}}))))),!e.hideFilters&&P.createElement("tr",null,Ie&&P.createElement("th",null),ge.map(T=>P.createElement("th",{key:T.name},T.searchParams&&P.createElement(_p,{resourceType:ue,searchParams:T.searchParams,filters:e.search.filters}))))),P.createElement("tbody",null,v?.map(T=>T&&P.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>g(W,T),onAuxClick:W=>g(W,T)},Ie&&P.createElement("td",null,P.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${T.id}`,checked:!!i.selected[T.id],onChange:W=>A(W,T.id)})),ge.map(W=>P.createElement("td",{key:W.name},sl(T,W))))))),v?.length===0&&P.createElement(Xe,null,P.createElement(Jt,{style:{height:150}},P.createElement(Sa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&P.createElement(Jt,{m:"md",p:"md"},P.createElement(zp,{value:Zp(l),total:Yp(l,Y.total),onChange:T=>p(al(l,T)),getControlProps:T=>{switch(T){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(ul,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{p(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),P.createElement(Il,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{p(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),P.createElement($f,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),P.createElement(gl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{p(wo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var sF=P.memo(jp);function _p(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=>P.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},at(t.operator),"\xA0",P.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function Zp(e){return Math.floor((e.offset??0)/(e.count??Ta))+1}function Yp(e,o){let t=e.count??Ta;return Math.ceil(o/t)}function ex(e,o){return Math.min(o,(e.offset??0)+1)}function ox(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ta))}function fx(e){let o=S(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,d]=Kt({}),c=bl();c.current=s;let y=bl({});y.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(C=>n(nx(C)))},[o,f]);function b(C,O){C.stopPropagation();let ge=C.target.checked,ue={...y.current};ge?ue[O]=!0:delete ue[O],d(ue)}function A(C){C.stopPropagation();let Ie=C.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),d(ge)}function I(){let C=c.current?.data.ResourceList;if(!C||C.length===0)return!1;for(let O of C)if(O.id&&!y.current[O.id])return!1;return!0}function D(C,O){ht(C.target)||(H(C),C.button!==1&&e.onClick&&e.onClick(new lo(O,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,C)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(C=>{r({...C})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(rx,null);let g=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:C=>H(C),"data-testid":"search-control"},te.createElement(ax,null,te.createElement("thead",null,te.createElement("tr",null,g&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),onChange:C=>A(C)})),l.map(C=>te.createElement("th",{key:C.name},C.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(C=>C&&te.createElement("tr",{key:C.id,"data-testid":"search-control-row",onClick:O=>D(O,C),onAuxClick:O=>D(O,C)},g&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!u[C.id],onChange:O=>b(O,C.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Xf,{propertyType:O.propertyType,path:O.fhirPath,resource:C}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(tx,{onClick:()=>e.onBulk(Object.keys(y.current))},"Bulk..."))}var CF=te.memo(fx);import so from"react";function je(e){return so.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},so.createElement("title",null,"Medplum Logo"),so.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),so.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"}),so.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"}),so.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),so.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as lx}from"@mantine/core";import ka from"react";function Lo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ka.createElement(lx,{icon:ka.createElement(oo,{size:16}),color:"red"},o.map(t=>ka.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as jt}from"@medplum/core";import sx,{useCallback as ix}from"react";function wF(e){let o=ix((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 sx.createElement(Ke,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:jt(t),sender:jt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:jt(t),operator:jt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Tl,Button as ux,createStyles as dx,NativeSelect as cx,Stack as mx,TextInput as Aa}from"@mantine/core";import{getReferenceString as px}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as st}from"react";var Bl=dx(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 KF(e){let o=S(),t=Q(e.value),[r,a]=st(void 0),[n,f]=st(),[l,s]=st(),[i,u]=st();function d(){s(void 0)}function c(){f(void 0)}let y=kl();if(y.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(yx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function b(A,I){u({...y.current,[A]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Aa,{label:"Plan Title",defaultValue:i.title,onChange:A=>b("title",A.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:A=>b("action",A)}),q.createElement(ux,{type:"submit"},"Save")))}function Al(e){let{classes:o}=Bl(),t=kl();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 q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(xx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:f=>{H(f),a({id:Ml()})}},"Add action")))}function xx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=Cx(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 q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(gx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(Ix,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Fa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Ix(e){let{action:o,actionType:t}=e,[r,a]=Fl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ro,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(ce,{property:Fa,propertyType:a,value:r})))}function gx(e){let{action:o}=e,[t,r]=st(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(mx,{spacing:"xl"},q.createElement(Aa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Aa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(cx,{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&&q.createElement(Al,{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 q.createElement(_t,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(_t,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(_t,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(_t,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(hx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function _t(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Et,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:px(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function hx(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Fa,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Yo(o,t,f??t,Fa,n))}})}function Cx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Fl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Ba=1;function Ml(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 yx(e){return{...e,action:wl(e.action)}}function wl(e){if(e)return e.map(o=>({...o,id:Ml(o.id),action:wl(o.action)}))}import{Anchor as He,Button as Jx,createStyles as $x,NativeSelect as Kx,Textarea as jx,TextInput as Oa,Title as _x}from"@mantine/core";import{globalSchema as Zx,isResource as Yx}from"@medplum/core";import F,{useEffect as $l,useRef as eI,useState as Zt}from"react";import{Anchor as Ul,Button as Ro,Checkbox as vx,Group as Sx,NativeSelect as Px,Radio as Ll,Stack as bx,Stepper as Rl,Textarea as Dx,TextInput as it,Title as Tx}from"@mantine/core";import{capitalize as zl,createReference as kx,getExtension as Bx,getQuestionnaireAnswers as Ax,getReferenceString as Wl,getTypedPropertyValue as uo,globalSchema as Fx,stringify as Nl,evalFhirPathTyped as Mx}from"@medplum/core";import B,{useEffect as Hl,useState as io}from"react";var Ol=(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))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Ql(e){let o=S(),t=o.getProfile(),[r,a]=io(),n=Q(e.questionnaire),[f,l]=io(),[s,i]=io({}),[u,d]=io(0),c=Gx(n?.item??[]),y=()=>d(I=>I>=c?I:I+1),b=()=>d(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?Lx(n):void 0)},[n]);function A(I){let D={resourceType:"QuestionnaireResponse",item:I};l(D),i(Ax(D))}return!r||!n?null:B.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Wl(n),subject:e.subject,source:kx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&B.createElement(Tx,null,n.title),n.item&&B.createElement(Xl,{items:n.item,answers:s,onChange:A,renderPages:c>1,activePage:u}),B.createElement(Sx,{position:"right",mt:"xl"},B.createElement(Ex,{activePage:u,numberOfPages:c,nextStep:y,prevStep:b,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=io(wa(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?B.createElement(Rl.Step,{label:n.text,key:n.linkId},B.createElement(Vl,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r})):B.createElement(Vl,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r}));return e.renderPages?B.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):B.createElement(bx,null,a)}function Vl(e){return qx(e.item,e.answers)?e.item.type==="display"?B.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?B.createElement(ql,{key:e.item.linkId,item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)}):B.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},B.createElement(ql,{item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)})):null}function ql(e){let o=e.item;function t(r,a){let n=a??0,f=e.responseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:Xx(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?B.createElement(zx,{key:e.item.linkId,text:o.text??"",item:o??[],answers:e.answers,onChange:t}):B.createElement(Wx,{item:e.item,key:e.item.linkId},({index:r})=>B.createElement(Ma,{...e,index:r}))}function Ma(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.responseItems?.filter(d=>d.linkId===o.linkId)??[];e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:Qx(u[0]?.answer??[],i,l)})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return B.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},B.createElement(vx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return B.createElement(it,{type:"number",step:"any",id:n,name:n,defaultValue:f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return B.createElement(it,{type:"number",step:1,id:n,name:n,defaultValue:f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return B.createElement(it,{type:"date",id:n,name:n,defaultValue:f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return B.createElement(Be,{name:n,defaultValue:f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return B.createElement(it,{type:"time",id:n,name:n,defaultValue:f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return B.createElement(it,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return B.createElement(Dx,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return B.createElement(vt,{name:n,defaultValue:f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return B.createElement(ko,{name:n,targetTypes:Ux(o),defaultValue:f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return B.createElement(be,{name:n,defaultValue:f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Vx(o)?B.createElement(wx,{name:n,item:o,initial:f,onChangeAnswer:l=>r(l,t)}):B.createElement(Ox,{name:n,item:o,initial:f,onChangeAnswer:l=>r(l,t)});default:return null}}function wx(e){let{name:o,item:t,initial:r}=e,a=uo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=uo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Gl(l))}return B.createElement(Px,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=uo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+zl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Gl(a),data:n})}function Gl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ox(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Fx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=uo({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}`,c=uo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=d),l.push([d,c])}return B.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(d=>d[0]===i);if(u){let d=u[1],c="value"+zl(d.type);a({[c]:d.value})}}},l.map(([i,u])=>B.createElement(Ll,{key:i,id:i,value:i,label:B.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Ex(e){return e.activePage===0&&e.numberOfPages<=0?B.createElement(Ro,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.prevStep},"Back"),B.createElement(Ro,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.nextStep},"Next")):B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.prevStep},"Back"),B.createElement(Ro,{onClick:e.nextStep},"Next"))}function Lx(e){return{resourceType:"QuestionnaireResponse",questionnaire:Wl(e),item:wa(e.item)}}function wa(e){return e?.map(Rx)??[]}function Rx(e){return{id:Jl(),linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Hx)??[]}}var Nx=1;function Jl(){return"id-"+Nx++}function Hx(e){return{...e}}function Vx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function qx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=uo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=uo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),f,{operator:l}=r;if(l==="exists")f=!!a===n.value;else if(a===void 0)f=!1;else{let s=l==="="||l==="!="?l?.replace("=","~"):l,[{value:i}]=Mx(`%actualAnswer ${s} %expectedAnswer`,[a],{actualAnswer:a,expectedAnswer:n});f=i}if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Gx(e){return e.filter(t=>Bx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Ux(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function zx(e){let[o,t]=io(1),r=e.item;return B.createElement(B.Fragment,null,[...Array(o)].map((a,n)=>B.createElement("div",{key:n},B.createElement("h3",null,e.text),B.createElement(Xl,{items:r.item??[],answers:e.answers,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&B.createElement(Ul,{onClick:()=>t(a=>a+1)},"Add Group"))}function Wx(e){let[o,t]=io(1);return B.createElement(B.Fragment,null,[...Array(o)].map((r,a)=>B.createElement(B.Fragment,{key:`${e.item.linkId}-${a}`},e.children({index:a}))),e.item?.repeats&&B.createElement(Ul,{onClick:()=>t(r=>r+1)},"Add Item"))}function Qx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function Xx(e,o){return e.length===0||e.length<o+1?Jl():e[o].id}var oI=$x(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 AM(e){let o=S(),t=Q(e.questionnaire),[r,a]=Zt(),[n,f]=Zt(),[l,s]=Zt(),[i,u]=Zt();function d(){u(void 0)}function c(){s(void 0)}return $l(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),$l(()=>(f(aI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Kl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Jx,{type:"submit"},"Save")))}function Kl(e){let{classes:o,cx:t}=oI(),r=e.item,a=e.item,n=Yx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=eI();u.current=e.item;function d(g){H(g),e.setSelectedKey(e.item.id)}function c(g){H(g),e.setHoverKey(e.item.id)}function y(g){let C=u.current;e.onChange({...C,item:C.item?.map(O=>O.id===g.id?g:O)})}function b(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function A(g){e.onChange({...e.item,item:e.item.item?.filter(C=>C!==g)})}function I(g,C){e.onChange({...u.current,[g]:C})}function D(g){e.onChange({...e.item,item:e.item.item?.map(C=>C===g?{...C,repeats:!C.repeats}:C)})}let p=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:p,onClick:d,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:g=>I("title",g.currentTarget.value)}),!n&&F.createElement(jx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>I("text",g.currentTarget.value)}),a.type==="reference"&&F.createElement(rI,{item:a,onChange:g=>I("extension",g)}),El(a)&&F.createElement(tI,{options:a.answerOption,onChange:g=>I("answerOption",g)})):F.createElement(F.Fragment,null,r.title&&F.createElement(_x,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Ma,{item:a,index:0,answers:{},onChange:()=>{}}))),a.item?.map(g=>F.createElement("div",{key:g.id},F.createElement(Kl,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:y,onRemove:()=>A(g),onRepeatable:D}))),!f&&F.createElement("div",{className:o.topActions},s?F.createElement(F.Fragment,null,F.createElement(Oa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>I("linkId",g.currentTarget.value)}),!f&&F.createElement(Kx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>I("type",g.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"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b(fI())}},"Add Page"),s&&!n&&F.createElement(F.Fragment,null,F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function tI(e){let o=Zx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return F.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return F.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Re,{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)}})),F.createElement("div",null,F.createElement(He,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(He,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function rI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return F.createElement(F.Fragment,null,t.map(r=>F.createElement("div",{key:r.id},F.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Oa,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),F.createElement("div",null,F.createElement(He,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(He,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:_e(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ea=1,La=1;function Ra(e){return e+Ea++}function _e(){return"id-"+La++}function aI(e){return{...e,id:e.id||_e(),item:jl(e.item)}}function jl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(La=Math.max(La,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ea=Math.max(Ea,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||_e(),item:jl(o.item),answerOption:nI(o.answerOption)}))}function nI(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function fI(){return{id:_e(),linkId:Ra("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{ActionIcon as Yt,Button as lI,createStyles as sI,Divider as iI,Group as ut,NativeSelect as Na,Stack as er,Text as uI,TextInput as dI}from"@mantine/core";import{formatRange as _l,getCodeBySystem as cI}from"@medplum/core";import z,{useEffect as mI,useState as Ha}from"react";var pI=sI(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"}})),xI=["gender","age","gestationalAge","context","appliesTo","category"],II={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function VM(e){e=Object.assign(II,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return mI(()=>{let b=CI(o,l);r(yI(b.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(er,null,t.map(b=>z.createElement(gI,{unit:SI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:y,onRemoveGroup:u,key:`group-${b.id}`,intervalGroup:b}))),z.createElement(Yt,{title:"Add Group",size:"sm",onClick:b=>{H(b),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(mo,null)),z.createElement(ut,{position:"right"},z.createElement(lI,{type:"submit"},"Save")));function s(){let b=t.flatMap(A=>A.intervals).filter(A=>!PI(A));e.onSubmit({...o,qualifiedInterval:b})}function i(b){r(A=>[...A,b])}function u(b){r(A=>A.filter(I=>I.id!==b.id))}function d(b,A){r(I=>{I=[...I];let D=I.find(g=>g.id===b),p=D?.intervals.findIndex(g=>g.id===A.id);return p!==void 0&&D?.intervals[p]&&(D.intervals[p]=A),I})}function c(b,A){A.id===void 0&&(A.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let D=I.findIndex(p=>p.id===b);if(D!==-1){let p={...I[D]};A={...A,...p.filters},p.intervals=[...p.intervals,A],I[D]=p}return I})}function y(b,A){r(I=>{I=[...I];let D=I.find(p=>p.id===b);return D&&(D.intervals=D.intervals.filter(p=>p.id!==A.id)),I})}}function gI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=pI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(er,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(Yt,{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(Ue,null))),z.createElement(hI,{intervalGroup:o,onChange:e.onChange}),z.createElement(iI,null),o.intervals.map(a=>z.createElement(er,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(dI,{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(Yt,{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(Ue,null))),z.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(Yt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(mo,null))))}function hI(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(er,{style:{maxWidth:"50%"}},z.createElement(ut,null,z.createElement(Na,{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(ut,{spacing:"xs"},z.createElement(uI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(ot,{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(Na,{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"}]}})}}}),z.createElement(Na,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function CI(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 yI(e,o){let t=1,r={};for(let a of e){let n=vI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(xI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function vI(e){return[`gender=${e.gender}`,`age=${_l(e.age)}`,`gestationalAge=${_l(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function SI(e){return e&&(cI(e,"http://unitsofmeasure.org")||e.text)}function PI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Zl,Grid as or,Text as bI}from"@mantine/core";import{formatDateTime as DI,getReferenceString as TI}from"@medplum/core";import xe,{useEffect as kI,useState as Yl}from"react";function KM(e){let o=S(),t=Q(e.value),[r,a]=Yl(!1),[n,f]=Yl();if(kI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(or,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,y=d?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(or.Col,{span:1,p:"md"},d?.status==="completed"?xe.createElement(hr,null):xe.createElement(Rr,{color:"gray"})),xe.createElement(or.Col,{span:9,p:"xs"},xe.createElement(bI,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:d?.meta?.author}),"\xA0on\xA0",DI(d?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:d?.status||"unknown"}))),xe.createElement(or.Col,{span:2,p:"md"},c&&!y&&xe.createElement(Zl,{onClick:()=>e.onStart(d,c)},"Start"),c&&y&&xe.createElement(Zl,{onClick:()=>e.onEdit(d,c,y)},"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===TI(u.resource))return u.resource}}import{createStyles as EI}from"@mantine/core";import ve,{useEffect as LI,useState as RI}from"react";import{stringify as MI}from"@medplum/core";function tr(e,o){let t=BI(e,o);return AI(t,e,o)}function BI(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,c=u-1,y=l[d],b=l[c],A,I=0;i===-s||i!==s&&b.i<y.i?(I=y.i,A=y):(I=b.i+1,A=b),l[c]=void 0;let D=I-i,p={i:I,j:D,prev:FI(A),snake:!1};for(;I<t&&D<r&&e[I]===o[D];)I++,D++;if(I>p.i&&(p={i:I,j:D,prev:p,snake:!0}),l[u]=p,I>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function AI(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 FI(e){return e&&!e.snake&&e.prev?e.prev:e}function es(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:MI(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 wI(t,o),OI(t),t}function wI(e,o){for(let t=1;t<o.length;t++){let r=tr(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=EI(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 lw(e){let{classes:o}=NI(),t=S(),[r,a]=RI(e.history);if(LI(()=>{!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 ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=es(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Je,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:HI(n,l.meta.versionId)},VI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function HI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function VI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return No(t,"year");let r=Math.floor(o/2592e3);if(r>0)return No(r,"month");let a=Math.floor(o/86400);if(a>0)return No(a,"day");let n=Math.floor(o/3600);if(n>0)return No(n,"hour");let f=Math.floor(o/60);return f>0?No(f,"minute"):No(o,"second")}function No(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as qI}from"@mantine/core";import{stringify as os}from"@medplum/core";import Ze from"react";var GI=qI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function pw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=os(o,!0).match(/[^\r\n]+/g),a=os(t,!0).match(/[^\r\n]+/g),n=tr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(UI,{key:"delta"+l,delta:f})))}function UI(e){let{classes:o}=GI();return Ze.createElement(Ze.Fragment,null,"...",Ze.createElement("br",null),e.delta.original.lines.length>0&&Ze.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
66
66
|
`)),e.delta.revised.lines.length>0&&Ze.createElement("div",{className:o.added},e.delta.revised.lines.join(`
|
|
67
|
-
`)),"...",Ze.createElement("br",null))}import{Table as LI}from"@mantine/core";import{formatDateTime as RI,normalizeErrorString as NI}from"@medplum/core";import ie,{useEffect as HI,useState as VI}from"react";function pw(e){let o=v(),[t,r]=VI(e.history);return HI(()=>{!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(LI,{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(qI,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function qI(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Qe,{value:t.meta?.author,link:!0})),ie.createElement("td",null,RI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:UI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},NI(o?.outcome)))}function UI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as GI,createStyles as zI,Stack as WI,Text as XI}from"@mantine/core";import{getReferenceString as QI}from"@medplum/core";import Z,{useEffect as JI,useRef as $I,useState as dt}from"react";var KI=zI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Dw(e){let{classes:o}=KI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=dt(),l=$I();l.current=n;let[s,i]=dt(fa()),[u,m]=dt(),[c,h]=dt(),[P,k]=dt();if(JI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",QI(r)],["start","gt"+jI(s)],["start","lt"+_I(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let I=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},I&&Z.createElement(Ce,{value:I,size:"xl"}),I&&Z.createElement(XI,{size:"xl",weight:500},Z.createElement(Oe,{value:I})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,es(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Df,{slots:n,onChangeMonth:i,onClick:m})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(WI,null,n.map(b=>{let d=new Date(b.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:b.id},Z.createElement(GI,{variant:"outline",style:{width:150},onClick:()=>h(b)},es(d)))}))),u&&c&&!P&&Z.createElement(Wl,{questionnaire:a,submitButtonText:"Next",onSubmit:k}),u&&c&&P&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function jI(e){return os(e.getTime())}function _I(e){return os(e.getTime()+31*24*60*60*1e3)}function os(e){return new Date(Math.max(Date.now(),e)).toISOString()}function es(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as ar}from"@medplum/core";import ZI from"react";function ww(e){return ZI.createElement($e,{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:[ar(o)],subject:o.subject,sender:ar(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[ar(o)],subject:o.subject,operator:ar(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Cg}from"@medplum/core";import ur,{useEffect as yg,useState as is}from"react";import{Anchor as ts,Button as YI,Center as eg,Group as og,Stack as tg,Text as rg,TextInput as ag,Title as ng}from"@mantine/core";import{normalizeOperationOutcome as fg}from"@medplum/core";import Ae,{useState as lg}from"react";function nr(e){let o=v(),[t,r]=lg();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(fg(n))}}},Ae.createElement(eg,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(ng,null,"Create project")),Ae.createElement(tg,{spacing:"xl"},Ae.createElement(ag,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(rg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(ts,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(ts,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(og,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(YI,{type:"submit"},"Create project")))}import{Anchor as ir,Button as dg,Center as cg,Checkbox as mg,Divider as pg,Group as ns,PasswordInput as xg,Stack as Ig,Text as fs,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as ls}from"@medplum/core";import j,{useEffect as gg,useState as hg}from"react";import sg,{useEffect as ig,useRef as ug,useState as Va}from"react";function fr(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 lr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=ug(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return ig(()=>{if(typeof google>"u"){fr("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?sg.createElement("div",{ref:a}):null}function sr(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 rs(e){typeof grecaptcha>"u"&&fr("https://www.google.com/recaptcha/api.js?render="+e)}function as(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ss(e){let o=sr(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=hg(),f=At(a,void 0);return gg(()=>{t&&rs(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await as(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(ls(s))}}},j.createElement(cg,{sx:{flexDirection:"column"}},e.children),j.createElement(Eo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ns,{position:"center",p:"xl",style:{height:70}},j.createElement(lr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(ls(s))}}})),j.createElement(pg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Ig,{spacing:"xl"},j.createElement(qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(xg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(fs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(ir,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(fs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(ir,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ns,{position:"apart",mt:"xl",noWrap:!0},j.createElement(mg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(dg,{type:"submit"},"Create account")))}function xO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=is(void 0),[u,m]=is();yg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(h=>l.processCode(h.code)).then(()=>f()).catch(h=>m(Cg(h)))},[l,o,t,s,f]);function c(h){h.code?l.processCode(h.code).then(()=>f()).catch(console.log):h.login&&i(h.login)}return ur.createElement(qt,{width:450},u&&ur.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ur.createElement(ss,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ur.createElement(nr,{login:s,handleAuthResponse:c}))}import{showNotification as vs}from"@mantine/notifications";import{normalizeErrorString as Ss}from"@medplum/core";import uo,{useCallback as Ga,useEffect as jg,useState as za}from"react";import{Anchor as us,Button as ds,Center as cs,Checkbox as vg,Divider as Sg,Group as Ua,PasswordInput as Pg,Stack as bg,TextInput as Dg}from"@mantine/core";import{normalizeOperationOutcome as Tg}from"@medplum/core";import K,{useCallback as dr,useState as ms}from"react";function ps(e){let[o,t]=ms();return o?K.createElement(Bg,{email:o,...e}):K.createElement(kg,{setEmail:t,...e})}function kg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=v(),s=!e.disableGoogleAuth&&sr(e.googleClientId),i=dr(async c=>{if(!c.authorizeUrl)return!1;let h=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),P=new URL(c.authorizeUrl);return P.searchParams.set("state",h),window.location.assign(P.toString()),!0},[l,f]),u=dr(async c=>{let h=await l.post("auth/method",{email:c.email});await i(h)||o(c.email)},[l,i,o]),m=dr(async c=>{let h=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(h)||r(h)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(cs,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ua,{position:"center",p:"xl",style:{height:70}},K.createElement(lr,{googleClientId:s,handleGoogleCredential:m})),!n&&K.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Dg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ds,{type:"submit"},"Next")))}function Bg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=ms(),s=At(f,void 0),i=dr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(m=>l(Tg(m)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(cs,{sx:{flexDirection:"column"}},r),K.createElement(Eo,{issues:s}),K.createElement(bg,{spacing:"xl"},K.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(vg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ds,{type:"submit"},"Sign in")))}import{Avatar as Ag,Center as Fg,Group as Mg,Stack as wg,Text as xs,Title as Og,UnstyledButton as Eg}from"@mantine/core";import{normalizeOperationOutcome as Lg}from"@medplum/core";import Fe,{useState as Rg}from"react";function Is(e){let o=v(),[t,r]=Rg();return Fe.createElement(wg,null,Fe.createElement(Fg,{sx:{flexDirection:"column"}},Fe.createElement(Ke,{size:32}),Fe.createElement(Og,{order:3},"Choose profile")),Fe.createElement(Eo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Eg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Lg(n)))}},Fe.createElement(Mg,null,Fe.createElement(Ag,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(xs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(xs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Ng,Center as Hg,Checkbox as Vg,Group as qg,Stack as gs,Title as Ug}from"@mantine/core";import He from"react";function hs(e){let o=v();return He.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)}},He.createElement(gs,null,He.createElement(Hg,{sx:{flexDirection:"column"}},He.createElement(Ke,{size:32}),He.createElement(Ug,null,"Choose scope")),He.createElement(gs,null,(e.scope??"openid").split(" ").map(t=>He.createElement(Vg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),He.createElement(qg,{position:"right",mt:"xl"},He.createElement(Ng,{type:"submit"},"Set scope"))))}import{Alert as Gg,Button as zg,Center as Wg,Group as Xg,Stack as Cs,TextInput as Qg,Title as Jg}from"@mantine/core";import{normalizeErrorString as $g}from"@medplum/core";import Me,{useState as Kg}from"react";function ys(e){let o=v(),[t,r]=Kg(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($g(n)))}},Me.createElement(Cs,null,Me.createElement(Wg,{sx:{flexDirection:"column"}},Me.createElement(Ke,{size:32}),Me.createElement(Jg,null,"Enter MFA code")),t&&Me.createElement(Gg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(Cs,null,Me.createElement(Qg,{name:"token",label:"MFA code",required:!0})),Me.createElement(Xg,{position:"right",mt:"xl"},Me.createElement(zg,{type:"submit"},"Submit code"))))}function d0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=za(void 0),[m,c]=za(!1),[h,P]=za(void 0),k=Ga(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(w=>vs({color:"red",message:Ss(w)}))},[s,f,r]),I=Ga(d=>{c(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&P(d.memberships),d.code&&(t?P(void 0):k(d.code))},[t,k]),b=Ga(d=>{k(d.code)},[k]);return jg(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(d=>vs({color:"red",message:Ss(d)}))},[s,o,i,I]),uo.createElement(qt,{width:450},(()=>i?m?uo.createElement(ys,{login:i,handleAuthResponse:I}):h?uo.createElement(Is,{login:i,memberships:h,handleAuthResponse:I}):e.projectId==="new"?uo.createElement(nr,{login:i,handleAuthResponse:I}):e.chooseScopes?uo.createElement(hs,{login:i,scope:e.scope,handleAuthResponse:b}):uo.createElement("div",null,"Success"):uo.createElement(ps,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Xa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,AS as AppShell,yo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,So as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,jo as BackboneElementDisplay,Yo as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,bo as CodeableConceptDisplay,jn as CodeableConceptInput,Rn as CodingDisplay,_n as CodingInput,Hn as ContactDetailDisplay,Yn as ContactDetailInput,Pt as ContactPointDisplay,Mt as ContactPointInput,Xe as Container,Be as DateTimeInput,pB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ua as DiagnosticReportDisplay,qt as Document,Sc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,TB as EncounterTimeline,Io as ErrorBoundary,ax as FhirPathTable,J as Form,Pe as FormSection,Sn as Header,gt as HumanNameDisplay,tf as HumanNameInput,Vn as IdentifierDisplay,af as IdentifierInput,Gr as Loading,Ke as Logo,ne as MedplumLink,nh as MedplumProvider,dF as MemoizedFhirPathTable,eF as MemoizedSearchControl,Un as MoneyDisplay,nf as MoneyInput,kn as Navbar,fm as ObservationTable,Eo as OperationOutcomeAlert,Bo as Panel,bF as PatientTimeline,UF as PlanDefinitionBuilder,Ko as QuantityDisplay,be as QuantityInput,vM as QuestionnaireBuilder,Wl as QuestionnaireForm,Zt as QuestionnaireFormItem,Ol as QuestionnaireItemType,bt as RangeDisplay,et as RangeInput,ro as ReferenceDisplay,To as ReferenceInput,MM as ReferenceRangeEditor,iI as ReferenceRangeGroupEditor,xO as RegisterForm,UM as RequestGroupDisplay,Xn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Qe as ResourceBadge,YM as ResourceBlame,fw as ResourceDiff,kb as ResourceForm,pw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,da as ResourceTable,$e as ResourceTimeline,Dw as Scheduler,Da as SearchChangeEvent,lo as SearchClickEvent,$p as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Ta as SearchLoadEvent,ww as ServiceRequestTimeline,d0 as SignInForm,Nt as StatusBadge,Nf as Timeline,Je as TimelineItem,vf as TimingInput,ga as addDateFilterBetween,zB as addField,Mo as addFilter,el as addLastMonthFilter,ha as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,GB as clearFilters,zt as clearFiltersOnField,hd as convertIsoToLocal,Cd as convertLocalToIso,fr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Mc as getMonthString,rt as getOpString,as as getRecaptcha,ll as getSearchOperators,nl as getSortField,fa as getStartMonth,MI as getTimeString,Se as getValueAndType,rs as initRecaptcha,El as isChoiceQuestion,Rx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,tt as setFilters,fp as setOffset,al as setPage,Zo as setPropertyValue,Ca as setSort,qf as sortByDateAndPriority,WB as toggleSort,v as useMedplum,Uo as useMedplumContext,qe as useMedplumNavigate,mt as useMedplumProfile,X as useResource};
|
|
67
|
+
`)),"...",Ze.createElement("br",null))}import{Table as zI}from"@mantine/core";import{formatDateTime as WI,normalizeErrorString as QI}from"@medplum/core";import ie,{useEffect as XI,useState as JI}from"react";function Sw(e){let o=S(),[t,r]=JI(e.history);return XI(()=>{!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(zI,{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($I,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function $I(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,WI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:KI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},QI(o?.outcome)))}function KI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as jI,createStyles as _I,Stack as ZI,Text as YI}from"@mantine/core";import{getReferenceString as eg}from"@medplum/core";import Z,{useEffect as og,useRef as tg,useState as dt}from"react";var rg=_I(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Ow(e){let{classes:o}=rg(),t=S(),r=Q(e.schedule),a=Q(e.questionnaire),[n,f]=dt(),l=tg();l.current=n;let[s,i]=dt(na()),[u,d]=dt(),[c,y]=dt(),[b,A]=dt();if(og(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",eg(r)],["start","gt"+ag(s)],["start","lt"+ng(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let I=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},I&&Z.createElement(Ce,{value:I,size:"xl"}),I&&Z.createElement(YI,{size:"xl",weight:500},Z.createElement(Oe,{value:I})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,ts(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Df,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(ZI,null,n.map(D=>{let p=new Date(D.start);return p.getTime()>u.getTime()&&p.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:D.id},Z.createElement(jI,{variant:"outline",style:{width:150},onClick:()=>y(D)},ts(p)))}))),u&&c&&!b&&Z.createElement(Ql,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&b&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function ag(e){return rs(e.getTime())}function ng(e){return rs(e.getTime()+31*24*60*60*1e3)}function rs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function ts(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as rr}from"@medplum/core";import fg from"react";function qw(e){return fg.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:[rr(o)],subject:o.subject,sender:rr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[rr(o)],subject:o.subject,operator:rr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as kg}from"@medplum/core";import ir,{useEffect as Bg,useState as ds}from"react";import{Anchor as as,Button as lg,Center as sg,Group as ig,Stack as ug,Text as dg,TextInput as cg,Title as mg}from"@mantine/core";import{normalizeOperationOutcome as pg}from"@medplum/core";import Ae,{useState as xg}from"react";function ar(e){let o=S(),[t,r]=xg();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(pg(n))}}},Ae.createElement(sg,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(mg,null,"Create project")),Ae.createElement(ug,{spacing:"xl"},Ae.createElement(cg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(dg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(as,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(as,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(ig,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(lg,{type:"submit"},"Create project")))}import{Anchor as sr,Button as Cg,Center as yg,Checkbox as vg,Divider as Sg,Group as ls,PasswordInput as Pg,Stack as bg,Text as ss,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as is}from"@medplum/core";import j,{useEffect as Dg,useState as Tg}from"react";import Ig,{useEffect as gg,useRef as hg,useState as Va}from"react";function nr(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 fr(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=hg(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return gg(()=>{if(typeof google>"u"){nr("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?Ig.createElement("div",{ref:a}):null}function lr(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 ns(e){typeof grecaptcha>"u"&&nr("https://www.google.com/recaptcha/api.js?render="+e)}function fs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function us(e){let o=lr(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Tg(),f=At(a,void 0);return Dg(()=>{t&&ns(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await fs(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(is(s))}}},j.createElement(yg,{sx:{flexDirection:"column"}},e.children),j.createElement(Lo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ls,{position:"center",p:"xl",style:{height:70}},j.createElement(fr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(is(s))}}})),j.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(bg,{spacing:"xl"},j.createElement(qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(ss,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(sr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(ss,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(sr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ls,{position:"apart",mt:"xl",noWrap:!0},j.createElement(vg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(Cg,{type:"submit"},"Create account")))}function PO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=ds(void 0),[u,d]=ds();Bg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(y=>l.processCode(y.code)).then(()=>f()).catch(y=>d(kg(y)))},[l,o,t,s,f]);function c(y){y.code?l.processCode(y.code).then(()=>f()).catch(console.log):y.login&&i(y.login)}return ir.createElement(qt,{width:450},u&&ir.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ir.createElement(us,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ir.createElement(ar,{login:s,handleAuthResponse:c}))}import{showNotification as Ps}from"@mantine/notifications";import{normalizeErrorString as bs}from"@medplum/core";import co,{useCallback as Ua,useEffect as ah,useState as za}from"react";import{Anchor as cs,Button as ms,Center as ps,Checkbox as Ag,Divider as Fg,Group as Ga,PasswordInput as Mg,Stack as wg,TextInput as Og}from"@mantine/core";import{normalizeOperationOutcome as Eg}from"@medplum/core";import K,{useCallback as ur,useState as xs}from"react";function Is(e){let[o,t]=xs();return o?K.createElement(Rg,{email:o,...e}):K.createElement(Lg,{setEmail:t,...e})}function Lg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=S(),s=!e.disableGoogleAuth&&lr(e.googleClientId),i=ur(async c=>{if(!c.authorizeUrl)return!1;let y=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),b=new URL(c.authorizeUrl);return b.searchParams.set("state",y),window.location.assign(b.toString()),!0},[l,f]),u=ur(async c=>{let y=await l.post("auth/method",{email:c.email});await i(y)||o(c.email)},[l,i,o]),d=ur(async c=>{let y=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(y)||r(y)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(ps,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ga,{position:"center",p:"xl",style:{height:70}},K.createElement(fr,{googleClientId:s,handleGoogleCredential:d})),!n&&K.createElement(Fg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Og,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ga,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(cs,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ms,{type:"submit"},"Next")))}function Rg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=xs(),s=At(f,void 0),i=ur(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(Eg(d)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(ps,{sx:{flexDirection:"column"}},r),K.createElement(Lo,{issues:s}),K.createElement(wg,{spacing:"xl"},K.createElement(Mg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ga,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(cs,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Ag,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ms,{type:"submit"},"Sign in")))}import{Avatar as Ng,Center as Hg,Group as Vg,Stack as qg,Text as gs,Title as Gg,UnstyledButton as Ug}from"@mantine/core";import{normalizeOperationOutcome as zg}from"@medplum/core";import Fe,{useState as Wg}from"react";function hs(e){let o=S(),[t,r]=Wg();return Fe.createElement(qg,null,Fe.createElement(Hg,{sx:{flexDirection:"column"}},Fe.createElement(je,{size:32}),Fe.createElement(Gg,{order:3},"Choose profile")),Fe.createElement(Lo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Ug,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(zg(n)))}},Fe.createElement(Vg,null,Fe.createElement(Ng,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(gs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(gs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Qg,Center as Xg,Checkbox as Jg,Group as $g,Stack as Cs,Title as Kg}from"@mantine/core";import Ve from"react";function ys(e){let o=S();return Ve.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)}},Ve.createElement(Cs,null,Ve.createElement(Xg,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(Kg,null,"Choose scope")),Ve.createElement(Cs,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(Jg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement($g,{position:"right",mt:"xl"},Ve.createElement(Qg,{type:"submit"},"Set scope"))))}import{Alert as jg,Button as _g,Center as Zg,Group as Yg,Stack as vs,TextInput as eh,Title as oh}from"@mantine/core";import{normalizeErrorString as th}from"@medplum/core";import Me,{useState as rh}from"react";function Ss(e){let o=S(),[t,r]=rh(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(th(n)))}},Me.createElement(vs,null,Me.createElement(Zg,{sx:{flexDirection:"column"}},Me.createElement(je,{size:32}),Me.createElement(oh,null,"Enter MFA code")),t&&Me.createElement(jg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(vs,null,Me.createElement(eh,{name:"token",label:"MFA code",required:!0})),Me.createElement(Yg,{position:"right",mt:"xl"},Me.createElement(_g,{type:"submit"},"Submit code"))))}function C0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=za(void 0),[d,c]=za(!1),[y,b]=za(void 0),A=Ua(p=>{f?f(p):s.processCode(p).then(()=>{r&&r()}).catch(g=>Ps({color:"red",message:bs(g)}))},[s,f,r]),I=Ua(p=>{c(!!p.mfaRequired),p.login&&u(p.login),p.memberships&&b(p.memberships),p.code&&(t?b(void 0):A(p.code))},[t,A]),D=Ua(p=>{A(p.code)},[A]);return ah(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(p=>Ps({color:"red",message:bs(p)}))},[s,o,i,I]),co.createElement(qt,{width:450},(()=>i?d?co.createElement(Ss,{login:i,handleAuthResponse:I}):y?co.createElement(hs,{login:i,memberships:y,handleAuthResponse:I}):e.projectId==="new"?co.createElement(ar,{login:i,handleAuthResponse:I}):e.chooseScopes?co.createElement(ys,{login:i,scope:e.scope,handleAuthResponse:D}):co.createElement("div",null,"Success"):co.createElement(Is,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Qa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,NS as AppShell,vo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,Po as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,_o as BackboneElementDisplay,et as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,Do as CodeableConceptDisplay,jn as CodeableConceptInput,Rn as CodingDisplay,_n as CodingInput,Hn as ContactDetailDisplay,Yn as ContactDetailInput,Pt as ContactPointDisplay,Mt as ContactPointInput,Xe as Container,Be as DateTimeInput,SB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ia as DiagnosticReportDisplay,qt as Document,bc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,EB as EncounterTimeline,go as ErrorBoundary,fx as FhirPathTable,J as Form,Pe as FormSection,Sn as Header,gt as HumanNameDisplay,tf as HumanNameInput,Vn as IdentifierDisplay,af as IdentifierInput,Gr as Loading,je as Logo,ne as MedplumLink,mh as MedplumProvider,CF as MemoizedFhirPathTable,sF as MemoizedSearchControl,Gn as MoneyDisplay,nf as MoneyInput,kn as Navbar,sm as ObservationTable,Lo as OperationOutcomeAlert,Ao as Panel,wF as PatientTimeline,KF as PlanDefinitionBuilder,jo as QuantityDisplay,be as QuantityInput,AM as QuestionnaireBuilder,Ql as QuestionnaireForm,Ma as QuestionnaireFormItem,Ol as QuestionnaireItemType,ql as QuestionnaireRepeatWrapper,bt as RangeDisplay,ot as RangeInput,ro as ReferenceDisplay,ko as ReferenceInput,VM as ReferenceRangeEditor,gI as ReferenceRangeGroupEditor,PO as RegisterForm,KM as RequestGroupDisplay,Qn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Je as ResourceBadge,lw as ResourceBlame,pw as ResourceDiff,Lb as ResourceForm,Sw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,ua as ResourceTable,Ke as ResourceTimeline,Ow as Scheduler,ba as SearchChangeEvent,lo as SearchClickEvent,jp as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Da as SearchLoadEvent,qw as ServiceRequestTimeline,C0 as SignInForm,Nt as StatusBadge,Nf as Timeline,$e as TimelineItem,vf as TimingInput,Ia as addDateFilterBetween,_B as addField,wo as addFilter,el as addLastMonthFilter,ga as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,jB as clearFilters,zt as clearFiltersOnField,yd as convertIsoToLocal,vd as convertLocalToIso,nr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Oc as getMonthString,at as getOpString,fs as getRecaptcha,ll as getSearchOperators,nl as getSortField,na as getStartMonth,VI as getTimeString,Se as getValueAndType,ns as initRecaptcha,El as isChoiceQuestion,qx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,rt as setFilters,sp as setOffset,al as setPage,Yo as setPropertyValue,ha as setSort,qf as sortByDateAndPriority,ZB as toggleSort,S as useMedplum,Uo as useMedplumContext,Ge as useMedplumNavigate,mt as useMedplumProfile,Q as useResource};
|
|
68
68
|
//# sourceMappingURL=index.mjs.map
|