@medplum/react 2.0.28 → 2.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +4 -4
- package/dist/cjs/index.cjs.map +2 -2
- package/dist/esm/index.mjs +4 -4
- package/dist/esm/index.mjs.map +2 -2
- package/package.json +15 -15
package/dist/esm/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{formatAddress as hs}from"@medplum/core";import Ha from"react";function Va(e){let o=e.value;return o?Ha.createElement(Ha.Fragment,null,hs(o)):null}import{Group as ys,NativeSelect as qa,TextInput as No}from"@mantine/core";import Ve,{useRef as Cs,useState as vs}from"react";function Ga(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Ua(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function za(e){let[o,t]=vs(e.defaultValue||{}),r=Cs();r.current=o;function a(m){t(m),e.onChange&&e.onChange(m)}function n(m){a({...r.current,use:m})}function f(m){a({...r.current,type:m})}function l(m){a(Ua(r.current||{},0,m))}function s(m){a(Ua(r.current||{},1,m))}function i(m){a({...r.current,city:m})}function u(m){a({...r.current,state:m})}function c(m){a({...r.current,postalCode:m})}return Ve.createElement(ys,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(qa,{"data-testid":"address-use",defaultValue:o.use,onChange:m=>n(m.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(qa,{"data-testid":"address-type",defaultValue:o.type,onChange:m=>f(m.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(No,{placeholder:"Line 1",defaultValue:Ga(o,0),onChange:m=>l(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"Line 2",defaultValue:Ga(o,1),onChange:m=>s(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"City",defaultValue:o.city,onChange:m=>i(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"State",defaultValue:o.state,onChange:m=>u(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:m=>c(m.currentTarget.value)}))}import{TextInput as As}from"@mantine/core";import{createReference as Ms}from"@medplum/core";import Fs,{useRef as Os,useState as ws}from"react";import{showNotification as Ss}from"@mantine/notifications";import bs,{createContext as Ps,useContext as Ds,useEffect as Wa,useMemo as Ts,useState as ks}from"react";var Xa=Ps(void 0);function qg(e){let o=e.medplum,t=e.navigate??Bs,[r,a]=ks({profile:o.getProfile(),loading:!1});Wa(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),Wa(()=>{function f(){Ss({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Ts(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return bs.createElement(Xa.Provider,{value:n},e.children)}function Ho(){return Ds(Xa)}function v(){return Ho().medplum}function qe(){return Ho().navigate}function it(){return Ho().profile}function Bs(e){window.location.assign(e)}function Qa(e){let o=it(),[t,r]=ws(e.defaultValue||{}),a=Os();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Ms(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Fs.createElement(As,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as uu,useMantineTheme as du}from"@mantine/core";import Ye,{Suspense as cu,useState as mu}from"react";import{Alert as qs}from"@mantine/core";import{normalizeErrorString as Gs}from"@medplum/core";import{forwardRef as Es,createElement as $a}from"react";import _e from"prop-types";var Ja={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 Ls=Object.defineProperty,Rs=Object.defineProperties,Ns=Object.getOwnPropertyDescriptors,ut=Object.getOwnPropertySymbols,_a=Object.prototype.hasOwnProperty,Za=Object.prototype.propertyIsEnumerable,Ka=(e,o,t)=>o in e?Ls(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,ja=(e,o)=>{for(var t in o||(o={}))_a.call(o,t)&&Ka(e,t,o[t]);if(ut)for(var t of ut(o))Za.call(o,t)&&Ka(e,t,o[t]);return e},Hs=(e,o)=>Rs(e,Ns(o)),Vs=(e,o)=>{var t={};for(var r in e)_a.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&ut)for(var r of ut(e))o.indexOf(r)<0&&Za.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Es((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,c=Vs(f,["color","size","stroke","children"]);return $a("svg",ja(Hs(ja({ref:n},Ja),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),c),[...t.map(([m,S])=>$a(m,S)),...u||[]])});return r.propTypes={color:_e.string,size:_e.oneOfType([_e.string,_e.number]),stroke:_e.oneOfType([_e.string,_e.number])},r.displayName=`${o}`,r};var sr=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 Ze=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 ir=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 ur=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 dr=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 cr=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 mr=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 pr=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 we=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 xr=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Ir=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 gr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ge=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var uo=x("circle-plus","IconCirclePlus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}],["path",{d:"M12 9l0 6",key:"svg-2"}]]);var Vo=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 hr=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 yr=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 Cr=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 vr=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 co=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 mo=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Sr=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 br=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 Pr=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 Dr=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 Tr=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 dt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ct=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var kr=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 Br=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 Ar=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 Mr=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Fr=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 po=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 Go=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 Or=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 wr=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 Er=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 Uo=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 Lr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Rr from"react";var xo=class extends Rr.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?Rr.createElement(qs,{icon:Rr.createElement(Ze,{size:16}),title:"Something went wrong",color:"red"},Gs(this.state.error)):this.props.children}};import{Center as Us,Loader as zs}from"@mantine/core";import Ya from"react";function Nr(){return Ya.createElement(Us,{style:{width:"100%",height:"100vh"}},Ya.createElement(zs,null))}import{Avatar as Ti,createStyles as ki,Group as xt,Header as Bi,Menu as Ee,Stack as Ai,Text as zo,UnstyledButton as pn}from"@mantine/core";import{formatHumanName as Mi,getReferenceString as xn}from"@medplum/core";import q,{useState as Fi}from"react";import{formatHumanName as Ws}from"@medplum/core";import en from"react";function mt(e){let o=e.value;return o?en.createElement(en.Fragment,null,Ws(o,e.options)):null}import{Avatar as nn}from"@mantine/core";import{getDisplayString as ai,getImageSrc as ni}from"@medplum/core";import Hr from"react";import{Anchor as Xs}from"@mantine/core";import{isReference as Qs,isResource as Js}from"@medplum/core";import $s from"react";function H(e){e.preventDefault(),e.stopPropagation()}function pt(e){if(on(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&on(o[0]))return!0}return!1}function on(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ae(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=Ks(t);return r&&(s+="/"+r),$s.createElement(Xs,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function Ks(e){if(e){if(typeof e=="string")return js(e);if(Js(e))return _s(e);if(Qs(e))return Zs(e)}return"#"}function js(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function _s(e){return`/${e.resourceType}/${e.id}`}function Zs(e){return`/${e.reference}`}import{deepEquals as Ys,isReference as an,isResource as ei,normalizeOperationOutcome as oi}from"@medplum/core";import{useCallback as ti,useEffect as tn,useState as ri}from"react";function X(e,o){let t=v(),[r,a]=ri(rn(t,e)),n=ti(f=>{Ys(f,r)||a(f)},[r,a]);return tn(()=>{n(rn(t,e))},[t,e,n]),tn(()=>{let f=!0;return an(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(oi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function rn(e,o){if(o){if(ei(o))return o;if(an(o))return e.getCachedReference(o)}}function pe(e){let o=X(e.value),t=o?ai(o):e.alt??"",r=(o&&ni(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Hr.createElement(ae,{to:o},Hr.createElement(nn,{src:r,alt:t,radius:a,...n})):Hr.createElement(nn,{src:r,alt:t,radius:a,...n})}import{createStyles as ci,Group as mi,Text as ln}from"@mantine/core";import{formatHumanName as pi,getDisplayString as cn,getReferenceString as xi,isUUID as Ii}from"@medplum/core";import Ue,{forwardRef as gi,useCallback as sn}from"react";import{Loader as fi,MultiSelect as li}from"@mantine/core";import fn,{useCallback as Io,useEffect as si,useRef as go,useState as ho}from"react";import{showNotification as ii}from"@mantine/notifications";import{normalizeErrorString as ui}from"@medplum/core";function yo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=di(o),u=go(null),[c,m]=ho(void 0),[S,k]=ho(),[T,h]=ho(),[D,d]=ho(),[w,C]=ho(i.map(r)),[M,xe]=ho([]),Z=go();Z.current=c;let Ie=go();Ie.current=S;let ge=go();ge.current=T;let Pe=go();Pe.current=D;let g=go();g.current=M;let L=Io(()=>{k(void 0);let Y=u.current?.value.trim()||"";if(Y===Z.current)return;m(Y);let me=new AbortController;h(me),a(Y,me.signal).then(Oe=>{me.signal.aborted||(xe(Oe.map(r)),h(void 0),Pe.current&&(Oe.length>0&&n(Oe.slice(0,1)),d(!1)))}).catch(Oe=>{me.signal.aborted||Oe.message.includes("aborted")||ii({color:"red",message:ui(Oe)})})},[a,n,r]),He=Io(()=>{ge.current&&(ge.current.abort(),h(void 0)),Ie.current!==void 0&&window.clearTimeout(Ie.current);let Y=window.setTimeout(()=>L(),100);k(Y)},[L]),y=Io(Y=>{let me=[],Oe=[];for(let Na of Y){let st=g.current?.find(gs=>gs.value===Na),Ro=st?.resource;!Ro&&l!==!1&&f&&(Ro=f(Na),st=r(Ro)),Ro&&me.push(Ro),st&&Oe.push(st)}n(me),C(Oe)},[l,n,f,r]),W=Io(Y=>{Y.key==="Enter"&&(!Ie.current&&!ge.current?(H(Y),g.current&&g.current.length>0&&(xe(g.current.slice(0,1)),y([g.current[0].value]))):d(!0))},[y]),so=Io(Y=>{let me=r(f(Y));return xe([...g.current,me]),me},[f,xe,r]),io=Io((Y,me)=>!me,[]);return si(()=>()=>{ge.current&&ge.current.abort()},[]),fn.createElement(li,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:W,onSearchChange:He,data:[...w,...M],onFocus:L,onChange:y,onCreate:so,rightSectionWidth:40,rightSection:T?fn.createElement(fi,{size:16}):null,filter:io,creatable:!0})}function di(e){return e?Array.isArray(e)?e:[e]:[]}var hi=ci(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function yi(e){return e.id}function Ci(e){return{value:e.id,label:cn(e),resource:e}}function mn(e){let{classes:o}=hi(),t=qe(),r=v(),a=sn(async(f,l)=>{let s=Si(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return bi(u,f)},[r]),n=sn(f=>{f.length>0&&t(`/${xi(f[0])}`)},[t]);return Ue.createElement(yo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ue.createElement(Fr,{size:16}),placeholder:"Search",itemComponent:vi,toKey:yi,toOption:Ci,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var vi=gi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ue.createElement("div",{ref:t,...o},Ue.createElement(mi,{noWrap:!0},Ue.createElement(pe,{value:e}),Ue.createElement("div",null,Ue.createElement(ln,null,cn(e)),Ue.createElement(ln,{size:"xs",color:"dimmed"},r))))});function Si(e){let o=JSON.stringify(e);return Ii(e)?`{
|
|
1
|
+
import{formatAddress as hs}from"@medplum/core";import Ha from"react";function Va(e){let o=e.value;return o?Ha.createElement(Ha.Fragment,null,hs(o)):null}import{Group as Cs,NativeSelect as qa,TextInput as No}from"@mantine/core";import Ve,{useRef as ys,useState as vs}from"react";function Ua(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Ga(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function za(e){let[o,t]=vs(e.defaultValue||{}),r=ys();r.current=o;function a(m){t(m),e.onChange&&e.onChange(m)}function n(m){a({...r.current,use:m})}function f(m){a({...r.current,type:m})}function l(m){a(Ga(r.current||{},0,m))}function s(m){a(Ga(r.current||{},1,m))}function i(m){a({...r.current,city:m})}function u(m){a({...r.current,state:m})}function c(m){a({...r.current,postalCode:m})}return Ve.createElement(Cs,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(qa,{"data-testid":"address-use",defaultValue:o.use,onChange:m=>n(m.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(qa,{"data-testid":"address-type",defaultValue:o.type,onChange:m=>f(m.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(No,{placeholder:"Line 1",defaultValue:Ua(o,0),onChange:m=>l(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"Line 2",defaultValue:Ua(o,1),onChange:m=>s(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"City",defaultValue:o.city,onChange:m=>i(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"State",defaultValue:o.state,onChange:m=>u(m.currentTarget.value)}),Ve.createElement(No,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:m=>c(m.currentTarget.value)}))}import{TextInput as As}from"@mantine/core";import{createReference as Ms}from"@medplum/core";import Fs,{useRef as ws,useState as Os}from"react";import{showNotification as Ss}from"@mantine/notifications";import Ps,{createContext as bs,useContext as Ds,useEffect as Wa,useMemo as Ts,useState as ks}from"react";var Xa=bs(void 0);function qg(e){let o=e.medplum,t=e.navigate??Bs,[r,a]=ks({profile:o.getProfile(),loading:!1});Wa(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),Wa(()=>{function f(){Ss({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Ts(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ps.createElement(Xa.Provider,{value:n},e.children)}function Ho(){return Ds(Xa)}function v(){return Ho().medplum}function qe(){return Ho().navigate}function it(){return Ho().profile}function Bs(e){window.location.assign(e)}function Qa(e){let o=it(),[t,r]=Os(e.defaultValue||{}),a=ws();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Ms(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Fs.createElement(As,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as uu,useMantineTheme as du}from"@mantine/core";import Ye,{Suspense as cu,useState as mu}from"react";import{Alert as qs}from"@mantine/core";import{normalizeErrorString as Us}from"@medplum/core";import{forwardRef as Es,createElement as $a}from"react";import _e from"prop-types";var Ja={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 Ls=Object.defineProperty,Rs=Object.defineProperties,Ns=Object.getOwnPropertyDescriptors,ut=Object.getOwnPropertySymbols,_a=Object.prototype.hasOwnProperty,Za=Object.prototype.propertyIsEnumerable,Ka=(e,o,t)=>o in e?Ls(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,ja=(e,o)=>{for(var t in o||(o={}))_a.call(o,t)&&Ka(e,t,o[t]);if(ut)for(var t of ut(o))Za.call(o,t)&&Ka(e,t,o[t]);return e},Hs=(e,o)=>Rs(e,Ns(o)),Vs=(e,o)=>{var t={};for(var r in e)_a.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&ut)for(var r of ut(e))o.indexOf(r)<0&&Za.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Es((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,c=Vs(f,["color","size","stroke","children"]);return $a("svg",ja(Hs(ja({ref:n},Ja),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),c),[...t.map(([m,S])=>$a(m,S)),...u||[]])});return r.propTypes={color:_e.string,size:_e.oneOfType([_e.string,_e.number]),stroke:_e.oneOfType([_e.string,_e.number])},r.displayName=`${o}`,r};var sr=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 Ze=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 ir=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 ur=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 dr=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 cr=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 mr=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 pr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Oe=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var xr=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Ir=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 gr=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 uo=x("circle-plus","IconCirclePlus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}],["path",{d:"M12 9l0 6",key:"svg-2"}]]);var Vo=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 hr=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 Cr=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 yr=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 vr=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 co=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 mo=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Sr=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 Pr=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 Dr=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 Tr=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 dt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ct=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var kr=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 Br=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 Ar=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 Mr=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Fr=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 po=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 Uo=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 wr=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 Or=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 Er=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 Go=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 Lr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Rr from"react";var xo=class extends Rr.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?Rr.createElement(qs,{icon:Rr.createElement(Ze,{size:16}),title:"Something went wrong",color:"red"},Us(this.state.error)):this.props.children}};import{Center as Gs,Loader as zs}from"@mantine/core";import Ya from"react";function Nr(){return Ya.createElement(Gs,{style:{width:"100%",height:"100vh"}},Ya.createElement(zs,null))}import{Avatar as Ti,createStyles as ki,Group as xt,Header as Bi,Menu as Ee,Stack as Ai,Text as zo,UnstyledButton as pn}from"@mantine/core";import{formatHumanName as Mi,getReferenceString as xn}from"@medplum/core";import q,{useState as Fi}from"react";import{formatHumanName as Ws}from"@medplum/core";import en from"react";function mt(e){let o=e.value;return o?en.createElement(en.Fragment,null,Ws(o,e.options)):null}import{Avatar as nn}from"@mantine/core";import{getDisplayString as ai,getImageSrc as ni}from"@medplum/core";import Hr from"react";import{Anchor as Xs}from"@mantine/core";import{isReference as Qs,isResource as Js}from"@medplum/core";import $s from"react";function H(e){e.preventDefault(),e.stopPropagation()}function pt(e){if(on(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&on(o[0]))return!0}return!1}function on(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ae(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=Ks(t);return r&&(s+="/"+r),$s.createElement(Xs,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function Ks(e){if(e){if(typeof e=="string")return js(e);if(Js(e))return _s(e);if(Qs(e))return Zs(e)}return"#"}function js(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function _s(e){return`/${e.resourceType}/${e.id}`}function Zs(e){return`/${e.reference}`}import{deepEquals as Ys,isReference as an,isResource as ei,normalizeOperationOutcome as oi}from"@medplum/core";import{useCallback as ti,useEffect as tn,useState as ri}from"react";function X(e,o){let t=v(),[r,a]=ri(rn(t,e)),n=ti(f=>{Ys(f,r)||a(f)},[r,a]);return tn(()=>{n(rn(t,e))},[t,e,n]),tn(()=>{let f=!0;return an(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(oi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function rn(e,o){if(o){if(ei(o))return o;if(an(o))return e.getCachedReference(o)}}function pe(e){let o=X(e.value),t=o?ai(o):e.alt??"",r=(o&&ni(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Hr.createElement(ae,{to:o},Hr.createElement(nn,{src:r,alt:t,radius:a,...n})):Hr.createElement(nn,{src:r,alt:t,radius:a,...n})}import{createStyles as ci,Group as mi,Text as ln}from"@mantine/core";import{formatHumanName as pi,getDisplayString as cn,getReferenceString as xi,isUUID as Ii}from"@medplum/core";import Ge,{forwardRef as gi,useCallback as sn}from"react";import{Loader as fi,MultiSelect as li}from"@mantine/core";import fn,{useCallback as Io,useEffect as si,useRef as go,useState as ho}from"react";import{showNotification as ii}from"@mantine/notifications";import{normalizeErrorString as ui}from"@medplum/core";function Co(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=di(o),u=go(null),[c,m]=ho(void 0),[S,k]=ho(),[T,h]=ho(),[D,d]=ho(),[O,y]=ho(i.map(r)),[M,xe]=ho([]),Z=go();Z.current=c;let Ie=go();Ie.current=S;let ge=go();ge.current=T;let be=go();be.current=D;let g=go();g.current=M;let L=Io(()=>{k(void 0);let Y=u.current?.value.trim()||"";if(Y===Z.current)return;m(Y);let me=new AbortController;h(me),a(Y,me.signal).then(we=>{me.signal.aborted||(xe(we.map(r)),h(void 0),be.current&&(we.length>0&&n(we.slice(0,1)),d(!1)))}).catch(we=>{me.signal.aborted||we.message.includes("aborted")||ii({color:"red",message:ui(we)})})},[a,n,r]),He=Io(()=>{ge.current&&(ge.current.abort(),h(void 0)),Ie.current!==void 0&&window.clearTimeout(Ie.current);let Y=window.setTimeout(()=>L(),100);k(Y)},[L]),C=Io(Y=>{let me=[],we=[];for(let Na of Y){let st=g.current?.find(gs=>gs.value===Na),Ro=st?.resource;!Ro&&l!==!1&&f&&(Ro=f(Na),st=r(Ro)),Ro&&me.push(Ro),st&&we.push(st)}n(me),y(we)},[l,n,f,r]),W=Io(Y=>{Y.key==="Enter"&&(!Ie.current&&!ge.current?(H(Y),g.current&&g.current.length>0&&(xe(g.current.slice(0,1)),C([g.current[0].value]))):d(!0))},[C]),so=Io(Y=>{let me=r(f(Y));return xe([...g.current,me]),me},[f,xe,r]),io=Io((Y,me)=>!me,[]);return si(()=>()=>{ge.current&&ge.current.abort()},[]),fn.createElement(li,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:W,onSearchChange:He,data:[...O,...M],onFocus:L,onChange:C,onCreate:so,rightSectionWidth:40,rightSection:T?fn.createElement(fi,{size:16}):null,filter:io,creatable:!0})}function di(e){return e?Array.isArray(e)?e:[e]:[]}var hi=ci(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Ci(e){return e.id}function yi(e){return{value:e.id,label:cn(e),resource:e}}function mn(e){let{classes:o}=hi(),t=qe(),r=v(),a=sn(async(f,l)=>{let s=Si(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Pi(u,f)},[r]),n=sn(f=>{f.length>0&&t(`/${xi(f[0])}`)},[t]);return Ge.createElement(Co,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Fr,{size:16}),placeholder:"Search",itemComponent:vi,toKey:Ci,toOption:yi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var vi=gi(({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(mi,{noWrap:!0},Ge.createElement(pe,{value:e}),Ge.createElement("div",null,Ge.createElement(ln,null,cn(e)),Ge.createElement(ln,{size:"xs",color:"dimmed"},r))))});function Si(e){let o=JSON.stringify(e);return Ii(e)?`{
|
|
2
2
|
Patients1: PatientList(_id: ${o}, _count: 1) {
|
|
3
3
|
resourceType
|
|
4
4
|
id
|
|
@@ -61,8 +61,8 @@ import{formatAddress as hs}from"@medplum/core";import Ha from"react";function Va
|
|
|
61
61
|
display
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
}`.replace(/\s+/g," ")}function bi(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),Di(Pi(t),o).slice(0,5)}function Pi(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 Di(e,o){return e.sort((t,r)=>un(r,o)-un(t,o))}function un(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,dn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,dn(pi(r),o));return t}function dn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Oi=ki(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 In(e){let o=Ho(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Oi(),[s,i]=Fi(!1);return q.createElement(Bi,{height:60,p:8,style:{zIndex:101}},q.createElement(xt,{position:"apart"},q.createElement(xt,{spacing:"xs"},q.createElement(pn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),q.createElement(mn,{pathname:e.pathname,searchParams:e.searchParams})),q.createElement(Ee,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},q.createElement(Ee.Target,null,q.createElement(pn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},q.createElement(xt,{spacing:7},q.createElement(pe,{value:r,radius:"xl",size:24}),q.createElement(zo,{size:"sm",className:f.userName},Mi(r?.name?.[0])),q.createElement(gr,{size:12,stroke:1.5})))),q.createElement(Ee.Dropdown,null,q.createElement(Ai,{align:"center",p:"xl"},q.createElement(pe,{size:"xl",radius:100,value:o.profile}),q.createElement(mt,{value:o.profile?.name?.[0]}),q.createElement(zo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&q.createElement(Ee.Divider,null),n.map(u=>u.profile.reference!==xn(o.profile)&&q.createElement(Ee.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},q.createElement(xt,null,q.createElement(Ti,{radius:"xl"}),q.createElement("div",{style:{flex:1}},q.createElement(zo,{size:"sm",weight:500},u.profile.display),q.createElement(zo,{color:"dimmed",size:"xs"},u.project.display))))),q.createElement(Ee.Divider,null),q.createElement(Ee.Item,{icon:q.createElement(wr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),q.createElement(Ee.Item,{icon:q.createElement(po,{size:14,stroke:1.5}),onClick:()=>a(`/${xn(r)}`)},"Account settings"),q.createElement(Ee.Item,{icon:q.createElement(Tr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),q.createElement(zo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as eu,createStyles as ou,Navbar as qr,ScrollArea as tu,Space as ru,Text as au}from"@mantine/core";import re,{useState as nu}from"react";import{Button as Ri,Group as Ni,Modal as Hi,NativeSelect as Vi,Stack as qi,TextInput as Gi}from"@mantine/core";import{showNotification as hn}from"@mantine/notifications";import{deepClone as Ui,normalizeErrorString as zi}from"@medplum/core";import ze from"react";import Li from"react";function gn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?wi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ei(o,t);return o}function wi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ei(e,o){e[o.name]=o.value}function J(e){return Li.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=gn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function yn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=Ui(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent(new Event("change")),hn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{hn({color:"red",message:zi(u)})})}return ze.createElement(Hi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(qi,null,ze.createElement(Wi,{config:t}),ze.createElement(Gi,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(Ni,{position:"right"},ze.createElement(Ri,{mt:"sm",type:"submit"},"OK")))))}function Wi(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Vi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import ji,{useState as _i}from"react";import Xi,{useCallback as Qi}from"react";function Vr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Ji(e){return typeof e.display=="string"?e.display:Vr(e)}function $i(e){return{value:Vr(e),label:Ji(e),resource:e}}function Ki(e){return{code:e,display:e}}function Co(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Qi(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,c=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,m=[];for(let S of c)S.code&&!m.some(k=>k.code===S.code)&&m.push(S);return m},[o,t]);return Xi.createElement(yo,{...n,creatable:r??!0,clearable:a??!0,toKey:Vr,toOption:$i,loadOptions:f,onCreate:Ki,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function It(e){let[o,t]=_i(e.defaultValue);function r(a){let n=a[0],f=Yi(n);t(f),e.onChange&&e.onChange(f)}return ji.createElement(Co,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:Zi(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Zi(e){return e?{code:e}:void 0}function Yi(e){return e?.code}var Cn=ou(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 vn(e){let{classes:o}=Cn(),t=qe(),r=su(e.pathname,e.searchParams,e.menus),[a,n]=nu(!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(qr,{width:{sm:250},p:"xs"},re.createElement(tu,null,re.createElement(qr.Section,{mb:"sm"},re.createElement(It,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"http://hl7.org/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(qr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(au,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(fu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(lu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(eu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Mr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(yn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function fu(e){let{classes:o,cx:t}=Cn();return re.createElement(ae,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function lu(e){return e.icon?e.icon:re.createElement(ru,{w:30})}function su(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=iu(e,o,f.href);l>a&&(a=l,r=f)}return r}function iu(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=du(),[t,r]=mu(localStorage.navbarOpen==="true"),a=v(),n=it();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?Ye.createElement(Nr,null):Ye.createElement(uu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&Ye.createElement(In,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?Ye.createElement(vn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},Ye.createElement(xo,{key:`${e.pathname}?${e.searchParams?.toString()}`},Ye.createElement(cu,{fallback:Ye.createElement(Nr,null)},e.children)))}import Gr from"react";import{Anchor as pu}from"@mantine/core";import We from"react";function Me(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(pu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Sn(e){return Gr.createElement("div",null,e.values?.map((o,t)=>Gr.createElement("div",{key:"attatchment-"+t},Gr.createElement(Me,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as bn}from"@mantine/core";import ne,{useRef as Iu,useState as gu}from"react";import Ur,{useRef as xu}from"react";function vo(e){let o=v(),t=xu(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 Ur.createElement(Ur.Fragment,null,Ur.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Pn(e){let[o,t]=gu(e.defaultValue??[]),r=Iu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ne.createElement("table",{style:{width:"100%"}},ne.createElement("colgroup",null,ne.createElement("col",{width:"97%"}),ne.createElement("col",{width:"3%"})),ne.createElement("tbody",null,o.map((n,f)=>ne.createElement("tr",{key:`${f}-${o.length}`},ne.createElement("td",null,ne.createElement(Me,{value:n,maxWidth:200})),ne.createElement("td",null,ne.createElement(bn,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},ne.createElement(Ge,null))))),ne.createElement("tr",null,ne.createElement("td",null),ne.createElement("td",null,ne.createElement(vo,{onUpload:n=>{a([...r.current,n])}},n=>ne.createElement(bn,{...n,title:"Add",size:"sm",color:"green"},ne.createElement(Vo,{size:16})))))))}import{Button as Dn}from"@mantine/core";import So,{useState as hu}from"react";function gt(e){let[o,t]=hu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?So.createElement(So.Fragment,null,So.createElement(Me,{value:o,maxWidth:200}),So.createElement(Dn,{onClick:a=>{H(a),r(void 0)}},"Remove")):So.createElement(vo,{onUpload:r},a=>So.createElement(Dn,{...a},"Upload..."))}import{getPropertyDisplayName as wu,globalSchema as Eu}from"@medplum/core";import Jo from"react";var ht=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as yu}from"@mantine/core";import Wo from"react";var Cu=yu(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 Tn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Cu();return Wo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function kn(e){return Wo.createElement(Wo.Fragment,null,Wo.createElement("dt",null,e.term),Wo.createElement("dd",null,e.children))}import{formatDateTime as Bu,formatPeriod as Au,formatTiming as Mu,getElementDefinitionTypeName as Fu,getTypedPropertyValue as Ou,PropertyType as R}from"@medplum/core";import G from"react";import{formatCodeableConcept as vu}from"@medplum/core";import Bn from"react";function bo(e){return Bn.createElement(Bn.Fragment,null,vu(e.value))}import{formatCoding as Su}from"@medplum/core";import An from"react";function Mn(e){return An.createElement(An.Fragment,null,Su(e.value))}import zr from"react";import Fn from"react";function yt(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("]")),Fn.createElement(Fn.Fragment,null,t.join("").trim())}function On(e){let o=e.value;return o?zr.createElement(zr.Fragment,null,o.name,o.name&&": ",o.telecom?.map((t,r)=>zr.createElement(yt,{key:"telecom-"+r,value:t}))):null}import bu from"react";function wn(e){return bu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Pu}from"@medplum/core";import En from"react";function Ln(e){return En.createElement(En.Fragment,null,Pu(e.value))}import{formatQuantity as Du}from"@medplum/core";import Rn from"react";function Xo(e){return Rn.createElement(Rn.Fragment,null,Du(e.value))}import{formatRange as Tu}from"@medplum/core";import Nn from"react";function Ct(e){return Nn.createElement(Nn.Fragment,null,Tu(e.value))}import vt from"react";function Hn(e){let o=e.value;return o?vt.createElement(vt.Fragment,null,vt.createElement(Xo,{value:o.numerator}),"\xA0/\xA0",vt.createElement(Xo,{value:o.denominator})):null}import{stringify as ku}from"@medplum/core";import Wr from"react";function eo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||ku(e.value);return e.link!==!1&&e.value.reference?Wr.createElement(ae,{to:e.value},o):Wr.createElement(Wr.Fragment,null,o)}import St from"react";function Vn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return St.createElement(St.Fragment,null,t.map((a,n)=>St.createElement("div",{key:`${n}-${t.length}`},St.createElement(ie,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function ie(e){let{property:o,propertyType:t,value:r}=e;if(o?.max==="*"&&!e.arrayElement)return t===R.Attachment?G.createElement(Sn,{values:r,maxWidth:e.maxWidth}):G.createElement(Vn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case R.boolean:return G.createElement(G.Fragment,null,r===void 0?"":(!!r).toString());case R.SystemString:case R.string:return G.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case R.code:case R.date:case R.integer:case R.positiveInt:case R.unsignedInt:case R.uri:case R.url:return G.createElement(G.Fragment,null,r);case R.canonical:return G.createElement(eo,{value:{reference:r},link:e.link});case R.dateTime:case R.instant:return G.createElement(G.Fragment,null,Bu(r));case R.markdown:return G.createElement("pre",null,r);case R.Address:return G.createElement(Va,{value:r});case R.Annotation:return G.createElement(G.Fragment,null,r?.text);case R.Attachment:return G.createElement(Me,{value:r,maxWidth:e.maxWidth});case R.CodeableConcept:return G.createElement(bo,{value:r});case R.Coding:return G.createElement(Mn,{value:r});case R.ContactDetail:return G.createElement(On,{value:r});case R.ContactPoint:return G.createElement(yt,{value:r});case R.HumanName:return G.createElement(mt,{value:r});case R.Identifier:return G.createElement(wn,{value:r});case R.Money:return G.createElement(Ln,{value:r});case R.Period:return G.createElement(G.Fragment,null,Au(r));case R.Quantity:case R.Duration:return G.createElement(Xo,{value:r});case R.Range:return G.createElement(Ct,{value:r});case R.Ratio:return G.createElement(Hn,{value:r});case R.Reference:return G.createElement(eo,{value:r,link:e.link});case R.Timing:return G.createElement(G.Fragment,null,Mu(r));case R.Dosage:case R.UsageContext:return G.createElement(Qo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return G.createElement(Qo,{value:{type:Fu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Ce(e,o){let t=Ou(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Qo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Eu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Jo.createElement("div",null,t.name):Jo.createElement(Tn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(ht.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Ce(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Jo.createElement(kn,{key:f,term:wu(f)},Jo.createElement(ie,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Jo.createElement("div",null,r,"\xA0not implemented")}import{Stack as mc}from"@mantine/core";import{getPropertyDisplayName as gf,globalSchema as pc}from"@medplum/core";import To,{useState as xc}from"react";import{Group as Lu,Input as Ru}from"@mantine/core";import bt from"react";function Pt(e){return bt.createElement(Lu,{noWrap:!0},bt.createElement("div",null,e.children),bt.createElement("div",null,bt.createElement(Ru.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Nu}from"@mantine/core";import Hu from"react";function ue(e,o){return e?.issue?.filter(t=>qn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
-
`)}function Dt(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 ve(e){return Hu.createElement(Nu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:ue(e.outcome,e.htmlFor)},e.children)}import{Button as Gn,Group as Vu,Stack as qu,TextInput as Un}from"@mantine/core";import{capitalize as Gu,deepClone as Uu}from"@medplum/core";import De,{useEffect as zu,useState as zn}from"react";function eP(e){let o=v(),t=X(e.defaultValue),[r,a]=zn(),[n,f]=zn();return zu(()=>{t&&(f(Uu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?De.createElement("div",null,"Loading..."):De.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},De.createElement(qu,{mb:"xl"},De.createElement(ve,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},De.createElement(Un,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),De.createElement(ve,{title:"ID",htmlFor:"id",outcome:e.outcome},De.createElement(Un,{name:"id",defaultValue:n.id,disabled:!0}))),De.createElement(Ko,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),De.createElement(Vu,{position:"right",mt:"xl"},De.createElement(Gn,{type:"submit"},"OK"),e.onDelete&&De.createElement(Gn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function $o(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Gu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as ac,Group as nc,NativeSelect as fc,Textarea as lc,TextInput as Yr}from"@mantine/core";import{capitalize as sc,getElementDefinitionTypeName as ic,PropertyType as F}from"@medplum/core";import V,{useState as uc}from"react";import Wu,{useState as Xu}from"react";function Wn(e){let[o,t]=Xu(e.defaultValue);function r(a){let n=Ju(a);t(n),e.onChange&&e.onChange(n)}return Wu.createElement(Co,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Qu(o),maxSelectedValues:1,onChange:r})}function Qu(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Ju(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import $u,{useState as Ku}from"react";function Xn(e){let[o,t]=Ku(e.defaultValue);function r(a){let n=a[0],f=n&&_u(n);t(f),e.onChange&&e.onChange(f)}return $u.createElement(Co,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&ju(o),maxSelectedValues:1,onChange:r})}function ju(e){return{system:e.system,code:e.code,display:e.display}}function _u(e){return{system:e.system,code:e.code,display:e.display}}import{Group as td,TextInput as rd}from"@mantine/core";import Xr,{useRef as ad,useState as nd}from"react";import{Group as Zu,NativeSelect as Qn,TextInput as Yu}from"@mantine/core";import Tt,{useRef as ed,useState as od}from"react";function kt(e){let[o,t]=od(e.defaultValue),r=ed();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 Tt.createElement(Zu,{spacing:"xs",grow:!0,noWrap:!0},Tt.createElement(Qn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Tt.createElement(Qn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Tt.createElement(Yu,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Jn(e){let[o,t]=nd(e.defaultValue),r=ad();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 Xr.createElement(td,{spacing:"xs",grow:!0,noWrap:!0},Xr.createElement(rd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Xr.createElement(kt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as fd}from"@mantine/core";import{isValidDate as $n}from"@medplum/core";import ld from"react";function Te(e){return ld.createElement(fd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:ud(),defaultValue:sd(e.defaultValue),autoFocus:e.autoFocus,error:ue(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(id(t))}}})}function sd(e){if(!e)return"";let o=new Date(e);return $n(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function id(e){if(!e)return"";let o=new Date(e);return $n(o)?o.toISOString():""}function ud(){return"datetime-local"}import{JsonInput as dd}from"@mantine/core";import{stringify as cd}from"@medplum/core";import md from"react";function Kn(e){return md.createElement(dd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:cd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as pd,NativeSelect as xd,TextInput as Bt}from"@mantine/core";import Po,{useRef as Id,useState as gd}from"react";function jn(e){let[o,t]=gd(e.defaultValue),r=Id();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Po.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},Po.createElement(xd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Po.createElement(Bt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Po.createElement(Bt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),Po.createElement(Bt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),Po.createElement(Bt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as hd,TextInput as _n}from"@mantine/core";import Qr,{useState as yd}from"react";function Zn(e){let[o,t]=yd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qr.createElement(hd,{spacing:"xs",grow:!0,noWrap:!0},Qr.createElement(_n,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),Qr.createElement(_n,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Cd,TextInput as vd}from"@mantine/core";import Jr,{useCallback as $r,useState as Sd}from"react";var bd=["USD","EUR","CAD","GBP","AUD"];function Yn(e){let{onChange:o}=e,[t,r]=Sd(e.defaultValue),a=$r(s=>{r(s),o&&o(s)},[o]),n=$r(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=$r(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Jr.createElement(Cd,{defaultValue:t?.currency,data:bd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Jr.createElement(vd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Jr.createElement(yr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Pd}from"@mantine/core";import Kr,{useState as Dd}from"react";function ef(e){let[o,t]=Dd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Kr.createElement(Pd,{spacing:"xs",grow:!0,noWrap:!0},Kr.createElement(Te,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Kr.createElement(Te,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Td,NativeSelect as kd,TextInput as of}from"@mantine/core";import At,{useState as Bd}from"react";function Se(e){let[o,t]=Bd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return At.createElement(Td,{spacing:"xs",grow:!0,noWrap:!0},At.createElement(kd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),At.createElement(of,{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:Ad(a.currentTarget.value)})}}),At.createElement(of,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Ad(e){if(e)return parseFloat(e)}import{Group as Md}from"@mantine/core";import jr,{useState as Fd}from"react";function jo(e){let[o,t]=Fd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return jr.createElement(Md,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(Se,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),jr.createElement(Se,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Od}from"@mantine/core";import _r,{useState as wd}from"react";function tf(e){let[o,t]=wd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return _r.createElement(Od,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(Se,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),_r.createElement(Se,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Ud,NativeSelect as zd,TextInput as Wd}from"@mantine/core";import{createReference as Xd}from"@medplum/core";import Ft,{useRef as ff,useState as lf}from"react";import{Group as Ed,Text as rf}from"@mantine/core";import{getDisplayString as Ld,getReferenceString as nf}from"@medplum/core";import oo,{forwardRef as Rd,useCallback as af}from"react";var Nd={Observation:"code",User:"email:contains"},Hd=["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 Vd(e){return{value:nf(e),label:Ld(e),resource:e}}function Mt(e){let o=v(),t=e.resourceType,r=X(e.defaultValue),a=e.onChange,n=af(async(l,s)=>{let i=Gd(t),u=new URLSearchParams({[i]:l,_count:"10"});return await o.searchResources(t,u,{signal:s})},[o,t]),f=af(l=>{a&&a(l[0])},[a]);return e.defaultValue&&!r?null:oo.createElement(yo,{name:e.name,itemComponent:qd,defaultValue:r,placeholder:e.placeholder,maxSelectedValues:1,toKey:nf,toOption:Vd,loadOptions:n,onChange:f,clearable:!0})}var qd=Rd(({label:e,resource:o,...t},r)=>oo.createElement("div",{ref:r,...t},oo.createElement(Ed,{noWrap:!0},oo.createElement(pe,{value:o}),oo.createElement("div",null,oo.createElement(rf,null,e),oo.createElement(rf,{size:"xs",color:"dimmed"},o.birthDate)))));function Gd(e){return Nd[e]??(Hd.includes(e)?"name":"_id")}function Do(e){let o=Qd(e.targetTypes),t=Jd(e.defaultValue,o),[r,a]=lf(e.defaultValue),[n,f]=lf(t),l=ff();l.current=r;let s=ff();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Ft.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},o?Ft.createElement(zd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Ft.createElement(Wd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Ft.createElement(Mt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?Xd(u):void 0)}}))}function Qd(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Jd(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as sf}from"@mantine/core";import de,{useRef as $d,useState as Kd}from"react";function uf(e){let[o,t]=Kd(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=$d();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return de.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},de.createElement("colgroup",null,de.createElement("col",{width:"97%"}),de.createElement("col",{width:"3%"})),de.createElement("tbody",null,o.map((n,f)=>de.createElement("tr",{key:`${f}-${o.length}`},de.createElement("td",null,de.createElement(Le,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),de.createElement("td",{style:{textAlign:"right"}},de.createElement(sf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},de.createElement(Ge,null))))),de.createElement("tr",null,de.createElement("td",null),de.createElement("td",{style:{textAlign:"right"}},de.createElement(sf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},de.createElement(uo,null))))))}import{Button as mf,Chip as df,Group as Ot,Modal as jd,NativeSelect as _d,Stack as Zd,Switch as Yd,TextInput as ec}from"@mantine/core";import{formatTiming as oc}from"@medplum/core";import $,{useRef as pf,useState as Zr}from"react";var tc=["sun","mon","tue","wed","thu","fri","sat"];function xf(e){let[o,t]=Zr(e.defaultValue),[r,a]=Zr(!1),n=pf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Ot,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,oc(n.current)||"No repeat"),$.createElement(mf,{onClick:()=>a(!0)},"Edit")),$.createElement(rc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var cf={repeat:{period:1,periodUnit:"d"}};function rc(e){let[o,t]=Zr(e.defaultValue||cf),r=pf();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(jd,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(Zd,null,$.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Te,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(Yd,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?cf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Ot,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(ec,{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(_d,{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(ve,{title:"Repeat on"},$.createElement(df.Group,{multiple:!0,onChange:s},$.createElement(Ot,{position:"apart",mt:"md",spacing:"xs"},tc.map(i=>$.createElement(df,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Ot,{position:"right"},$.createElement(mf,{onClick:()=>e.onOk(o)},"OK"))))}function Le(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===F.Attachment?V.createElement(Pn,{name:r,defaultValue:a,onChange:e.onChange}):V.createElement(uf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?V.createElement(dc,{elementDefinitionTypes:n,...e}):V.createElement(If,{elementDefinitionType:n[0],...e})}function dc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=uc(t);return V.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},V.createElement(fc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),V.createElement(If,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",sc(r.code)))}}))}function If(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 F.SystemString:case F.canonical:case F.string:case F.time:case F.uri:case F.url:return V.createElement(Yr,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:ue(e.outcome,r)});case F.date:return V.createElement(Yr,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:ue(e.outcome,r)});case F.dateTime:case F.instant:return V.createElement(Te,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case F.decimal:case F.integer:case F.positiveInt:case F.unsignedInt:return V.createElement(Yr,{type:"number",step:t===F.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case F.code:return V.createElement(It,{property:o,name:r,defaultValue:a,onChange:e.onChange});case F.boolean:return V.createElement(ac,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case F.markdown:return V.createElement(lc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case F.Address:return V.createElement(za,{name:r,defaultValue:a,onChange:e.onChange});case F.Annotation:return V.createElement(Qa,{name:r,defaultValue:a,onChange:e.onChange});case F.Attachment:return V.createElement(gt,{name:r,defaultValue:a,onChange:e.onChange});case F.CodeableConcept:return V.createElement(Wn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case F.Coding:return V.createElement(Xn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case F.ContactDetail:return V.createElement(Jn,{name:r,defaultValue:a,onChange:e.onChange});case F.ContactPoint:return V.createElement(kt,{name:r,defaultValue:a,onChange:e.onChange});case F.Extension:return V.createElement(Kn,{name:r,defaultValue:a,onChange:e.onChange});case F.HumanName:return V.createElement(jn,{name:r,defaultValue:a,onChange:e.onChange});case F.Identifier:return V.createElement(Zn,{name:r,defaultValue:a,onChange:e.onChange});case F.Money:return V.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case F.Period:return V.createElement(ef,{name:r,defaultValue:a,onChange:e.onChange});case F.Duration:case F.Quantity:return V.createElement(Se,{name:r,defaultValue:a,onChange:e.onChange});case F.Range:return V.createElement(jo,{name:r,defaultValue:a,onChange:e.onChange});case F.Ratio:return V.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case F.Reference:return V.createElement(Do,{name:r,defaultValue:a,targetTypes:cc(o),onChange:e.onChange});case F.Timing:return V.createElement(xf,{name:r,defaultValue:a,onChange:e.onChange});case F.Dosage:case F.UsageContext:return V.createElement(Ko,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return V.createElement(Ko,{typeName:ic(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function cc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Ko(e){let[o,t]=xc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=pc.types[a];if(!n)return To.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return To.createElement(mc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||ht.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,c]=Ce(f,s),m=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?To.createElement(Pt,{key:s,title:gf(s),description:i.definition,htmlFor:s},To.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:c,outcome:e.outcome,onChange:(S,k)=>{r($o(o,s,k??s,l[1],S))}})):To.createElement(ve,{key:s,title:gf(s),description:i.definition,withAsterisk:m,htmlFor:s,outcome:e.outcome},To.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:c,onChange:(S,k)=>{r($o(o,s,k??s,l[1],S))}}))}))}import{Button as ea,createStyles as Ic,Group as hf}from"@mantine/core";import ee,{useMemo as gc,useState as hc}from"react";var yc=Ic(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Cc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function yf(e){let{classes:o}=yc(),{onChangeMonth:t,onClick:r}=e,[a,n]=hc(oa);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=gc(()=>vc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(hf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Cc(a)),ee.createElement(hf,{position:"right",spacing:"xs"},ee.createElement(ea,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(ea,{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,c)=>ee.createElement("td",{key:"day-"+c},u&&ee.createElement(ea,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function oa(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function vc(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:Sc(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 Sc(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 bc,createStyles as Pc}from"@mantine/core";import Dc from"react";var Tc=Pc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Tc();return Dc.createElement(bc,{className:r.root,...t},o)}import wm from"react";import{ActionIcon as Rf,Center as Im,createStyles as gm,Group as hm,Loader as ym,Menu as Re,ScrollArea as Cm,TextInput as vm}from"@mantine/core";import{showNotification as Sm,updateNotification as sa}from"@mantine/notifications";import{getReferenceString as _o,normalizeErrorString as bm}from"@medplum/core";import b,{useCallback as Lt,useEffect as Pm,useRef as Nf,useState as Hf}from"react";import{createStyles as qc,Group as Et,List as Sf,Stack as bf,Text as be,Title as Pf}from"@mantine/core";import{capitalize as Gc,formatDateTime as aa,formatObservationValue as Uc}from"@medplum/core";import I,{useEffect as zc,useState as Wc}from"react";import{Blockquote as kc,createStyles as Bc,Stack as Ac}from"@mantine/core";import Cf from"react";var Mc=Bc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ta({value:e}){let{classes:o}=Mc();return e?Cf.createElement(Ac,{justify:"flex-start",spacing:"xs"},e.map((t,r)=>t.text&&Cf.createElement(kc,{key:`note-${r}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Rc}from"@mantine/core";import ra from"react";import{Text as Fc}from"@mantine/core";import{getDisplayString as Oc,isOk as wc,normalizeErrorString as Ec}from"@medplum/core";import vf,{useState as Lc}from"react";function Fe(e){let{value:o,link:t,...r}=e,[a,n]=Lc(),f=X(o,n),l;if(a&&!wc(a))l=`[${Ec(a)}]`;else if(f)l=Oc(f);else return null;return t?vf.createElement(ae,{to:o,...r},l):vf.createElement(Fc,{component:"span",...r},l)}function Qe(e){return ra.createElement(Rc,{spacing:"xs"},ra.createElement(pe,{size:24,radius:12,value:e.value,link:e.link}),ra.createElement(Fe,{value:e.value,link:e.link}))}import{Badge as Nc}from"@mantine/core";import Hc from"react";var Vc={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 wt(e){return Hc.createElement(Nc,{color:Vc[e.status]},e.status)}var Df=qc(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}}));na.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function na(e){let o=v(),t=X(e.value),[r,a]=Wc();if(zc(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(bf,null,I.createElement(Pf,null,"Diagnostic Report"),I.createElement(Xc,{value:t}),!e.hideSpecimenInfo&&Qc(r),t.result&&I.createElement(Jc,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(ta,{value:n}))}function Xc({value:e}){return I.createElement(Et,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(be,null,I.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(be,null,I.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(be,null,I.createElement(Qe,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(be,null,aa(e.issued))),e.status&&I.createElement("div",null,I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(be,null,Gc(e.status))))}function Qc(e){return I.createElement(bf,{spacing:"xs"},I.createElement(Pf,{order:2,size:"h6"},"Specimens"),I.createElement(Sf,{type:"ordered"},e?.map((o,t)=>I.createElement(Sf.Item,{ml:"sm",key:`specimen-${o.id}-${t}`},I.createElement(Et,{spacing:20},I.createElement(Et,{spacing:5},I.createElement(be,{fw:500},"Collected:")," ",aa(o.collection?.collectedDateTime)),I.createElement(Et,{spacing:5},I.createElement(be,{fw:500},"Received:")," ",aa(o.receivedTime)))))))}function Jc(e){let{classes:o}=Df();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,e.value?.map((t,r)=>I.createElement($c,{key:`obs-${t.id}-${r}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function $c(e){let{classes:o,cx:t}=Df(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=_c(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(ae,{to:r},I.createElement(bo,{value:r.code}))),I.createElement("td",null,I.createElement(Kc,{value:r})),I.createElement("td",null,I.createElement(jc,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(bo,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement("ul",null,r.category.map((f,l)=>I.createElement("li",{key:`category-${l}`},I.createElement(bo,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(eo,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(wt,{status:r.status}))),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(ta,{value:r.note}))))}function Kc(e){let o=e.value;return I.createElement(I.Fragment,null,Uc(o))}function jc(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(Ct,{value:o}):null}function _c(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Zc,Paper as Yc,useComponentDefaultProps as em}from"@mantine/core";import om from"react";var tm=Zc((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%"}}})),rm={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=em("Panel",rm,e),{classes:l,cx:s}=tm({width:r,fill:a},{name:"Panel",unstyled:n});return om.createElement(Yc,{className:s(l.paper,o),...f},t)}import{createStyles as am}from"@mantine/core";import{getPropertyDisplayName as nm,stringify as Tf,toTypedValue as kf}from"@medplum/core";import fe,{useEffect as fm,useState as lm}from"react";var sm=am(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 Af(e){let{classes:o}=sm(),t=v(),[r,a]=lm();if(fm(()=>{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?fe.createElement("table",{className:o.root},fe.createElement("colgroup",null,fe.createElement("col",{style:{width:"30%"}}),fe.createElement("col",{style:{width:"35%"}}),fe.createElement("col",{style:{width:"35%"}})),fe.createElement("thead",null,fe.createElement("tr",null,fe.createElement("th",null,"Property"),fe.createElement("th",null,"Before"),fe.createElement("th",null,"After"))),fe.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Ce(kf(e.original),l),[c,m]=Ce(kf(e.revised),l);return Bf(i)&&Bf(c)||Tf(i)===Tf(c)?null:fe.createElement("tr",{key:l},fe.createElement("td",null,nm(l)),fe.createElement("td",{className:o.removed},fe.createElement(ie,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),fe.createElement("td",{className:o.added},fe.createElement(ie,{property:s,propertyType:m,value:c,ignoreMissingValues:!0})))}))):null}function Bf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import im,{useEffect as um,useState as dm}from"react";function fa(e){let o=v(),t=X(e.value),[r,a]=dm();return um(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:im.createElement(Qo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as cm,Group as mm,Menu as Mf,Text as la}from"@mantine/core";import{formatDateTime as pm,getReferenceString as xm}from"@medplum/core";import oe from"react";function Ff(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(ko,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(mm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(pe,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(la,{size:"sm"},oe.createElement(Fe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(la,{size:"xs"},oe.createElement(ae,{color:"dimmed",to:e.resource},pm(l)),oe.createElement(la,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ae,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Mf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Mf.Target,null,oe.createElement(cm,{radius:"xl","aria-label":`Actions for ${xm(e.resource)}`},oe.createElement(Cr,null))),a)),oe.createElement(xo,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function Ef(e,o){e.sort((t,r)=>{let a=Of(t,o),n=Of(r,o);return a>n?1:a<n?-1:wf(t,o)-wf(r,o)})}function Of(e,o){if(!Lf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function wf(e,o){if(!Lf(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 Lf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Dm=gm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=Nf(null),n=X(e.value),[f,l]=Hf(),[s,i]=Hf([]),u=e.loadTimelineResources,c=Nf(s);c.current=s;let m=Lt(g=>{Ef(g,n),g.reverse(),i(g)},[n]),S=Lt(g=>{let L=[];for(let He of g){if(He.status!=="fulfilled")continue;let y=He.value;if(y.type==="history"&&l(y),y.entry)for(let W of y.entry)L.push(W.resource)}m(L)},[m]),k=Lt(g=>m([...c.current,g]),[m]),T=Lt(()=>{let g,L;"resourceType"in e.value?(g=e.value.resourceType,L=e.value.id):[g,L]=e.value.reference?.split("/"),u(o,g,L).then(S).catch(console.log)},[o,e.value,u,S]);Pm(()=>T(),[T]);function h(g){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,g)).then(L=>k(L)).catch(console.log)}function D(g){!n||!e.createMedia||o.createResource(e.createMedia(n,r,g)).then(L=>k(L)).then(()=>sa({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:b.createElement(xr,{size:16}),autoClose:2e3})).catch(L=>sa({id:"upload-notification",color:"red",title:"Upload error",message:bm(L),icon:b.createElement(Sr,{size:16}),autoClose:2e3}))}function d(g,L){return o.updateResource({...g,priority:L})}function w(g){d(g,"stat").then(T).catch(console.log)}function C(g){d(g,"routine").then(T).catch(console.log)}function M(g){t(`/${g.resourceType}/${g.id}`)}function xe(g){t(`/${g.resourceType}/${g.id}/edit`)}function Z(g){t(`/${g.resourceType}/${g.id}/delete`)}function Ie(g){t(`/${g.resourceType}/${g.id}/_history/${g.meta?.versionId}`)}function ge(){Sm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Pe(g){sa({id:"upload-notification",loading:!0,title:"Uploading...",message:Om(g),autoClose:!1,withCloseButton:!1})}return n?b.createElement(Ff,null,e.createCommunication&&b.createElement(ko,null,b.createElement(J,{testid:"timeline-form",onSubmit:g=>{h(g.text);let L=a.current;L&&(L.value="",L.focus())}},b.createElement(hm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},b.createElement(pe,{value:r}),b.createElement(vm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),b.createElement(Rf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},b.createElement(kr,{size:16})),b.createElement(vo,{onUpload:D,onUploadStart:ge,onUploadProgress:Pe},g=>b.createElement(Rf,{...g,radius:"xl",color:"blue",variant:"filled"},b.createElement(Vo,{size:16})))))),s.map(g=>{if(!g)return null;let L=`${g.resourceType}/${g.id}/${g.meta?.versionId}`;if(g.resourceType===n.resourceType&&g.id===n.id)return b.createElement(Tm,{key:L,history:f,resource:g,onDetails:Ie});switch(g.resourceType){case"AuditEvent":return b.createElement(Mm,{key:L,resource:g,onDetails:M});case"Communication":return b.createElement(Bm,{key:L,resource:g,onPin:g.priority!=="stat"?w:void 0,onUnpin:g.priority==="stat"?C:void 0,onDetails:M,onEdit:xe,onDelete:Z});case"DiagnosticReport":return b.createElement(Fm,{key:L,resource:g,onDetails:M,onEdit:xe,onDelete:Z});case"Media":return b.createElement(Am,{key:L,resource:g,onDetails:M,onEdit:xe,onDelete:Z});default:return b.createElement(Je,{key:L,resource:g,padding:!0},b.createElement(fa,{value:g,ignoreMissingValues:!0}))}})):b.createElement(Im,{style:{width:"100%",height:"100%"}},b.createElement(ym,null))}function Bo(e){return b.createElement(Re.Dropdown,null,b.createElement(Re.Label,null,"Resource"),e.onPin&&b.createElement(Re.Item,{icon:b.createElement(Br,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${_o(e.resource)}`},"Pin"),e.onUnpin&&b.createElement(Re.Item,{icon:b.createElement(Ar,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${_o(e.resource)}`},"Unpin"),e.onDetails&&b.createElement(Re.Item,{icon:b.createElement(Dr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${_o(e.resource)}`},"Details"),e.onEdit&&b.createElement(Re.Item,{icon:b.createElement(vr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${_o(e.resource)}`},"Edit"),e.onDelete&&b.createElement(b.Fragment,null,b.createElement(Re.Divider,null),b.createElement(Re.Label,null,"Danger zone"),b.createElement(Re.Item,{color:"red",icon:b.createElement(Uo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${_o(e.resource)}`},"Delete")))}function Tm(e){let o=km(e.history,e.resource);return o?b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Bo,{...e})},b.createElement(Af,{original:o,revised:e.resource})):b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Bo,{...e})},b.createElement("h3",null,"Created"),b.createElement(fa,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function km(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Bm(e){let{classes:o}=Dm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return b.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:b.createElement(Bo,{...e})},b.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Am(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return b.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:b.createElement(Bo,{...e})},b.createElement(Me,{value:e.resource.content}))}function Mm(e){return b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Bo,{...e})},b.createElement(Cm,null,b.createElement("pre",null,e.resource.outcomeDesc)))}function Fm(e){return b.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:b.createElement(Bo,{...e})},b.createElement(na,{value:e.resource}))}function Om(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ia(e.loaded)} / ${ia(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ia(e.loaded)}`}function ia(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 Gk(e){return wm.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 Vf from"react";function Rt(e){let{children:o,...t}=e;return Vf.createElement(Xe,null,Vf.createElement(ko,{...t},o))}import{createReference as Nt}from"@medplum/core";import Em from"react";function Yk(e){return Em.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:Nt(o),subject:o.subject,sender:Nt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Nt(o),subject:o.subject,operator:Nt(t),issued:new Date().toISOString(),content:r})})}import{Button as qp,Loader as Gp,Table as Up}from"@mantine/core";import{normalizeOperationOutcome as zp}from"@medplum/core";import te,{useEffect as Il,useRef as gl,useState as Wt}from"react";import{evalFhirPath as Lm}from"@medplum/core";import Rm from"react";function qf(e){let o;try{o=Lm(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 Rm.createElement(ie,{value:o[0]||"",propertyType:e.propertyType})}import{Button as Oo,Center as zt,createStyles as Dp,Group as ha,Loader as Tp,Menu as pl,Pagination as kp,Table as Bp,Text as ya,UnstyledButton as Ap}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as ba,formatSearchQuery as Mp,globalSchema as Fp}from"@medplum/core";import P,{useEffect as xl,useRef as Op,useState as Ca}from"react";import{Box as Nm,Button as Hm,Modal as Vm,Text as qm}from"@mantine/core";import Ao from"react";function Uf(e){return Ao.createElement(Vm,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Ao.createElement(Nm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Ao.createElement(Gf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Ao.createElement(Gf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Ao.createElement(qm,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Gf(e){return Ao.createElement(Hm,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as et,Modal as jm}from"@mantine/core";import{globalSchema as _m,stringify as Zm}from"@medplum/core";import Q,{useEffect as Ym,useRef as rl,useState as ep}from"react";import{capitalize as Gm,DEFAULT_SEARCH_COUNT as Um,evalFhirPathTyped as zm,formatDateTime as Wm,Operator as A}from"@medplum/core";import Ht from"react";var Xm={string:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],fulltext:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],token:[A.EQUALS,A.NOT],reference:[A.EQUALS,A.NOT],numeric:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],quantity:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],date:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY],datetime:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY]},Qm={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 Zo(e,o){return{...e,filters:o,offset:0,name:void 0}}function xB(e){return Zo(e,[])}function Vt(e,o){return Zo(e,(e.filters??[]).filter(t=>t.code!==o))}function Mo(e,o,t,r,a){a&&(e=Vt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),Zo(e,n)}function IB(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 Wf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function Xf(e,o){return ua(e,o,-1)}function Qf(e,o){return ua(e,o,0)}function Jf(e,o){return ua(e,o,1)}function ua(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),ca(e,o,r,a)}function $f(e,o){return da(e,o,-1)}function Kf(e,o){return da(e,o,0)}function jf(e,o){return da(e,o,1)}function da(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),ca(e,o,r,a)}function _f(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ca(e,o,t,new Date)}function ca(e,o,t,r){return e=Vt(e,o),e=zf(e,o,A.GREATER_THAN_OR_EQUALS,t),e=zf(e,o,A.LESS_THAN_OR_EQUALS,r),e}function zf(e,o,t,r){return Mo(e,o,t,r.toISOString())}function ma(e,o,t=!0){return Mo(e,o,A.MISSING,t.toString())}function Jm(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Zf(e,o){let t=e.count??Um,r=(o-1)*t;return Jm(e,r)}function pa(e,o,t){return o===Yf(e)&&t!==void 0&&t===el(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function gB(e,o){let t=!1;return Yf(e)===o&&(t=!el(e)),pa(e,o,t)}function Yf(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function el(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ol(e){return Xm[e.type]}function Yo(e){return Qm[e]??""}function he(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Gm).join(" "))}function tl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Wm(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?$m(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Km(e,o.searchParams[0]):null}function $m(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Ce({type:e.resourceType,value:e},t);return r?Ht.createElement(ie,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Km(e,o){let t=zm(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Ht.createElement(Ht.Fragment,null,t.map((r,a)=>Ht.createElement(ie,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function al(e){let[o,t]=ep({search:JSON.parse(Zm(e.search))}),r=rl(null),a=rl(null);Ym(()=>{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 C=[...d,w];t({search:{...o.search,fields:C}})}}function u(){let d=o.search.fields??[],w=a.current?.value;if(w){let C=[...d];C.splice(C.indexOf(w),1),t({search:{...o.search,fields:C}})}}function c(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let C=[...d],M=C.indexOf(w);M<=0||(S(C,M,M-1),t({search:{...o.search,fields:C}}))}function m(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let C=[...d],M=C.indexOf(w);M>=C.length-1||(S(C,M,M+1),t({search:{...o.search,fields:C}}))}function S(d,w,C){let M=d[w];d[w]=d[C],d[C]=M}if(!e.visible)return null;let k=e.search.resourceType,T=_m.types[k],h=o.search.fields??[],D=op(T).filter(d=>!h.includes(d)).sort((d,w)=>d.localeCompare(w));return Q.createElement(jm,{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"},D.map(d=>Q.createElement("option",{key:d,value:d},he(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"},h.map(d=>Q.createElement("option",{key:d,value:d},he(d))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:c},"Up")),Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:m},"Down")))))),Q.createElement(et,{onClick:()=>e.onOk(o.search)},"OK"))}function op(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(he(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=he(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(he(a)))}return o}import{Button as tt,Group as ip,Modal as up,NativeSelect as fl}from"@mantine/core";import{globalSchema as dp,stringify as ll}from"@medplum/core";import O,{useEffect as cp,useRef as il,useState as Ia}from"react";import{formatDateTime as tp,getSearchParameterDetails as rp,globalSchema as ap,Operator as nl,SearchParameterType as np}from"@medplum/core";import ot from"react";function qt(e){let{resourceType:o,filter:t}=e,r=ap.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===nl.EQUALS||t.operator===nl.NOT_EQUALS))return ot.createElement(Fe,{value:{reference:t.value}});let a=rp(o,r);if(t.code==="_lastUpdated"||a.type===np.DATETIME)return ot.createElement(ot.Fragment,null,tp(t.value))}return ot.createElement(ot.Fragment,null,t.value)}import{Checkbox as fp,TextInput as xa}from"@mantine/core";import{getSearchParameterDetails as lp,SearchParameterType as Fo}from"@medplum/core";import to from"react";function Gt(e){let o=lp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Fo.REFERENCE:return to.createElement(Do,{name:t,defaultValue:{reference:e.defaultValue},targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Fo.BOOLEAN:return to.createElement(fp,{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 Fo.DATE:return to.createElement(xa,{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 Fo.DATETIME:return to.createElement(Te,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Fo.NUMBER:return to.createElement(xa,{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 Fo.QUANTITY:return to.createElement(Se,{name:t,defaultValue:sp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return to.createElement(xa,{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 sp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function ul(e){let[o,t]=Ia(JSON.parse(ll(e.search))),[r,a]=Ia(-1),n=il(o);n.current=o,cp(()=>{t(JSON.parse(ll(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=dp.types[l].searchParams??{},i=o.filters||[];return O.createElement(up,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},O.createElement("div",null,O.createElement("table",null,O.createElement("colgroup",null,O.createElement("col",{style:{width:200}}),O.createElement("col",{style:{width:200}}),O.createElement("col",{style:{width:380}}),O.createElement("col",{style:{width:120}})),O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"Field"),O.createElement("th",null,"Operation"),O.createElement("th",null,"Value"),O.createElement("th",null,"Actions"))),O.createElement("tbody",null,i.map((u,c)=>c===r?O.createElement(sl,{key:`filter-${c}-${i.length}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:m=>{let S=[...i];S[c]=m,t(Zo(n.current,S)),a(-1)},onCancel:()=>a(-1)}):O.createElement(mp,{key:`filter-${c}-${i.length}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(c),onDelete:()=>t(Wf(n.current,c))})),O.createElement(sl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),O.createElement(ip,{position:"right",mt:"xl"},O.createElement(tt,{onClick:()=>e.onOk(n.current)},"OK")))}function mp(e){let{filter:o}=e;return O.createElement("tr",null,O.createElement("td",null,he(o.code)),O.createElement("td",null,Yo(o.operator)),O.createElement("td",null,O.createElement(qt,{resourceType:e.resourceType,filter:o})),O.createElement("td",null,O.createElement(tt,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),O.createElement(tt,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function sl(e){let[o,t]=Ia(e.defaultValue??{}),r=il(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&&ol(l);return O.createElement("tr",null,O.createElement("td",null,O.createElement(fl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:Object.keys(e.searchParams).map(i=>({value:i,label:he(i)}))})),O.createElement("td",null,s&&O.createElement(fl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:Yo(i)}))]})),O.createElement("td",null,l&&o.operator&&O.createElement(Gt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),O.createElement("td",null,o.code&&o.operator&&o.value&&O.createElement(tt,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&O.createElement(tt,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as pp,Grid as ga,Modal as xp}from"@mantine/core";import ro,{useState as Ip}from"react";function dl(e){let[o,t]=Ip(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return ro.createElement(xp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},ro.createElement(J,{onSubmit:r},ro.createElement(ga,null,ro.createElement(ga.Col,{span:10},ro.createElement(Gt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),ro.createElement(ga.Col,{span:2},ro.createElement(pp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as le}from"@medplum/core";import p from"react";function cl(e){if(!e.searchParams)return null;function o(n,f){a(pa(e.search,n.code,f))}function t(n){a(Vt(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(gp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},he(n.code))))}function gp(e){switch(e.searchParam.type){case"date":return p.createElement(hp,{...e});case"number":case"quantity":return p.createElement(yp,{...e});case"reference":return p.createElement(Cp,{...e});case"string":case"token":case"uri":return p.createElement(vp,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function hp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Go,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(ct,{size:14}),onClick:()=>e.onPrompt(o,le.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(dt,{size:14}),onClick:()=>e.onPrompt(o,le.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(cr,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange(Jf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange(Qf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange(Xf(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange(jf(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange(Kf(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange($f(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(we,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Year to date"),p.createElement(Ut,{...e}))}function yp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Go,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(dt,{size:14}),onClick:()=>e.onPrompt(o,le.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,le.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(ct,{size:14}),onClick:()=>e.onPrompt(o,le.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,le.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Ut,{...e}))}function Cp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT)},"Does not equal..."),p.createElement(Ut,{...e}))}function vp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Go,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(pr,{size:14}),onClick:()=>e.onPrompt(o,le.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Does not contain..."),p.createElement(Ut,{...e}))}function Ut(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(ur,{size:14}),onClick:()=>e.onChange(ma(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(ir,{size:14}),onClick:()=>e.onChange(ma(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Lr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Sp,globalSchema as bp}from"@medplum/core";function ml(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Pp(o,r));return t}function Pp(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=bp.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=Sp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var va=class extends Event{constructor(t){super("change");this.definition=t}},Sa=class extends Event{constructor(t){super("load");this.response=t}},ao=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},wp=Dp(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 Ep(e){let{classes:o}=wp(),t=v(),[r,a]=Ca(!1),[n,f]=Ca(),{search:l,onLoad:s}=e,[i,u]=Ca({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=Op(i);c.current=i;let m=l.total??"accurate";xl(()=>{f(void 0),t.search(l.resourceType,Mp({...l,total:m,fields:void 0})).then(y=>{u({...c.current,searchResponse:y}),s&&s(new Sa(y))}).catch(y=>{u({...c.current,searchResponse:void 0}),f(y)})},[t,l,m,s]);function S(y,W){y.stopPropagation();let io=y.target.checked,Y={...c.current.selected};io?Y[W]=!0:delete Y[W],u({...c.current,selected:Y})}function k(y){y.stopPropagation();let so=y.target.checked,io={},Y=c.current.searchResponse;so&&Y?.entry&&Y.entry.forEach(me=>{me.resource?.id&&(io[me.resource.id]=!0)}),u({...c.current,selected:io})}function T(){let y=c.current;if(!y.searchResponse?.entry||y.searchResponse.entry.length===0)return!1;for(let W of y.searchResponse.entry)if(W.resource?.id&&!y.selected[W.resource.id])return!1;return!0}function h(y){e.onChange&&e.onChange(new va(y))}function D(y,W){pt(y.target)||y.button!==2&&(H(y),y.button!==1&&e.onClick&&e.onClick(new ao(W,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new ao(W,y)))}function d(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(xl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Fp.types[e.search.resourceType]))return P.createElement(zt,{style:{width:"100%",height:"100%"}},P.createElement(Tp,null));let C=e.checkboxesEnabled,M=ml(l),xe=l.resourceType,Z=i.searchResponse,ge=Z?.entry?.map(y=>y.resource),Pe="subtle",g="gray",L=16,He=window.innerWidth<768;return P.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&P.createElement(ha,{position:"apart",mb:"xl"},P.createElement(ha,{spacing:2},P.createElement(Oo,{compact:!0,variant:Pe,color:g,leftIcon:P.createElement(hr,{size:L}),onClick:()=>u({...c.current,fieldEditorVisible:!0})},"Fields"),P.createElement(Oo,{compact:!0,variant:Pe,color:g,leftIcon:P.createElement(Pr,{size:L}),onClick:()=>u({...c.current,filterEditorVisible:!0})},"Filters"),e.onNew&&P.createElement(Oo,{compact:!0,variant:Pe,color:g,leftIcon:P.createElement(br,{size:L}),onClick:e.onNew},"New..."),!He&&d()&&P.createElement(Oo,{compact:!0,variant:Pe,color:g,leftIcon:P.createElement(Er,{size:L}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0})},"Export..."),!He&&e.onDelete&&P.createElement(Oo,{compact:!0,variant:Pe,color:g,leftIcon:P.createElement(Uo,{size:L}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!He&&e.onBulk&&P.createElement(Oo,{compact:!0,variant:Pe,color:g,leftIcon:P.createElement(dr,{size:L}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),Z&&P.createElement(ya,{size:"xs",color:"dimmed"},Hp(l,Z.total),"-",Vp(l,Z.total)," of"," ",`${m==="estimate"?"~":""}${Z.total?.toLocaleString()}`)),P.createElement(Bp,{className:o.table},P.createElement("thead",null,P.createElement("tr",null,C&&P.createElement("th",null,P.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:y=>k(y)})),M.map(y=>P.createElement("th",{key:y.name},P.createElement(pl,{shadow:"md",width:240,position:"bottom-end"},P.createElement(pl.Target,null,P.createElement(Ap,{className:o.control},P.createElement(ha,{position:"apart",noWrap:!0},P.createElement(ya,{weight:500,size:"sm"},he(y.name)),P.createElement(zt,{className:o.icon},P.createElement(sr,{size:14,stroke:1.5}))))),P.createElement(cl,{search:e.search,searchParams:y.searchParams,onPrompt:(W,so)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:so})},onChange:W=>{h(W)}}))))),!e.hideFilters&&P.createElement("tr",null,C&&P.createElement("th",null),M.map(y=>P.createElement("th",{key:y.name},y.searchParams&&P.createElement(Lp,{resourceType:xe,searchParams:y.searchParams,filters:e.search.filters}))))),P.createElement("tbody",null,ge?.map(y=>y&&P.createElement("tr",{key:y.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>D(W,y),onAuxClick:W=>D(W,y)},C&&P.createElement("td",null,P.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!i.selected[y.id],onChange:W=>S(W,y.id)})),M.map(W=>P.createElement("td",{key:W.name},tl(y,W))))))),ge?.length===0&&P.createElement(Xe,null,P.createElement(zt,{style:{height:150}},P.createElement(ya,{size:"xl",color:"dimmed"},"No results"))),Z?.total!==void 0&&Z.total>0&&P.createElement(zt,{m:"md",p:"md"},P.createElement(kp,{value:Rp(l),total:Np(l,Z.total),onChange:y=>h(Zf(l,y)),getControlProps:y=>{switch(y){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(al,{search:e.search,visible:c.current.fieldEditorVisible,onOk:y=>{h(y),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),P.createElement(ul,{search:e.search,visible:c.current.filterEditorVisible,onOk:y=>{h(y),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),P.createElement(Uf,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),P.createElement(dl,{key:i.filterDialogSearchParam?.code,visible:c.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?he(i.filterDialogSearchParam.code):"",resourceType:xe,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:y=>{h(Mo(e.search,y.code,y.operator,y.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}}))}var kA=P.memo(Ep);function Lp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?P.createElement("span",null,"no filters"):P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement("div",{key:`filter-${r}-${o.length}`},Yo(t.operator),"\xA0",P.createElement(qt,{resourceType:e.resourceType,filter:t}))))}function Rp(e){return Math.floor((e.offset??0)/(e.count??ba))+1}function Np(e,o){let t=e.count??ba;return Math.ceil(o/t)}function Hp(e,o){return Math.min(o,(e.offset??0)+1)}function Vp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??ba))}function Wp(e){let o=v(),[t,r]=Wt(),[a,n]=Wt(),{query:f,fields:l}=e,[s,i]=Wt(),[u,c]=Wt({}),m=gl();m.current=s;let S=gl({});S.current=u,Il(()=>{n(void 0),o.graphql(f).then(i).catch(C=>n(zp(C)))},[o,f]);function k(C,M){C.stopPropagation();let Z=C.target.checked,Ie={...S.current};Z?Ie[M]=!0:delete Ie[M],c(Ie)}function T(C){C.stopPropagation();let xe=C.target.checked,Z={},Ie=m.current?.data.ResourceList;xe&&Ie&&Ie.forEach(ge=>{ge.id&&(Z[ge.id]=!0)}),c(Z)}function h(){let C=m.current?.data.ResourceList;if(!C||C.length===0)return!1;for(let M of C)if(M.id&&!S.current[M.id])return!1;return!0}function D(C,M){pt(C.target)||(H(C),C.button!==1&&e.onClick&&e.onClick(new ao(M,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new ao(M,C)))}if(Il(()=>{o.requestSchema(e.resourceType).then(C=>{r({...C})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(Gp,null);let w=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:C=>H(C),"data-testid":"search-control"},te.createElement(Up,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:h(),onChange:C=>T(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:M=>D(M,C),onAuxClick:M=>D(M,C)},w&&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:M=>k(M,C.id)})),l.map(M=>te.createElement("td",{key:M.name},te.createElement(qf,{propertyType:M.propertyType,path:M.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(qp,{onClick:()=>e.onBulk(Object.keys(S.current))},"Bulk..."))}var HA=te.memo(Wp);import no from"react";function Ke(e){return no.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},no.createElement("title",null,"Medplum Logo"),no.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),no.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"}),no.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"}),no.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),no.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as Xp}from"@mantine/core";import Pa from"react";function wo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Pa.createElement(Xp,{icon:Pa.createElement(Ze,{size:16}),color:"red"},o.map(t=>Pa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as Xt}from"@medplum/core";import Qp,{useCallback as Jp}from"react";function _A(e){let o=Jp((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 Qp.createElement($e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Xt(t),sender:Xt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Xt(t),operator:Xt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as yl,Button as $p,createStyles as Kp,NativeSelect as jp,Stack as _p,TextInput as Ta}from"@mantine/core";import{getReferenceString as Zp}from"@medplum/core";import N,{useEffect as hl,useRef as Cl,useState as rt}from"react";var vl=Kp(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 pM(e){let o=v(),t=X(e.value),[r,a]=rt(void 0),[n,f]=rt(),[l,s]=rt(),[i,u]=rt();function c(){s(void 0)}function m(){f(void 0)}let S=Cl();if(S.current=i,hl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),hl(()=>(u(ax(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",c),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",m)}),[t]),!r||!i)return null;function k(T,h){u({...S.current,[T]:h})}return N.createElement("div",null,N.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},N.createElement(Ta,{label:"Plan Title",defaultValue:i.title,onChange:T=>k("title",T.currentTarget.value)}),N.createElement(Sl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:T=>k("action",T)}),N.createElement($p,{type:"submit"},"Save")))}function Sl(e){let{classes:o}=vl(),t=Cl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return N.createElement("div",{className:o.section},e.actions.map(f=>N.createElement("div",{key:f.id},N.createElement(Yp,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),N.createElement("div",{className:o.bottomActions},N.createElement(yl,{href:"#",onClick:f=>{H(f),a({id:Pl()})}},"Add action")))}function Yp(e){let{classes:o,cx:t}=vl(),{action:r}=e,a=rx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return N.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?N.createElement(ox,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):N.createElement(ex,{action:r,actionType:a}),N.createElement("div",{className:o.bottomActions},N.createElement(yl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var ka={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function ex(e){let{action:o,actionType:t}=e,[r,a]=bl(o);return N.createElement("div",null,N.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&N.createElement("div",null,N.createElement(eo,{value:{reference:o.definitionCanonical}})),r&&N.createElement("div",null,N.createElement(ie,{property:ka,propertyType:a,value:r})))}function ox(e){let{action:o}=e,[t,r]=rt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return N.createElement(_p,{spacing:"xl"},N.createElement(Ta,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),N.createElement(Ta,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),N.createElement(jp,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&N.createElement(Sl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return N.createElement(Qt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return N.createElement(Qt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return N.createElement(Qt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return N.createElement(Qt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),N.createElement(ve,{title:"Timing",description:"When the action should take place."},N.createElement(tx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Qt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return N.createElement(Mt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Zp(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function tx(e){let o=e.action,t="timing",[r,a]=bl(o);return N.createElement(Le,{property:ka,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange($o(o,t,f??t,ka,n))}})}function rx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function bl(e){return Ce({type:"PlanDefinitionAction",value:e},"timing")}var Da=1;function Pl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Da=Math.max(Da,o+1))}return e}return"id-"+Da++}function ax(e){return{...e,action:Dl(e.action)}}function Dl(e){if(e)return e.map(o=>({...o,id:Pl(o.id),action:Dl(o.action)}))}import{Anchor as nt,Button as Sx,createStyles as bx,NativeSelect as Px,Textarea as Dx,TextInput as Nl,Title as Tx}from"@mantine/core";import{globalSchema as kx,isResource as Bx}from"@medplum/core";import E,{useEffect as Hl,useRef as Ax,useState as Kt}from"react";import{Button as nx,Checkbox as Ol,Group as fx,NativeSelect as lx,Radio as Bl,Stack as sx,Textarea as ix,TextInput as at,Title as ux}from"@mantine/core";import{capitalize as wl,createReference as dx,deepEquals as cx,getQuestionnaireAnswers as mx,getReferenceString as El,getTypedPropertyValue as fo,globalSchema as px,stringify as Al}from"@medplum/core";import U,{useEffect as Ml,useState as Jt}from"react";var Tl=(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))(Tl||{});function kl(e){return e.type==="choice"||e.type==="open-choice"}function Ll(e){let o=v(),t=o.getProfile(),[r,a]=Jt(),n=X(e.questionnaire),[f,l]=Jt(),[s,i]=Jt({});Ml(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Ml(()=>{l(n?gx(n):void 0)},[n]);function u(c){let m={resourceType:"QuestionnaireResponse",item:c};l(m),i(mx(m))}return!r||!n?null:U.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:El(n),subject:e.subject,source:dx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&U.createElement(ux,null,n.title),n.item&&U.createElement(Rl,{items:n.item,answers:s,onChange:u}),U.createElement(fx,{position:"right",mt:"xl"},U.createElement(nx,{type:"submit"},e.submitButtonText??"OK")))}function Rl(e){let[o,t]=Jt(Ba(e.items));function r(a,n){let f=o.slice();f[a]=n,t(f),e.onChange(f)}return U.createElement(sx,null,e.items.map((a,n)=>{if(!vx(a,e.answers))return null;if(a.type==="display")return U.createElement("p",{key:a.linkId},a.text);if(a.type==="group")return U.createElement($t,{key:a.linkId,item:a,answers:e.answers,onChange:f=>r(n,f)});if(a.type==="boolean"){let f=a.initial&&a.initial.length>0?a.initial[0]:void 0;return U.createElement(Pt,{key:a.linkId,title:a.text,htmlFor:a.linkId},U.createElement(Ol,{id:a.linkId,name:a.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r(n,{linkId:a.linkId,text:a.text,answer:[{valueBoolean:l.currentTarget.checked}]})}))}return U.createElement(ve,{key:a.linkId,htmlFor:a.linkId,title:a.text??""},U.createElement($t,{item:a,answers:e.answers,onChange:f=>r(n,f)}))}))}function $t(e){let o=e.item,t=o.type;if(!t)return null;let r=o.linkId;if(!r)return null;let a=o.initial&&o.initial.length>0?o.initial[0]:void 0;function n(l){e.onChange({linkId:o.linkId,text:o.text,item:l})}function f(l){e.onChange({linkId:o.linkId,text:o.text,answer:[l]})}switch(t){case"group":return U.createElement("div",null,U.createElement("h3",null,o.text),o.item&&U.createElement(Rl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return U.createElement(Ol,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return U.createElement(at,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return U.createElement(at,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return U.createElement(at,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return U.createElement(Te,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return U.createElement(at,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return U.createElement(at,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return U.createElement(ix,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return U.createElement(gt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return U.createElement(Do,{name:r,defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return U.createElement(Se,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return Cx(o)?U.createElement(xx,{name:r,item:o,initial:a,onChangeAnswer:f}):U.createElement(Ix,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function xx(e){let{name:o,item:t,initial:r}=e,a=fo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=fo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Fl(l))}return U.createElement(lx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=fo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+wl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Fl(a),data:n})}function Fl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ix(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=px.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=fo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],c=`${o}-option-${i}`,m=fo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Al(m)===Al(f)&&(s=c),l.push([c,m])}return U.createElement(Bl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(c=>c[0]===i);if(u){let c=u[1],m="value"+wl(c.type);a({[m]:c.value})}}},l.map(([i,u])=>U.createElement(Bl,{key:i,id:i,value:i,label:U.createElement(ie,{property:n,propertyType:u.type,value:u.value})})))}function gx(e){return{resourceType:"QuestionnaireResponse",questionnaire:El(e),item:Ba(e.item)}}function Ba(e){return e?.map(hx)??[]}function hx(e){return{linkId:e.linkId,text:e.text,item:Ba(e.item),answer:e.initial?.map(yx)??[]}}function yx(e){return{...e}}function Cx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function vx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=fo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),n=fo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),f=cx(a,n);if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}var Mx=bx(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 $M(e){let o=v(),t=X(e.questionnaire),[r,a]=Kt(),[n,f]=Kt(),[l,s]=Kt(),[i,u]=Kt();function c(){u(void 0)}function m(){s(void 0)}return Hl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Hl(()=>(f(Ox(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",c),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",m)}),[t]),!r||!n?null:E.createElement("div",null,E.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},E.createElement(ql,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),E.createElement(Sx,{type:"submit"},"Save")))}function ql(e){let{classes:o,cx:t}=Mx(),r=e.item,a=e.item,n=Bx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Ax();u.current=e.item;function c(d){H(d),e.setSelectedKey(e.item.id)}function m(d){H(d),e.setHoverKey(e.item.id)}function S(d){let w=u.current;e.onChange({...w,item:w.item?.map(C=>C.id===d.id?d:C)})}function k(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function T(d){e.onChange({...e.item,item:e.item.item?.filter(w=>w!==d)})}function h(d,w){e.onChange({...u.current,[d]:w})}let D=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return E.createElement("div",{"data-testid":a.linkId,className:D,onClick:c,onMouseOver:m},E.createElement("div",{className:o.questionBody},s?E.createElement(E.Fragment,null,n&&E.createElement(Nl,{size:"xl",defaultValue:r.title,onChange:d=>h("title",d.currentTarget.value)}),!n&&E.createElement(Dx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>h("text",d.currentTarget.value)}),kl(a)&&E.createElement(Fx,{options:a.answerOption,onChange:d=>h("answerOption",d)})):E.createElement(E.Fragment,null,r.title&&E.createElement(Tx,null,r.title),a.text&&E.createElement("div",null,a.text),!f&&E.createElement($t,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>E.createElement("div",{key:d.id},E.createElement(ql,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:S,onRemove:()=>T(d)}))),!f&&E.createElement("div",{className:o.topActions},s?E.createElement(E.Fragment,null,E.createElement(Nl,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:d=>h("linkId",d.currentTarget.value)}),!f&&E.createElement(Px,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>h("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"}]})):E.createElement("div",null,l)),E.createElement("div",{className:o.bottomActions},f&&E.createElement(E.Fragment,null,E.createElement(nt,{href:"#",onClick:d=>{d.preventDefault(),k({id:Eo(),linkId:Vl("q"),type:"string",text:"Question"})}},"Add item"),E.createElement(nt,{href:"#",onClick:d=>{d.preventDefault(),k({id:Eo(),linkId:Vl("g"),type:"group",text:"Group"})}},"Add group")),s&&!n&&E.createElement(nt,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Fx(e){let o=kx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return E.createElement("div",null,t.map(r=>{let[a,n]=Ce({type:"QuestionnaireItemAnswerOption",value:r},"value");return E.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},E.createElement("div",null,E.createElement(Le,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),E.createElement("div",null,E.createElement(nt,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),E.createElement(nt,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:Eo()}])}},"Add choice"))}var Aa=1,Ma=1;function Vl(e){return e+Aa++}function Eo(){return"id-"+Ma++}function Ox(e){return{...e,id:e.id||Eo(),item:Gl(e.item)}}function Gl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ma=Math.max(Ma,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Aa=Math.max(Aa,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Eo(),item:Gl(o.item),answerOption:wx(o.answerOption)}))}function wx(e){if(e)return e.map(o=>({...o,id:o.id||Eo()}))}import{ActionIcon as jt,Button as Ex,createStyles as Lx,Divider as Rx,Group as ft,NativeSelect as Ul,Stack as _t,Text as Nx,TextInput as Hx}from"@mantine/core";import{formatRange as zl,getCodeBySystem as Vx}from"@medplum/core";import z,{useEffect as qx,useState as Fa}from"react";var Gx=Lx(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"}})),Ux=["gender","age","gestationalAge","context","appliesTo"],zx={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function aF(e){e=Object.assign(zx,e);let o=e.definition,[t,r]=Fa([]),[a,n]=Fa(1),[f,l]=Fa(1);return qx(()=>{let k=Qx(o,l);r(Jx(k.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(_t,null,t.map(k=>z.createElement(Wx,{unit:Kx(o.quantitativeDetails?.unit),onChange:c,onAdd:m,onRemove:S,onRemoveGroup:u,key:`group-${k.id}`,intervalGroup:k}))),z.createElement(jt,{title:"Add Group",size:"sm",onClick:k=>{H(k),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(T=>T+1)}},z.createElement(uo,null)),z.createElement(ft,{position:"right"},z.createElement(Ex,{type:"submit"},"Save")));function s(){let k=t.flatMap(T=>T.intervals).filter(T=>!jx(T));e.onSubmit({...o,qualifiedInterval:k})}function i(k){r(T=>[...T,k])}function u(k){r(T=>T.filter(h=>h.id!==k.id))}function c(k,T){r(h=>{h=[...h];let D=h.find(w=>w.id===k),d=D?.intervals.findIndex(w=>w.id===T.id);return d!==void 0&&D?.intervals[d]&&(D.intervals[d]=T),h})}function m(k,T){T.id===void 0&&(T.id=`id-${f}`,l(h=>h+1)),r(h=>{h=[...h];let D=h.findIndex(d=>d.id===k);if(D!==-1){let d={...h[D]};T={...T,...d.filters},d.intervals=[...d.intervals,T],h[D]=d}return h})}function S(k,T){r(h=>{h=[...h];let D=h.find(d=>d.id===k);return D&&(D.intervals=D.intervals.filter(d=>d.id!==T.id)),h})}}function Wx(e){let{intervalGroup:o,unit:t}=e,{classes:r}=Gx();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(_t,{spacing:"lg"},z.createElement(ft,{position:"right"},z.createElement(jt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ge,null))),z.createElement(Xx,{intervalGroup:o,onChange:e.onChange}),z.createElement(Rx,null),o.intervals.map(a=>z.createElement(_t,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ft,null,z.createElement(Hx,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(jt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ge,null))),z.createElement(jo,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(jt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(uo,null))))}function Xx(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(_t,{style:{maxWidth:"50%"}},z.createElement(ft,null,z.createElement(Ul,{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(ft,{spacing:"xs"},z.createElement(Nx,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(jo,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Ul,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function Qx(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 Jx(e,o){let t=1,r={};for(let a of e){let n=$x(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Ux.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function $x(e){return[`gender=${e.gender}`,`age=${zl(e.age)}`,`gestationalAge=${zl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`].join(":")}function Kx(e){return e&&(Vx(e,"http://unitsofmeasure.org")||e.text)}function jx(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Wl,Grid as Zt,Text as _x}from"@mantine/core";import{formatDateTime as Zx,getReferenceString as Yx}from"@medplum/core";import ce,{useEffect as eI,useState as Xl}from"react";function pF(e){let o=v(),t=X(e.value),[r,a]=Xl(!1),[n,f]=Xl();if(eI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ce.createElement(Zt,null,t.action?.map((i,u)=>{let c=i.resource&&s(i.resource),m=c?.input?.[0]?.valueReference,S=c?.output?.[0]?.valueReference;return ce.createElement(ce.Fragment,{key:`action-${u}`},ce.createElement(Zt.Col,{span:1,p:"md"},c?.status==="completed"?ce.createElement(Ir,null):ce.createElement(Or,{color:"gray"})),ce.createElement(Zt.Col,{span:9,p:"xs"},ce.createElement(_x,{weight:500},i.title),i.description&&ce.createElement("div",null,i.description),ce.createElement("div",null,"Last edited by\xA0",ce.createElement(Fe,{value:c?.meta?.author}),"\xA0on\xA0",Zx(c?.meta?.lastUpdated)),ce.createElement("div",null,"Status: ",ce.createElement(wt,{status:c?.status||"unknown"}))),ce.createElement(Zt.Col,{span:2,p:"md"},m&&!S&&ce.createElement(Wl,{onClick:()=>e.onStart(c,m)},"Start"),m&&S&&ce.createElement(Wl,{onClick:()=>e.onEdit(c,m,S)},"Edit")))}));function l(i){let u=[];if(i.action)for(let c of i.action)c.resource?.reference&&u.push({request:{method:"GET",url:c.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===Yx(u.resource))return u.resource}}import{createStyles as lI}from"@mantine/core";import ye,{useEffect as sI,useState as iI}from"react";import{stringify as aI}from"@medplum/core";function Yt(e,o){let t=oI(e,o);return tI(t,e,o)}function oI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,c=u+1,m=u-1,S=l[c],k=l[m],T,h=0;i===-s||i!==s&&k.i<S.i?(h=S.i,T=S):(h=k.i+1,T=k),l[m]=void 0;let D=h-i,d={i:h,j:D,prev:rI(T),snake:!1};for(;h<t&&D<r&&e[h]===o[D];)h++,D++;if(h>d.i&&(d={i:h,j:D,prev:d,snake:!0}),l[u]=d,h>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function tI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},c;i.lines.length===0&&u.lines.length>0?c="insert":i.lines.length>0&&u.lines.length===0?c="delete":c="change",r.push({original:i,revised:u,type:c}),a.snake&&(a=a.prev)}return r}function rI(e){return e&&!e.snake&&e.prev?e.prev:e}function Ql(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:aI(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 nI(t,o),fI(t),t}function nI(e,o){for(let t=1;t<o.length;t++){let r=Yt(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 fI(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 uI=lI(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 TF(e){let{classes:o}=uI(),t=v(),[r,a]=iI(e.history);if(sI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ye.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource,f=Ql(r);return ye.createElement("div",{className:o.container},ye.createElement("table",{className:o.root},ye.createElement("tbody",null,f.map((l,s)=>ye.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ye.createElement(ye.Fragment,null,ye.createElement("td",{className:o.author,rowSpan:l.span},ye.createElement(Qe,{value:l.meta.author,link:!0})),ye.createElement("td",{className:o.dateTime,rowSpan:l.span},ye.createElement(ae,{to:dI(n,l.meta.versionId)},cI(l.meta.lastUpdated)))),ye.createElement("td",{className:o.lineNumber},s+1),ye.createElement("td",{className:o.line},ye.createElement("pre",{className:o.pre},l.value)))))))}function dI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function cI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Lo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Lo(r,"month");let a=Math.floor(o/86400);if(a>0)return Lo(a,"day");let n=Math.floor(o/3600);if(n>0)return Lo(n,"hour");let f=Math.floor(o/60);return f>0?Lo(f,"minute"):Lo(o,"second")}function Lo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as mI}from"@mantine/core";import{stringify as Jl}from"@medplum/core";import je from"react";var pI=mI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function wF(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Jl(o,!0).match(/[^\r\n]+/g),a=Jl(t,!0).match(/[^\r\n]+/g),n=Yt(r,a);return je.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>je.createElement(xI,{key:"delta"+l,delta:f})))}function xI(e){let{classes:o}=pI();return je.createElement(je.Fragment,null,"...",je.createElement("br",null),e.delta.original.lines.length>0&&je.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
64
|
+
}`.replace(/\s+/g," ")}function Pi(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),Di(bi(t),o).slice(0,5)}function bi(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 Di(e,o){return e.sort((t,r)=>un(r,o)-un(t,o))}function un(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,dn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,dn(pi(r),o));return t}function dn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var wi=ki(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 In(e){let o=Ho(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=wi(),[s,i]=Fi(!1);return q.createElement(Bi,{height:60,p:8,style:{zIndex:101}},q.createElement(xt,{position:"apart"},q.createElement(xt,{spacing:"xs"},q.createElement(pn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),q.createElement(mn,{pathname:e.pathname,searchParams:e.searchParams})),q.createElement(Ee,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},q.createElement(Ee.Target,null,q.createElement(pn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},q.createElement(xt,{spacing:7},q.createElement(pe,{value:r,radius:"xl",size:24}),q.createElement(zo,{size:"sm",className:f.userName},Mi(r?.name?.[0])),q.createElement(gr,{size:12,stroke:1.5})))),q.createElement(Ee.Dropdown,null,q.createElement(Ai,{align:"center",p:"xl"},q.createElement(pe,{size:"xl",radius:100,value:o.profile}),q.createElement(mt,{value:o.profile?.name?.[0]}),q.createElement(zo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&q.createElement(Ee.Divider,null),n.map(u=>u.profile.reference!==xn(o.profile)&&q.createElement(Ee.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},q.createElement(xt,null,q.createElement(Ti,{radius:"xl"}),q.createElement("div",{style:{flex:1}},q.createElement(zo,{size:"sm",weight:500},u.profile.display),q.createElement(zo,{color:"dimmed",size:"xs"},u.project.display))))),q.createElement(Ee.Divider,null),q.createElement(Ee.Item,{icon:q.createElement(Or,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),q.createElement(Ee.Item,{icon:q.createElement(po,{size:14,stroke:1.5}),onClick:()=>a(`/${xn(r)}`)},"Account settings"),q.createElement(Ee.Item,{icon:q.createElement(Tr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),q.createElement(zo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as eu,createStyles as ou,Navbar as qr,ScrollArea as tu,Space as ru,Text as au}from"@mantine/core";import re,{useState as nu}from"react";import{Button as Ri,Group as Ni,Modal as Hi,NativeSelect as Vi,Stack as qi,TextInput as Ui}from"@mantine/core";import{showNotification as hn}from"@mantine/notifications";import{deepClone as Gi,normalizeErrorString as zi}from"@medplum/core";import ze from"react";import Li from"react";function gn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Oi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ei(o,t);return o}function Oi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ei(e,o){e[o.name]=o.value}function J(e){return Li.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=gn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Cn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=Gi(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"}),hn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{hn({color:"red",message:zi(u)})})}return ze.createElement(Hi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(qi,null,ze.createElement(Wi,{config:t}),ze.createElement(Ui,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(Ni,{position:"right"},ze.createElement(Ri,{mt:"sm",type:"submit"},"OK")))))}function Wi(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Vi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import ji,{useState as _i}from"react";import Xi,{useCallback as Qi}from"react";function Vr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Ji(e){return typeof e.display=="string"?e.display:Vr(e)}function $i(e){return{value:Vr(e),label:Ji(e),resource:e}}function Ki(e){return{code:e,display:e}}function yo(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Qi(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,c=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,m=[];for(let S of c)S.code&&!m.some(k=>k.code===S.code)&&m.push(S);return m},[o,t]);return Xi.createElement(Co,{...n,creatable:r??!0,clearable:a??!0,toKey:Vr,toOption:$i,loadOptions:f,onCreate:Ki,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function It(e){let[o,t]=_i(e.defaultValue);function r(a){let n=a[0],f=Yi(n);t(f),e.onChange&&e.onChange(f)}return ji.createElement(yo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:Zi(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Zi(e){return e?{code:e}:void 0}function Yi(e){return e?.code}var yn=ou(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 vn(e){let{classes:o}=yn(),t=qe(),r=su(e.pathname,e.searchParams,e.menus),[a,n]=nu(!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(qr,{width:{sm:250},p:"xs"},re.createElement(tu,null,re.createElement(qr.Section,{mb:"sm"},re.createElement(It,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"http://hl7.org/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(qr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(au,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(fu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(lu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(eu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Mr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function fu(e){let{classes:o,cx:t}=yn();return re.createElement(ae,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function lu(e){return e.icon?e.icon:re.createElement(ru,{w:30})}function su(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=iu(e,o,f.href);l>a&&(a=l,r=f)}return r}function iu(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=du(),[t,r]=mu(localStorage.navbarOpen==="true"),a=v(),n=it();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?Ye.createElement(Nr,null):Ye.createElement(uu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&Ye.createElement(In,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?Ye.createElement(vn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},Ye.createElement(xo,{key:`${e.pathname}?${e.searchParams?.toString()}`},Ye.createElement(cu,{fallback:Ye.createElement(Nr,null)},e.children)))}import Ur from"react";import{Anchor as pu}from"@mantine/core";import We from"react";function Me(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(pu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Sn(e){return Ur.createElement("div",null,e.values?.map((o,t)=>Ur.createElement("div",{key:"attatchment-"+t},Ur.createElement(Me,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Pn}from"@mantine/core";import ne,{useRef as Iu,useState as gu}from"react";import Gr,{useRef as xu}from"react";function vo(e){let o=v(),t=xu(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 Gr.createElement(Gr.Fragment,null,Gr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function bn(e){let[o,t]=gu(e.defaultValue??[]),r=Iu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ne.createElement("table",{style:{width:"100%"}},ne.createElement("colgroup",null,ne.createElement("col",{width:"97%"}),ne.createElement("col",{width:"3%"})),ne.createElement("tbody",null,o.map((n,f)=>ne.createElement("tr",{key:`${f}-${o.length}`},ne.createElement("td",null,ne.createElement(Me,{value:n,maxWidth:200})),ne.createElement("td",null,ne.createElement(Pn,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},ne.createElement(Ue,null))))),ne.createElement("tr",null,ne.createElement("td",null),ne.createElement("td",null,ne.createElement(vo,{onUpload:n=>{a([...r.current,n])}},n=>ne.createElement(Pn,{...n,title:"Add",size:"sm",color:"green"},ne.createElement(Vo,{size:16})))))))}import{Button as Dn}from"@mantine/core";import So,{useState as hu}from"react";function gt(e){let[o,t]=hu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?So.createElement(So.Fragment,null,So.createElement(Me,{value:o,maxWidth:200}),So.createElement(Dn,{onClick:a=>{H(a),r(void 0)}},"Remove")):So.createElement(vo,{onUpload:r},a=>So.createElement(Dn,{...a},"Upload..."))}import{getPropertyDisplayName as Ou,globalSchema as Eu}from"@medplum/core";import Jo from"react";var ht=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Cu}from"@mantine/core";import Wo from"react";var yu=Cu(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function Tn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=yu();return Wo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function kn(e){return Wo.createElement(Wo.Fragment,null,Wo.createElement("dt",null,e.term),Wo.createElement("dd",null,e.children))}import{formatDateTime as Bu,formatPeriod as Au,formatTiming as Mu,getElementDefinitionTypeName as Fu,getTypedPropertyValue as wu,PropertyType as R}from"@medplum/core";import U from"react";import{formatCodeableConcept as vu}from"@medplum/core";import Bn from"react";function Po(e){return Bn.createElement(Bn.Fragment,null,vu(e.value))}import{formatCoding as Su}from"@medplum/core";import An from"react";function Mn(e){return An.createElement(An.Fragment,null,Su(e.value))}import zr from"react";import Fn from"react";function Ct(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("]")),Fn.createElement(Fn.Fragment,null,t.join("").trim())}function wn(e){let o=e.value;return o?zr.createElement(zr.Fragment,null,o.name,o.name&&": ",o.telecom?.map((t,r)=>zr.createElement(Ct,{key:"telecom-"+r,value:t}))):null}import Pu from"react";function On(e){return Pu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as bu}from"@medplum/core";import En from"react";function Ln(e){return En.createElement(En.Fragment,null,bu(e.value))}import{formatQuantity as Du}from"@medplum/core";import Rn from"react";function Xo(e){return Rn.createElement(Rn.Fragment,null,Du(e.value))}import{formatRange as Tu}from"@medplum/core";import Nn from"react";function yt(e){return Nn.createElement(Nn.Fragment,null,Tu(e.value))}import vt from"react";function Hn(e){let o=e.value;return o?vt.createElement(vt.Fragment,null,vt.createElement(Xo,{value:o.numerator}),"\xA0/\xA0",vt.createElement(Xo,{value:o.denominator})):null}import{stringify as ku}from"@medplum/core";import Wr from"react";function eo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||ku(e.value);return e.link!==!1&&e.value.reference?Wr.createElement(ae,{to:e.value},o):Wr.createElement(Wr.Fragment,null,o)}import St from"react";function Vn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return St.createElement(St.Fragment,null,t.map((a,n)=>St.createElement("div",{key:`${n}-${t.length}`},St.createElement(ie,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function ie(e){let{property:o,propertyType:t,value:r}=e;if(o?.max==="*"&&!e.arrayElement)return t===R.Attachment?U.createElement(Sn,{values:r,maxWidth:e.maxWidth}):U.createElement(Vn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case R.boolean:return U.createElement(U.Fragment,null,r===void 0?"":(!!r).toString());case R.SystemString:case R.string:return U.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case R.code:case R.date:case R.integer:case R.positiveInt:case R.unsignedInt:case R.uri:case R.url:return U.createElement(U.Fragment,null,r);case R.canonical:return U.createElement(eo,{value:{reference:r},link:e.link});case R.dateTime:case R.instant:return U.createElement(U.Fragment,null,Bu(r));case R.markdown:return U.createElement("pre",null,r);case R.Address:return U.createElement(Va,{value:r});case R.Annotation:return U.createElement(U.Fragment,null,r?.text);case R.Attachment:return U.createElement(Me,{value:r,maxWidth:e.maxWidth});case R.CodeableConcept:return U.createElement(Po,{value:r});case R.Coding:return U.createElement(Mn,{value:r});case R.ContactDetail:return U.createElement(wn,{value:r});case R.ContactPoint:return U.createElement(Ct,{value:r});case R.HumanName:return U.createElement(mt,{value:r});case R.Identifier:return U.createElement(On,{value:r});case R.Money:return U.createElement(Ln,{value:r});case R.Period:return U.createElement(U.Fragment,null,Au(r));case R.Quantity:case R.Duration:return U.createElement(Xo,{value:r});case R.Range:return U.createElement(yt,{value:r});case R.Ratio:return U.createElement(Hn,{value:r});case R.Reference:return U.createElement(eo,{value:r,link:e.link});case R.Timing:return U.createElement(U.Fragment,null,Mu(r));case R.Dosage:case R.UsageContext:return U.createElement(Qo,{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 U.createElement(Qo,{value:{type:Fu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function ye(e,o){let t=wu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Qo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Eu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Jo.createElement("div",null,t.name):Jo.createElement(Tn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(ht.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=ye(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Jo.createElement(kn,{key:f,term:Ou(f)},Jo.createElement(ie,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Jo.createElement("div",null,r,"\xA0not implemented")}import{Stack as mc}from"@mantine/core";import{getPropertyDisplayName as gf,globalSchema as pc}from"@medplum/core";import To,{useState as xc}from"react";import{Group as Lu,Input as Ru}from"@mantine/core";import Pt from"react";function bt(e){return Pt.createElement(Lu,{noWrap:!0},Pt.createElement("div",null,e.children),Pt.createElement("div",null,Pt.createElement(Ru.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Nu}from"@mantine/core";import Hu from"react";function ue(e,o){return e?.issue?.filter(t=>qn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
+
`)}function Dt(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 ve(e){return Hu.createElement(Nu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:ue(e.outcome,e.htmlFor)},e.children)}import{Button as Un,Group as Vu,Stack as qu,TextInput as Gn}from"@mantine/core";import{capitalize as Uu,deepClone as Gu}from"@medplum/core";import De,{useEffect as zu,useState as zn}from"react";function eb(e){let o=v(),t=X(e.defaultValue),[r,a]=zn(),[n,f]=zn();return zu(()=>{t&&(f(Gu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?De.createElement("div",null,"Loading..."):De.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},De.createElement(qu,{mb:"xl"},De.createElement(ve,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},De.createElement(Gn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),De.createElement(ve,{title:"ID",htmlFor:"id",outcome:e.outcome},De.createElement(Gn,{name:"id",defaultValue:n.id,disabled:!0}))),De.createElement(Ko,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),De.createElement(Vu,{position:"right",mt:"xl"},De.createElement(Un,{type:"submit"},"OK"),e.onDelete&&De.createElement(Un,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function $o(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Uu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as ac,Group as nc,NativeSelect as fc,Textarea as lc,TextInput as Yr}from"@mantine/core";import{capitalize as sc,getElementDefinitionTypeName as ic,PropertyType as F}from"@medplum/core";import V,{useState as uc}from"react";import Wu,{useState as Xu}from"react";function Wn(e){let[o,t]=Xu(e.defaultValue);function r(a){let n=Ju(a);t(n),e.onChange&&e.onChange(n)}return Wu.createElement(yo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Qu(o),maxSelectedValues:1,onChange:r})}function Qu(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Ju(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import $u,{useState as Ku}from"react";function Xn(e){let[o,t]=Ku(e.defaultValue);function r(a){let n=a[0],f=n&&_u(n);t(f),e.onChange&&e.onChange(f)}return $u.createElement(yo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&ju(o),maxSelectedValues:1,onChange:r})}function ju(e){return{system:e.system,code:e.code,display:e.display}}function _u(e){return{system:e.system,code:e.code,display:e.display}}import{Group as td,TextInput as rd}from"@mantine/core";import Xr,{useRef as ad,useState as nd}from"react";import{Group as Zu,NativeSelect as Qn,TextInput as Yu}from"@mantine/core";import Tt,{useRef as ed,useState as od}from"react";function kt(e){let[o,t]=od(e.defaultValue),r=ed();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 Tt.createElement(Zu,{spacing:"xs",grow:!0,noWrap:!0},Tt.createElement(Qn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Tt.createElement(Qn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Tt.createElement(Yu,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Jn(e){let[o,t]=nd(e.defaultValue),r=ad();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 Xr.createElement(td,{spacing:"xs",grow:!0,noWrap:!0},Xr.createElement(rd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Xr.createElement(kt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as fd}from"@mantine/core";import{isValidDate as $n}from"@medplum/core";import ld from"react";function Te(e){return ld.createElement(fd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:ud(),defaultValue:sd(e.defaultValue),autoFocus:e.autoFocus,error:ue(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(id(t))}}})}function sd(e){if(!e)return"";let o=new Date(e);return $n(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function id(e){if(!e)return"";let o=new Date(e);return $n(o)?o.toISOString():""}function ud(){return"datetime-local"}import{JsonInput as dd}from"@mantine/core";import{stringify as cd}from"@medplum/core";import md from"react";function Kn(e){return md.createElement(dd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:cd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as pd,NativeSelect as xd,TextInput as Bt}from"@mantine/core";import bo,{useRef as Id,useState as gd}from"react";function jn(e){let[o,t]=gd(e.defaultValue),r=Id();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return bo.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},bo.createElement(xd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),bo.createElement(Bt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),bo.createElement(Bt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),bo.createElement(Bt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),bo.createElement(Bt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as hd,TextInput as _n}from"@mantine/core";import Qr,{useState as Cd}from"react";function Zn(e){let[o,t]=Cd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qr.createElement(hd,{spacing:"xs",grow:!0,noWrap:!0},Qr.createElement(_n,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),Qr.createElement(_n,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as yd,TextInput as vd}from"@mantine/core";import Jr,{useCallback as $r,useState as Sd}from"react";var Pd=["USD","EUR","CAD","GBP","AUD"];function Yn(e){let{onChange:o}=e,[t,r]=Sd(e.defaultValue),a=$r(s=>{r(s),o&&o(s)},[o]),n=$r(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=$r(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Jr.createElement(yd,{defaultValue:t?.currency,data:Pd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Jr.createElement(vd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Jr.createElement(Cr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as bd}from"@mantine/core";import Kr,{useState as Dd}from"react";function ef(e){let[o,t]=Dd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Kr.createElement(bd,{spacing:"xs",grow:!0,noWrap:!0},Kr.createElement(Te,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Kr.createElement(Te,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Td,NativeSelect as kd,TextInput as of}from"@mantine/core";import At,{useState as Bd}from"react";function Se(e){let[o,t]=Bd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return At.createElement(Td,{spacing:"xs",grow:!0,noWrap:!0},At.createElement(kd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),At.createElement(of,{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:Ad(a.currentTarget.value)})}}),At.createElement(of,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Ad(e){if(e)return parseFloat(e)}import{Group as Md}from"@mantine/core";import jr,{useState as Fd}from"react";function jo(e){let[o,t]=Fd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return jr.createElement(Md,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(Se,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),jr.createElement(Se,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as wd}from"@mantine/core";import _r,{useState as Od}from"react";function tf(e){let[o,t]=Od(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return _r.createElement(wd,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(Se,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),_r.createElement(Se,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Gd,NativeSelect as zd,TextInput as Wd}from"@mantine/core";import{createReference as Xd}from"@medplum/core";import Ft,{useRef as ff,useState as lf}from"react";import{Group as Ed,Text as rf}from"@mantine/core";import{getDisplayString as Ld,getReferenceString as nf}from"@medplum/core";import oo,{forwardRef as Rd,useCallback as af}from"react";var Nd={Observation:"code",User:"email:contains"},Hd=["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 Vd(e){return{value:nf(e),label:Ld(e),resource:e}}function Mt(e){let o=v(),t=e.resourceType,r=X(e.defaultValue),a=e.onChange,n=af(async(l,s)=>{let i=Ud(t),u=new URLSearchParams({[i]:l,_count:"10"});return await o.searchResources(t,u,{signal:s})},[o,t]),f=af(l=>{a&&a(l[0])},[a]);return e.defaultValue&&!r?null:oo.createElement(Co,{name:e.name,itemComponent:qd,defaultValue:r,placeholder:e.placeholder,maxSelectedValues:1,toKey:nf,toOption:Vd,loadOptions:n,onChange:f,clearable:!0})}var qd=Rd(({label:e,resource:o,...t},r)=>oo.createElement("div",{ref:r,...t},oo.createElement(Ed,{noWrap:!0},oo.createElement(pe,{value:o}),oo.createElement("div",null,oo.createElement(rf,null,e),oo.createElement(rf,{size:"xs",color:"dimmed"},o.birthDate)))));function Ud(e){return Nd[e]??(Hd.includes(e)?"name":"_id")}function Do(e){let o=Qd(e.targetTypes),t=Jd(e.defaultValue,o),[r,a]=lf(e.defaultValue),[n,f]=lf(t),l=ff();l.current=r;let s=ff();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Ft.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},o?Ft.createElement(zd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Ft.createElement(Wd,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Ft.createElement(Mt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?Xd(u):void 0)}}))}function Qd(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Jd(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as sf}from"@mantine/core";import de,{useRef as $d,useState as Kd}from"react";function uf(e){let[o,t]=Kd(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=$d();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return de.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},de.createElement("colgroup",null,de.createElement("col",{width:"97%"}),de.createElement("col",{width:"3%"})),de.createElement("tbody",null,o.map((n,f)=>de.createElement("tr",{key:`${f}-${o.length}`},de.createElement("td",null,de.createElement(Le,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),de.createElement("td",{style:{textAlign:"right"}},de.createElement(sf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},de.createElement(Ue,null))))),de.createElement("tr",null,de.createElement("td",null),de.createElement("td",{style:{textAlign:"right"}},de.createElement(sf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},de.createElement(uo,null))))))}import{Button as mf,Chip as df,Group as wt,Modal as jd,NativeSelect as _d,Stack as Zd,Switch as Yd,TextInput as ec}from"@mantine/core";import{formatTiming as oc}from"@medplum/core";import $,{useRef as pf,useState as Zr}from"react";var tc=["sun","mon","tue","wed","thu","fri","sat"];function xf(e){let[o,t]=Zr(e.defaultValue),[r,a]=Zr(!1),n=pf();return n.current=o,$.createElement($.Fragment,null,$.createElement(wt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,oc(n.current)||"No repeat"),$.createElement(mf,{onClick:()=>a(!0)},"Edit")),$.createElement(rc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var cf={repeat:{period:1,periodUnit:"d"}};function rc(e){let[o,t]=Zr(e.defaultValue||cf),r=pf();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(jd,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(Zd,null,$.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Te,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(Yd,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?cf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(wt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(ec,{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(_d,{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(ve,{title:"Repeat on"},$.createElement(df.Group,{multiple:!0,onChange:s},$.createElement(wt,{position:"apart",mt:"md",spacing:"xs"},tc.map(i=>$.createElement(df,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(wt,{position:"right"},$.createElement(mf,{onClick:()=>e.onOk(o)},"OK"))))}function Le(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===F.Attachment?V.createElement(bn,{name:r,defaultValue:a,onChange:e.onChange}):V.createElement(uf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?V.createElement(dc,{elementDefinitionTypes:n,...e}):V.createElement(If,{elementDefinitionType:n[0],...e})}function dc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=uc(t);return V.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},V.createElement(fc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),V.createElement(If,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",sc(r.code)))}}))}function If(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 F.SystemString:case F.canonical:case F.string:case F.time:case F.uri:case F.url:return V.createElement(Yr,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:ue(e.outcome,r)});case F.date:return V.createElement(Yr,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:ue(e.outcome,r)});case F.dateTime:case F.instant:return V.createElement(Te,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case F.decimal:case F.integer:case F.positiveInt:case F.unsignedInt:return V.createElement(Yr,{type:"number",step:t===F.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case F.code:return V.createElement(It,{property:o,name:r,defaultValue:a,onChange:e.onChange});case F.boolean:return V.createElement(ac,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case F.markdown:return V.createElement(lc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case F.Address:return V.createElement(za,{name:r,defaultValue:a,onChange:e.onChange});case F.Annotation:return V.createElement(Qa,{name:r,defaultValue:a,onChange:e.onChange});case F.Attachment:return V.createElement(gt,{name:r,defaultValue:a,onChange:e.onChange});case F.CodeableConcept:return V.createElement(Wn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case F.Coding:return V.createElement(Xn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case F.ContactDetail:return V.createElement(Jn,{name:r,defaultValue:a,onChange:e.onChange});case F.ContactPoint:return V.createElement(kt,{name:r,defaultValue:a,onChange:e.onChange});case F.Extension:return V.createElement(Kn,{name:r,defaultValue:a,onChange:e.onChange});case F.HumanName:return V.createElement(jn,{name:r,defaultValue:a,onChange:e.onChange});case F.Identifier:return V.createElement(Zn,{name:r,defaultValue:a,onChange:e.onChange});case F.Money:return V.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case F.Period:return V.createElement(ef,{name:r,defaultValue:a,onChange:e.onChange});case F.Duration:case F.Quantity:return V.createElement(Se,{name:r,defaultValue:a,onChange:e.onChange});case F.Range:return V.createElement(jo,{name:r,defaultValue:a,onChange:e.onChange});case F.Ratio:return V.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case F.Reference:return V.createElement(Do,{name:r,defaultValue:a,targetTypes:cc(o),onChange:e.onChange});case F.Timing:return V.createElement(xf,{name:r,defaultValue:a,onChange:e.onChange});case F.Dosage:case F.UsageContext:return V.createElement(Ko,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return V.createElement(Ko,{typeName:ic(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function cc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Ko(e){let[o,t]=xc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=pc.types[a];if(!n)return To.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return To.createElement(mc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||ht.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,c]=ye(f,s),m=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?To.createElement(bt,{key:s,title:gf(s),description:i.definition,htmlFor:s},To.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:c,outcome:e.outcome,onChange:(S,k)=>{r($o(o,s,k??s,l[1],S))}})):To.createElement(ve,{key:s,title:gf(s),description:i.definition,withAsterisk:m,htmlFor:s,outcome:e.outcome},To.createElement(Le,{property:i,name:s,defaultValue:u,defaultPropertyType:c,onChange:(S,k)=>{r($o(o,s,k??s,l[1],S))}}))}))}import{Button as ea,createStyles as Ic,Group as hf}from"@mantine/core";import ee,{useMemo as gc,useState as hc}from"react";var Cc=Ic(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 yc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Cf(e){let{classes:o}=Cc(),{onChangeMonth:t,onClick:r}=e,[a,n]=hc(oa);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=gc(()=>vc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(hf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},yc(a)),ee.createElement(hf,{position:"right",spacing:"xs"},ee.createElement(ea,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(ea,{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,c)=>ee.createElement("td",{key:"day-"+c},u&&ee.createElement(ea,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function oa(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function vc(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:Sc(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 Sc(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 Pc,createStyles as bc}from"@mantine/core";import Dc from"react";var Tc=bc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Tc();return Dc.createElement(Pc,{className:r.root,...t},o)}import Om from"react";import{ActionIcon as Rf,Center as Im,createStyles as gm,Group as hm,Loader as Cm,Menu as Re,ScrollArea as ym,TextInput as vm}from"@mantine/core";import{showNotification as Sm,updateNotification as sa}from"@mantine/notifications";import{getReferenceString as _o,normalizeErrorString as Pm}from"@medplum/core";import P,{useCallback as Lt,useEffect as bm,useRef as Nf,useState as Hf}from"react";import{createStyles as qc,Group as Et,List as Sf,Stack as Pf,Text as Pe,Title as bf}from"@mantine/core";import{capitalize as Uc,formatDateTime as aa,formatObservationValue as Gc}from"@medplum/core";import I,{useEffect as zc,useState as Wc}from"react";import{Blockquote as kc,createStyles as Bc,Stack as Ac}from"@mantine/core";import yf from"react";var Mc=Bc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ta({value:e}){let{classes:o}=Mc();return e?yf.createElement(Ac,{justify:"flex-start",spacing:"xs"},e.map((t,r)=>t.text&&yf.createElement(kc,{key:`note-${r}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Rc}from"@mantine/core";import ra from"react";import{Text as Fc}from"@mantine/core";import{getDisplayString as wc,isOk as Oc,normalizeErrorString as Ec}from"@medplum/core";import vf,{useState as Lc}from"react";function Fe(e){let{value:o,link:t,...r}=e,[a,n]=Lc(),f=X(o,n),l;if(a&&!Oc(a))l=`[${Ec(a)}]`;else if(f)l=wc(f);else return null;return t?vf.createElement(ae,{to:o,...r},l):vf.createElement(Fc,{component:"span",...r},l)}function Qe(e){return ra.createElement(Rc,{spacing:"xs"},ra.createElement(pe,{size:24,radius:12,value:e.value,link:e.link}),ra.createElement(Fe,{value:e.value,link:e.link}))}import{Badge as Nc}from"@mantine/core";import Hc from"react";var Vc={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Ot(e){return Hc.createElement(Nc,{color:Vc[e.status]},e.status)}var Df=qc(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}}));na.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function na(e){let o=v(),t=X(e.value),[r,a]=Wc();if(zc(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(Pf,null,I.createElement(bf,null,"Diagnostic Report"),I.createElement(Xc,{value:t}),!e.hideSpecimenInfo&&Qc(r),t.result&&I.createElement(Jc,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(ta,{value:n}))}function Xc({value:e}){return I.createElement(Et,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(Pe,null,I.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(Pe,null,I.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(Pe,null,I.createElement(Qe,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Pe,null,aa(e.issued))),e.status&&I.createElement("div",null,I.createElement(Pe,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Pe,null,Uc(e.status))))}function Qc(e){return I.createElement(Pf,{spacing:"xs"},I.createElement(bf,{order:2,size:"h6"},"Specimens"),I.createElement(Sf,{type:"ordered"},e?.map((o,t)=>I.createElement(Sf.Item,{ml:"sm",key:`specimen-${o.id}-${t}`},I.createElement(Et,{spacing:20},I.createElement(Et,{spacing:5},I.createElement(Pe,{fw:500},"Collected:")," ",aa(o.collection?.collectedDateTime)),I.createElement(Et,{spacing:5},I.createElement(Pe,{fw:500},"Received:")," ",aa(o.receivedTime)))))))}function Jc(e){let{classes:o}=Df();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,e.value?.map((t,r)=>I.createElement($c,{key:`obs-${t.id}-${r}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function $c(e){let{classes:o,cx:t}=Df(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=_c(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(ae,{to:r},I.createElement(Po,{value:r.code}))),I.createElement("td",null,I.createElement(Kc,{value:r})),I.createElement("td",null,I.createElement(jc,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(Po,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement("ul",null,r.category.map((f,l)=>I.createElement("li",{key:`category-${l}`},I.createElement(Po,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(eo,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Ot,{status:r.status}))),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(ta,{value:r.note}))))}function Kc(e){let o=e.value;return I.createElement(I.Fragment,null,Gc(o))}function jc(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(yt,{value:o}):null}function _c(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Zc,Paper as Yc,useComponentDefaultProps as em}from"@mantine/core";import om from"react";var tm=Zc((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%"}}})),rm={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=em("Panel",rm,e),{classes:l,cx:s}=tm({width:r,fill:a},{name:"Panel",unstyled:n});return om.createElement(Yc,{className:s(l.paper,o),...f},t)}import{createStyles as am}from"@mantine/core";import{getPropertyDisplayName as nm,stringify as Tf,toTypedValue as kf}from"@medplum/core";import fe,{useEffect as fm,useState as lm}from"react";var sm=am(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 Af(e){let{classes:o}=sm(),t=v(),[r,a]=lm();if(fm(()=>{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?fe.createElement("table",{className:o.root},fe.createElement("colgroup",null,fe.createElement("col",{style:{width:"30%"}}),fe.createElement("col",{style:{width:"35%"}}),fe.createElement("col",{style:{width:"35%"}})),fe.createElement("thead",null,fe.createElement("tr",null,fe.createElement("th",null,"Property"),fe.createElement("th",null,"Before"),fe.createElement("th",null,"After"))),fe.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=ye(kf(e.original),l),[c,m]=ye(kf(e.revised),l);return Bf(i)&&Bf(c)||Tf(i)===Tf(c)?null:fe.createElement("tr",{key:l},fe.createElement("td",null,nm(l)),fe.createElement("td",{className:o.removed},fe.createElement(ie,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),fe.createElement("td",{className:o.added},fe.createElement(ie,{property:s,propertyType:m,value:c,ignoreMissingValues:!0})))}))):null}function Bf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import im,{useEffect as um,useState as dm}from"react";function fa(e){let o=v(),t=X(e.value),[r,a]=dm();return um(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:im.createElement(Qo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as cm,Group as mm,Menu as Mf,Text as la}from"@mantine/core";import{formatDateTime as pm,getReferenceString as xm}from"@medplum/core";import oe from"react";function Ff(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(ko,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(mm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(pe,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(la,{size:"sm"},oe.createElement(Fe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(la,{size:"xs"},oe.createElement(ae,{color:"dimmed",to:e.resource},pm(l)),oe.createElement(la,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ae,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Mf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Mf.Target,null,oe.createElement(cm,{radius:"xl","aria-label":`Actions for ${xm(e.resource)}`},oe.createElement(yr,null))),a)),oe.createElement(xo,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function Ef(e,o){e.sort((t,r)=>{let a=wf(t,o),n=wf(r,o);return a>n?1:a<n?-1:Of(t,o)-Of(r,o)})}function wf(e,o){if(!Lf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Of(e,o){if(!Lf(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 Lf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Dm=gm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=Nf(null),n=X(e.value),[f,l]=Hf(),[s,i]=Hf([]),u=e.loadTimelineResources,c=Nf(s);c.current=s;let m=Lt(g=>{Ef(g,n),g.reverse(),i(g)},[n]),S=Lt(g=>{let L=[];for(let He of g){if(He.status!=="fulfilled")continue;let C=He.value;if(C.type==="history"&&l(C),C.entry)for(let W of C.entry)L.push(W.resource)}m(L)},[m]),k=Lt(g=>m([...c.current,g]),[m]),T=Lt(()=>{let g,L;"resourceType"in e.value?(g=e.value.resourceType,L=e.value.id):[g,L]=e.value.reference?.split("/"),u(o,g,L).then(S).catch(console.log)},[o,e.value,u,S]);bm(()=>T(),[T]);function h(g){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,g)).then(L=>k(L)).catch(console.log)}function D(g){!n||!e.createMedia||o.createResource(e.createMedia(n,r,g)).then(L=>k(L)).then(()=>sa({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:P.createElement(xr,{size:16}),autoClose:2e3})).catch(L=>sa({id:"upload-notification",color:"red",title:"Upload error",message:Pm(L),icon:P.createElement(Sr,{size:16}),autoClose:2e3}))}function d(g,L){return o.updateResource({...g,priority:L})}function O(g){d(g,"stat").then(T).catch(console.log)}function y(g){d(g,"routine").then(T).catch(console.log)}function M(g){t(`/${g.resourceType}/${g.id}`)}function xe(g){t(`/${g.resourceType}/${g.id}/edit`)}function Z(g){t(`/${g.resourceType}/${g.id}/delete`)}function Ie(g){t(`/${g.resourceType}/${g.id}/_history/${g.meta?.versionId}`)}function ge(){Sm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function be(g){sa({id:"upload-notification",loading:!0,title:"Uploading...",message:wm(g),autoClose:!1,withCloseButton:!1})}return n?P.createElement(Ff,null,e.createCommunication&&P.createElement(ko,null,P.createElement(J,{testid:"timeline-form",onSubmit:g=>{h(g.text);let L=a.current;L&&(L.value="",L.focus())}},P.createElement(hm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},P.createElement(pe,{value:r}),P.createElement(vm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),P.createElement(Rf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},P.createElement(kr,{size:16})),P.createElement(vo,{onUpload:D,onUploadStart:ge,onUploadProgress:be},g=>P.createElement(Rf,{...g,radius:"xl",color:"blue",variant:"filled"},P.createElement(Vo,{size:16})))))),s.map(g=>{if(!g)return null;let L=`${g.resourceType}/${g.id}/${g.meta?.versionId}`;if(g.resourceType===n.resourceType&&g.id===n.id)return P.createElement(Tm,{key:L,history:f,resource:g,onDetails:Ie});switch(g.resourceType){case"AuditEvent":return P.createElement(Mm,{key:L,resource:g,onDetails:M});case"Communication":return P.createElement(Bm,{key:L,resource:g,onPin:g.priority!=="stat"?O:void 0,onUnpin:g.priority==="stat"?y:void 0,onDetails:M,onEdit:xe,onDelete:Z});case"DiagnosticReport":return P.createElement(Fm,{key:L,resource:g,onDetails:M,onEdit:xe,onDelete:Z});case"Media":return P.createElement(Am,{key:L,resource:g,onDetails:M,onEdit:xe,onDelete:Z});default:return P.createElement(Je,{key:L,resource:g,padding:!0},P.createElement(fa,{value:g,ignoreMissingValues:!0}))}})):P.createElement(Im,{style:{width:"100%",height:"100%"}},P.createElement(Cm,null))}function Bo(e){return P.createElement(Re.Dropdown,null,P.createElement(Re.Label,null,"Resource"),e.onPin&&P.createElement(Re.Item,{icon:P.createElement(Br,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${_o(e.resource)}`},"Pin"),e.onUnpin&&P.createElement(Re.Item,{icon:P.createElement(Ar,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${_o(e.resource)}`},"Unpin"),e.onDetails&&P.createElement(Re.Item,{icon:P.createElement(Dr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${_o(e.resource)}`},"Details"),e.onEdit&&P.createElement(Re.Item,{icon:P.createElement(vr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${_o(e.resource)}`},"Edit"),e.onDelete&&P.createElement(P.Fragment,null,P.createElement(Re.Divider,null),P.createElement(Re.Label,null,"Danger zone"),P.createElement(Re.Item,{color:"red",icon:P.createElement(Go,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${_o(e.resource)}`},"Delete")))}function Tm(e){let o=km(e.history,e.resource);return o?P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(Af,{original:o,revised:e.resource})):P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement("h3",null,"Created"),P.createElement(fa,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function km(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Bm(e){let{classes:o}=Dm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return P.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:P.createElement(Bo,{...e})},P.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Am(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return P.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(Me,{value:e.resource.content}))}function Mm(e){return P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(ym,null,P.createElement("pre",null,e.resource.outcomeDesc)))}function Fm(e){return P.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:P.createElement(Bo,{...e})},P.createElement(na,{value:e.resource}))}function wm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ia(e.loaded)} / ${ia(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ia(e.loaded)}`}function ia(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 Uk(e){return Om.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 Vf from"react";function Rt(e){let{children:o,...t}=e;return Vf.createElement(Xe,null,Vf.createElement(ko,{...t},o))}import{createReference as Nt}from"@medplum/core";import Em from"react";function Yk(e){return Em.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:Nt(o),subject:o.subject,sender:Nt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Nt(o),subject:o.subject,operator:Nt(t),issued:new Date().toISOString(),content:r})})}import{Button as qp,Loader as Up,Table as Gp}from"@mantine/core";import{normalizeOperationOutcome as zp}from"@medplum/core";import te,{useEffect as Il,useRef as gl,useState as Wt}from"react";import{evalFhirPath as Lm}from"@medplum/core";import Rm from"react";function qf(e){let o;try{o=Lm(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 Rm.createElement(ie,{value:o[0]||"",propertyType:e.propertyType})}import{Button as wo,Center as zt,createStyles as Dp,Group as ha,Loader as Tp,Menu as pl,Pagination as kp,Table as Bp,Text as Ca,UnstyledButton as Ap}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Pa,formatSearchQuery as Mp,globalSchema as Fp}from"@medplum/core";import b,{useEffect as xl,useRef as wp,useState as ya}from"react";import{Box as Nm,Button as Hm,Modal as Vm,Text as qm}from"@mantine/core";import Ao from"react";function Gf(e){return Ao.createElement(Vm,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Ao.createElement(Nm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Ao.createElement(Uf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Ao.createElement(Uf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Ao.createElement(qm,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Uf(e){return Ao.createElement(Hm,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as et,Modal as jm}from"@mantine/core";import{globalSchema as _m,stringify as Zm}from"@medplum/core";import Q,{useEffect as Ym,useRef as rl,useState as ep}from"react";import{capitalize as Um,DEFAULT_SEARCH_COUNT as Gm,evalFhirPathTyped as zm,formatDateTime as Wm,Operator as A}from"@medplum/core";import Ht from"react";var Xm={string:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],fulltext:[A.EQUALS,A.NOT,A.CONTAINS,A.EXACT],token:[A.EQUALS,A.NOT],reference:[A.EQUALS,A.NOT],numeric:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],quantity:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS],date:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY],datetime:[A.EQUALS,A.NOT_EQUALS,A.GREATER_THAN,A.LESS_THAN,A.GREATER_THAN_OR_EQUALS,A.LESS_THAN_OR_EQUALS,A.STARTS_AFTER,A.ENDS_BEFORE,A.APPROXIMATELY]},Qm={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 Zo(e,o){return{...e,filters:o,offset:0,name:void 0}}function xB(e){return Zo(e,[])}function Vt(e,o){return Zo(e,(e.filters??[]).filter(t=>t.code!==o))}function Mo(e,o,t,r,a){a&&(e=Vt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),Zo(e,n)}function IB(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 Wf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function Xf(e,o){return ua(e,o,-1)}function Qf(e,o){return ua(e,o,0)}function Jf(e,o){return ua(e,o,1)}function ua(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),ca(e,o,r,a)}function $f(e,o){return da(e,o,-1)}function Kf(e,o){return da(e,o,0)}function jf(e,o){return da(e,o,1)}function da(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),ca(e,o,r,a)}function _f(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ca(e,o,t,new Date)}function ca(e,o,t,r){return e=Vt(e,o),e=zf(e,o,A.GREATER_THAN_OR_EQUALS,t),e=zf(e,o,A.LESS_THAN_OR_EQUALS,r),e}function zf(e,o,t,r){return Mo(e,o,t,r.toISOString())}function ma(e,o,t=!0){return Mo(e,o,A.MISSING,t.toString())}function Jm(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Zf(e,o){let t=e.count??Gm,r=(o-1)*t;return Jm(e,r)}function pa(e,o,t){return o===Yf(e)&&t!==void 0&&t===el(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function gB(e,o){let t=!1;return Yf(e)===o&&(t=!el(e)),pa(e,o,t)}function Yf(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function el(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ol(e){return Xm[e.type]}function Yo(e){return Qm[e]??""}function he(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Um).join(" "))}function tl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Wm(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?$m(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Km(e,o.searchParams[0]):null}function $m(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=ye({type:e.resourceType,value:e},t);return r?Ht.createElement(ie,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Km(e,o){let t=zm(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Ht.createElement(Ht.Fragment,null,t.map((r,a)=>Ht.createElement(ie,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function al(e){let[o,t]=ep({search:JSON.parse(Zm(e.search))}),r=rl(null),a=rl(null);Ym(()=>{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??[],O=r.current?.value;if(O){let y=[...d,O];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],O=a.current?.value;if(O){let y=[...d];y.splice(y.indexOf(O),1),t({search:{...o.search,fields:y}})}}function c(){let d=o.search.fields??[],O=a.current?.value;if(!O)return;let y=[...d],M=y.indexOf(O);M<=0||(S(y,M,M-1),t({search:{...o.search,fields:y}}))}function m(){let d=o.search.fields??[],O=a.current?.value;if(!O)return;let y=[...d],M=y.indexOf(O);M>=y.length-1||(S(y,M,M+1),t({search:{...o.search,fields:y}}))}function S(d,O,y){let M=d[O];d[O]=d[y],d[y]=M}if(!e.visible)return null;let k=e.search.resourceType,T=_m.types[k],h=o.search.fields??[],D=op(T).filter(d=>!h.includes(d)).sort((d,O)=>d.localeCompare(O));return Q.createElement(jm,{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"},D.map(d=>Q.createElement("option",{key:d,value:d},he(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"},h.map(d=>Q.createElement("option",{key:d,value:d},he(d))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:c},"Up")),Q.createElement("td",{align:"center"},Q.createElement(et,{compact:!0,variant:"outline",onClick:m},"Down")))))),Q.createElement(et,{onClick:()=>e.onOk(o.search)},"OK"))}function op(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(he(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=he(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(he(a)))}return o}import{Button as tt,Group as ip,Modal as up,NativeSelect as fl}from"@mantine/core";import{globalSchema as dp,stringify as ll}from"@medplum/core";import w,{useEffect as cp,useRef as il,useState as Ia}from"react";import{formatDateTime as tp,getSearchParameterDetails as rp,globalSchema as ap,Operator as nl,SearchParameterType as np}from"@medplum/core";import ot from"react";function qt(e){let{resourceType:o,filter:t}=e,r=ap.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===nl.EQUALS||t.operator===nl.NOT_EQUALS))return ot.createElement(Fe,{value:{reference:t.value}});let a=rp(o,r);if(t.code==="_lastUpdated"||a.type===np.DATETIME)return ot.createElement(ot.Fragment,null,tp(t.value))}return ot.createElement(ot.Fragment,null,t.value)}import{Checkbox as fp,TextInput as xa}from"@mantine/core";import{getSearchParameterDetails as lp,SearchParameterType as Fo}from"@medplum/core";import to from"react";function Ut(e){let o=lp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Fo.REFERENCE:return to.createElement(Do,{name:t,defaultValue:{reference:e.defaultValue},targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Fo.BOOLEAN:return to.createElement(fp,{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 Fo.DATE:return to.createElement(xa,{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 Fo.DATETIME:return to.createElement(Te,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Fo.NUMBER:return to.createElement(xa,{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 Fo.QUANTITY:return to.createElement(Se,{name:t,defaultValue:sp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return to.createElement(xa,{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 sp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function ul(e){let[o,t]=Ia(JSON.parse(ll(e.search))),[r,a]=Ia(-1),n=il(o);n.current=o,cp(()=>{t(JSON.parse(ll(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=dp.types[l].searchParams??{},i=o.filters||[];return w.createElement(up,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},w.createElement("div",null,w.createElement("table",null,w.createElement("colgroup",null,w.createElement("col",{style:{width:200}}),w.createElement("col",{style:{width:200}}),w.createElement("col",{style:{width:380}}),w.createElement("col",{style:{width:120}})),w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"Field"),w.createElement("th",null,"Operation"),w.createElement("th",null,"Value"),w.createElement("th",null,"Actions"))),w.createElement("tbody",null,i.map((u,c)=>c===r?w.createElement(sl,{key:`filter-${c}-${i.length}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:m=>{let S=[...i];S[c]=m,t(Zo(n.current,S)),a(-1)},onCancel:()=>a(-1)}):w.createElement(mp,{key:`filter-${c}-${i.length}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(c),onDelete:()=>t(Wf(n.current,c))})),w.createElement(sl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),w.createElement(ip,{position:"right",mt:"xl"},w.createElement(tt,{onClick:()=>e.onOk(n.current)},"OK")))}function mp(e){let{filter:o}=e;return w.createElement("tr",null,w.createElement("td",null,he(o.code)),w.createElement("td",null,Yo(o.operator)),w.createElement("td",null,w.createElement(qt,{resourceType:e.resourceType,filter:o})),w.createElement("td",null,w.createElement(tt,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),w.createElement(tt,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function sl(e){let[o,t]=Ia(e.defaultValue??{}),r=il(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&&ol(l);return w.createElement("tr",null,w.createElement("td",null,w.createElement(fl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:Object.keys(e.searchParams).map(i=>({value:i,label:he(i)}))})),w.createElement("td",null,s&&w.createElement(fl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:Yo(i)}))]})),w.createElement("td",null,l&&o.operator&&w.createElement(Ut,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),w.createElement("td",null,o.code&&o.operator&&o.value&&w.createElement(tt,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&w.createElement(tt,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as pp,Grid as ga,Modal as xp}from"@mantine/core";import ro,{useState as Ip}from"react";function dl(e){let[o,t]=Ip(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return ro.createElement(xp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},ro.createElement(J,{onSubmit:r},ro.createElement(ga,null,ro.createElement(ga.Col,{span:10},ro.createElement(Ut,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),ro.createElement(ga.Col,{span:2},ro.createElement(pp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as le}from"@medplum/core";import p from"react";function cl(e){if(!e.searchParams)return null;function o(n,f){a(pa(e.search,n.code,f))}function t(n){a(Vt(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(gp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},he(n.code))))}function gp(e){switch(e.searchParam.type){case"date":return p.createElement(hp,{...e});case"number":case"quantity":return p.createElement(Cp,{...e});case"reference":return p.createElement(yp,{...e});case"string":case"token":case"uri":return p.createElement(vp,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function hp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Uo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(ct,{size:14}),onClick:()=>e.onPrompt(o,le.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(dt,{size:14}),onClick:()=>e.onPrompt(o,le.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(cr,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Jf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Qf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Xf(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(jf(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(Kf(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange($f(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Oe,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Year to date"),p.createElement(Gt,{...e}))}function Cp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Uo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(dt,{size:14}),onClick:()=>e.onPrompt(o,le.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,le.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(ct,{size:14}),onClick:()=>e.onPrompt(o,le.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,le.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Gt,{...e}))}function yp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT)},"Does not equal..."),p.createElement(Gt,{...e}))}function vp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Uo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(co,{size:14}),onClick:()=>e.onPrompt(o,le.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(pr,{size:14}),onClick:()=>e.onPrompt(o,le.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onPrompt(o,le.EQUALS)},"Does not contain..."),p.createElement(Gt,{...e}))}function Gt(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(ur,{size:14}),onClick:()=>e.onChange(ma(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(ir,{size:14}),onClick:()=>e.onChange(ma(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Lr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Sp,globalSchema as Pp}from"@medplum/core";function ml(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(bp(o,r));return t}function bp(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=Pp.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=Sp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var va=class extends Event{constructor(t){super("change");this.definition=t}},Sa=class extends Event{constructor(t){super("load");this.response=t}},ao=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Op=Dp(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 Ep(e){let{classes:o}=Op(),t=v(),[r,a]=ya(!1),[n,f]=ya(),{search:l,onLoad:s}=e,[i,u]=ya({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=wp(i);c.current=i;let m=l.total??"accurate";xl(()=>{f(void 0),t.search(l.resourceType,Mp({...l,total:m,fields:void 0})).then(C=>{u({...c.current,searchResponse:C}),s&&s(new Sa(C))}).catch(C=>{u({...c.current,searchResponse:void 0}),f(C)})},[t,l,m,s]);function S(C,W){C.stopPropagation();let io=C.target.checked,Y={...c.current.selected};io?Y[W]=!0:delete Y[W],u({...c.current,selected:Y})}function k(C){C.stopPropagation();let so=C.target.checked,io={},Y=c.current.searchResponse;so&&Y?.entry&&Y.entry.forEach(me=>{me.resource?.id&&(io[me.resource.id]=!0)}),u({...c.current,selected:io})}function T(){let C=c.current;if(!C.searchResponse?.entry||C.searchResponse.entry.length===0)return!1;for(let W of C.searchResponse.entry)if(W.resource?.id&&!C.selected[W.resource.id])return!1;return!0}function h(C){e.onChange&&e.onChange(new va(C))}function D(C,W){pt(C.target)||C.button!==2&&(H(C),C.button!==1&&e.onClick&&e.onClick(new ao(W,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new ao(W,C)))}function d(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(xl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Fp.types[e.search.resourceType]))return b.createElement(zt,{style:{width:"100%",height:"100%"}},b.createElement(Tp,null));let y=e.checkboxesEnabled,M=ml(l),xe=l.resourceType,Z=i.searchResponse,ge=Z?.entry?.map(C=>C.resource),be="subtle",g="gray",L=16,He=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(ha,{position:"apart",mb:"xl"},b.createElement(ha,{spacing:2},b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(hr,{size:L}),onClick:()=>u({...c.current,fieldEditorVisible:!0})},"Fields"),b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(br,{size:L}),onClick:()=>u({...c.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(Pr,{size:L}),onClick:e.onNew},"New..."),!He&&d()&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(Er,{size:L}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0})},"Export..."),!He&&e.onDelete&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(Go,{size:L}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!He&&e.onBulk&&b.createElement(wo,{compact:!0,variant:be,color:g,leftIcon:b.createElement(dr,{size:L}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),Z&&b.createElement(Ca,{size:"xs",color:"dimmed"},Hp(l,Z.total),"-",Vp(l,Z.total)," of"," ",`${m==="estimate"?"~":""}${Z.total?.toLocaleString()}`)),b.createElement(Bp,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,y&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:C=>k(C)})),M.map(C=>b.createElement("th",{key:C.name},b.createElement(pl,{shadow:"md",width:240,position:"bottom-end"},b.createElement(pl.Target,null,b.createElement(Ap,{className:o.control},b.createElement(ha,{position:"apart",noWrap:!0},b.createElement(Ca,{weight:500,size:"sm"},he(C.name)),b.createElement(zt,{className:o.icon},b.createElement(sr,{size:14,stroke:1.5}))))),b.createElement(cl,{search:e.search,searchParams:C.searchParams,onPrompt:(W,so)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:so})},onChange:W=>{h(W)}}))))),!e.hideFilters&&b.createElement("tr",null,y&&b.createElement("th",null),M.map(C=>b.createElement("th",{key:C.name},C.searchParams&&b.createElement(Lp,{resourceType:xe,searchParams:C.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,ge?.map(C=>C&&b.createElement("tr",{key:C.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>D(W,C),onAuxClick:W=>D(W,C)},y&&b.createElement("td",null,b.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!i.selected[C.id],onChange:W=>S(W,C.id)})),M.map(W=>b.createElement("td",{key:W.name},tl(C,W))))))),ge?.length===0&&b.createElement(Xe,null,b.createElement(zt,{style:{height:150}},b.createElement(Ca,{size:"xl",color:"dimmed"},"No results"))),Z?.total!==void 0&&Z.total>0&&b.createElement(zt,{m:"md",p:"md"},b.createElement(kp,{value:Rp(l),total:Np(l,Z.total),onChange:C=>h(Zf(l,C)),getControlProps:C=>{switch(C){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&b.createElement("div",{"data-testid":"search-error"},b.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),b.createElement(al,{search:e.search,visible:c.current.fieldEditorVisible,onOk:C=>{h(C),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),b.createElement(ul,{search:e.search,visible:c.current.filterEditorVisible,onOk:C=>{h(C),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),b.createElement(Gf,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),b.createElement(dl,{key:i.filterDialogSearchParam?.code,visible:c.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?he(i.filterDialogSearchParam.code):"",resourceType:xe,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:C=>{h(Mo(e.search,C.code,C.operator,C.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}}))}var kA=b.memo(Ep);function Lp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?b.createElement("span",null,"no filters"):b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement("div",{key:`filter-${r}-${o.length}`},Yo(t.operator),"\xA0",b.createElement(qt,{resourceType:e.resourceType,filter:t}))))}function Rp(e){return Math.floor((e.offset??0)/(e.count??Pa))+1}function Np(e,o){let t=e.count??Pa;return Math.ceil(o/t)}function Hp(e,o){return Math.min(o,(e.offset??0)+1)}function Vp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Pa))}function Wp(e){let o=v(),[t,r]=Wt(),[a,n]=Wt(),{query:f,fields:l}=e,[s,i]=Wt(),[u,c]=Wt({}),m=gl();m.current=s;let S=gl({});S.current=u,Il(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(zp(y)))},[o,f]);function k(y,M){y.stopPropagation();let Z=y.target.checked,Ie={...S.current};Z?Ie[M]=!0:delete Ie[M],c(Ie)}function T(y){y.stopPropagation();let xe=y.target.checked,Z={},Ie=m.current?.data.ResourceList;xe&&Ie&&Ie.forEach(ge=>{ge.id&&(Z[ge.id]=!0)}),c(Z)}function h(){let y=m.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let M of y)if(M.id&&!S.current[M.id])return!1;return!0}function D(y,M){pt(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new ao(M,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new ao(M,y)))}if(Il(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(Up,null);let O=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(Gp,null,te.createElement("thead",null,te.createElement("tr",null,O&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:h(),onChange:y=>T(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:M=>D(M,y),onAuxClick:M=>D(M,y)},O&&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:M=>k(M,y.id)})),l.map(M=>te.createElement("td",{key:M.name},te.createElement(qf,{propertyType:M.propertyType,path:M.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(qp,{onClick:()=>e.onBulk(Object.keys(S.current))},"Bulk..."))}var HA=te.memo(Wp);import no from"react";function Ke(e){return no.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},no.createElement("title",null,"Medplum Logo"),no.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),no.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"}),no.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"}),no.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),no.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as Xp}from"@mantine/core";import ba from"react";function Oo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ba.createElement(Xp,{icon:ba.createElement(Ze,{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 Xt}from"@medplum/core";import Qp,{useCallback as Jp}from"react";function _A(e){let o=Jp((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 Qp.createElement($e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Xt(t),sender:Xt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Xt(t),operator:Xt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Cl,Button as $p,createStyles as Kp,NativeSelect as jp,Stack as _p,TextInput as Ta}from"@mantine/core";import{getReferenceString as Zp}from"@medplum/core";import N,{useEffect as hl,useRef as yl,useState as rt}from"react";var vl=Kp(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 pM(e){let o=v(),t=X(e.value),[r,a]=rt(void 0),[n,f]=rt(),[l,s]=rt(),[i,u]=rt();function c(){s(void 0)}function m(){f(void 0)}let S=yl();if(S.current=i,hl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),hl(()=>(u(ax(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",c),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",m)}),[t]),!r||!i)return null;function k(T,h){u({...S.current,[T]:h})}return N.createElement("div",null,N.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},N.createElement(Ta,{label:"Plan Title",defaultValue:i.title,onChange:T=>k("title",T.currentTarget.value)}),N.createElement(Sl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:T=>k("action",T)}),N.createElement($p,{type:"submit"},"Save")))}function Sl(e){let{classes:o}=vl(),t=yl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return N.createElement("div",{className:o.section},e.actions.map(f=>N.createElement("div",{key:f.id},N.createElement(Yp,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),N.createElement("div",{className:o.bottomActions},N.createElement(Cl,{href:"#",onClick:f=>{H(f),a({id:bl()})}},"Add action")))}function Yp(e){let{classes:o,cx:t}=vl(),{action:r}=e,a=rx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return N.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?N.createElement(ox,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):N.createElement(ex,{action:r,actionType:a}),N.createElement("div",{className:o.bottomActions},N.createElement(Cl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var ka={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function ex(e){let{action:o,actionType:t}=e,[r,a]=Pl(o);return N.createElement("div",null,N.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&N.createElement("div",null,N.createElement(eo,{value:{reference:o.definitionCanonical}})),r&&N.createElement("div",null,N.createElement(ie,{property:ka,propertyType:a,value:r})))}function ox(e){let{action:o}=e,[t,r]=rt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return N.createElement(_p,{spacing:"xl"},N.createElement(Ta,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),N.createElement(Ta,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),N.createElement(jp,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&N.createElement(Sl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return N.createElement(Qt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return N.createElement(Qt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return N.createElement(Qt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return N.createElement(Qt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),N.createElement(ve,{title:"Timing",description:"When the action should take place."},N.createElement(tx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Qt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return N.createElement(Mt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Zp(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function tx(e){let o=e.action,t="timing",[r,a]=Pl(o);return N.createElement(Le,{property:ka,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange($o(o,t,f??t,ka,n))}})}function rx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Pl(e){return ye({type:"PlanDefinitionAction",value:e},"timing")}var Da=1;function bl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Da=Math.max(Da,o+1))}return e}return"id-"+Da++}function ax(e){return{...e,action:Dl(e.action)}}function Dl(e){if(e)return e.map(o=>({...o,id:bl(o.id),action:Dl(o.action)}))}import{Anchor as nt,Button as Sx,createStyles as Px,NativeSelect as bx,Textarea as Dx,TextInput as Nl,Title as Tx}from"@mantine/core";import{globalSchema as kx,isResource as Bx}from"@medplum/core";import E,{useEffect as Hl,useRef as Ax,useState as Kt}from"react";import{Button as nx,Checkbox as wl,Group as fx,NativeSelect as lx,Radio as Bl,Stack as sx,Textarea as ix,TextInput as at,Title as ux}from"@mantine/core";import{capitalize as Ol,createReference as dx,deepEquals as cx,getQuestionnaireAnswers as mx,getReferenceString as El,getTypedPropertyValue as fo,globalSchema as px,stringify as Al}from"@medplum/core";import G,{useEffect as Ml,useState as Jt}from"react";var Tl=(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))(Tl||{});function kl(e){return e.type==="choice"||e.type==="open-choice"}function Ll(e){let o=v(),t=o.getProfile(),[r,a]=Jt(),n=X(e.questionnaire),[f,l]=Jt(),[s,i]=Jt({});Ml(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Ml(()=>{l(n?gx(n):void 0)},[n]);function u(c){let m={resourceType:"QuestionnaireResponse",item:c};l(m),i(mx(m))}return!r||!n?null:G.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:El(n),subject:e.subject,source:dx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&G.createElement(ux,null,n.title),n.item&&G.createElement(Rl,{items:n.item,answers:s,onChange:u}),G.createElement(fx,{position:"right",mt:"xl"},G.createElement(nx,{type:"submit"},e.submitButtonText??"OK")))}function Rl(e){let[o,t]=Jt(Ba(e.items));function r(a,n){let f=o.slice();f[a]=n,t(f),e.onChange(f)}return G.createElement(sx,null,e.items.map((a,n)=>{if(!vx(a,e.answers))return null;if(a.type==="display")return G.createElement("p",{key:a.linkId},a.text);if(a.type==="group")return G.createElement($t,{key:a.linkId,item:a,answers:e.answers,onChange:f=>r(n,f)});if(a.type==="boolean"){let f=a.initial&&a.initial.length>0?a.initial[0]:void 0;return G.createElement(bt,{key:a.linkId,title:a.text,htmlFor:a.linkId},G.createElement(wl,{id:a.linkId,name:a.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r(n,{linkId:a.linkId,text:a.text,answer:[{valueBoolean:l.currentTarget.checked}]})}))}return G.createElement(ve,{key:a.linkId,htmlFor:a.linkId,title:a.text??""},G.createElement($t,{item:a,answers:e.answers,onChange:f=>r(n,f)}))}))}function $t(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 G.createElement("div",null,G.createElement("h3",null,o.text),o.item&&G.createElement(Rl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return G.createElement(wl,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return G.createElement(at,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return G.createElement(at,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return G.createElement(at,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return G.createElement(Te,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return G.createElement(at,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return G.createElement(at,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return G.createElement(ix,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return G.createElement(gt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return G.createElement(Do,{name:r,defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return G.createElement(Se,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return yx(o)?G.createElement(xx,{name:r,item:o,initial:a,onChangeAnswer:f}):G.createElement(Ix,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function xx(e){let{name:o,item:t,initial:r}=e,a=fo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=fo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Fl(l))}return G.createElement(lx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=fo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Ol(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Fl(a),data:n})}function Fl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ix(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=px.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=fo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],c=`${o}-option-${i}`,m=fo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Al(m)===Al(f)&&(s=c),l.push([c,m])}return G.createElement(Bl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(c=>c[0]===i);if(u){let c=u[1],m="value"+Ol(c.type);a({[m]:c.value})}}},l.map(([i,u])=>G.createElement(Bl,{key:i,id:i,value:i,label:G.createElement(ie,{property:n,propertyType:u.type,value:u.value})})))}function gx(e){return{resourceType:"QuestionnaireResponse",questionnaire:El(e),item:Ba(e.item)}}function Ba(e){return e?.map(hx)??[]}function hx(e){return{linkId:e.linkId,text:e.text,item:Ba(e.item),answer:e.initial?.map(Cx)??[]}}function Cx(e){return{...e}}function yx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function vx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=fo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),n=fo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),f=cx(a,n);if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}var Mx=Px(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 $M(e){let o=v(),t=X(e.questionnaire),[r,a]=Kt(),[n,f]=Kt(),[l,s]=Kt(),[i,u]=Kt();function c(){u(void 0)}function m(){s(void 0)}return Hl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Hl(()=>(f(wx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",c),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",m)}),[t]),!r||!n?null:E.createElement("div",null,E.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},E.createElement(ql,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),E.createElement(Sx,{type:"submit"},"Save")))}function ql(e){let{classes:o,cx:t}=Mx(),r=e.item,a=e.item,n=Bx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Ax();u.current=e.item;function c(d){H(d),e.setSelectedKey(e.item.id)}function m(d){H(d),e.setHoverKey(e.item.id)}function S(d){let O=u.current;e.onChange({...O,item:O.item?.map(y=>y.id===d.id?d:y)})}function k(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function T(d){e.onChange({...e.item,item:e.item.item?.filter(O=>O!==d)})}function h(d,O){e.onChange({...u.current,[d]:O})}let D=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return E.createElement("div",{"data-testid":a.linkId,className:D,onClick:c,onMouseOver:m},E.createElement("div",{className:o.questionBody},s?E.createElement(E.Fragment,null,n&&E.createElement(Nl,{size:"xl",defaultValue:r.title,onChange:d=>h("title",d.currentTarget.value)}),!n&&E.createElement(Dx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>h("text",d.currentTarget.value)}),kl(a)&&E.createElement(Fx,{options:a.answerOption,onChange:d=>h("answerOption",d)})):E.createElement(E.Fragment,null,r.title&&E.createElement(Tx,null,r.title),a.text&&E.createElement("div",null,a.text),!f&&E.createElement($t,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>E.createElement("div",{key:d.id},E.createElement(ql,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:S,onRemove:()=>T(d)}))),!f&&E.createElement("div",{className:o.topActions},s?E.createElement(E.Fragment,null,E.createElement(Nl,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:d=>h("linkId",d.currentTarget.value)}),!f&&E.createElement(bx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>h("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"}]})):E.createElement("div",null,l)),E.createElement("div",{className:o.bottomActions},f&&E.createElement(E.Fragment,null,E.createElement(nt,{href:"#",onClick:d=>{d.preventDefault(),k({id:Eo(),linkId:Vl("q"),type:"string",text:"Question"})}},"Add item"),E.createElement(nt,{href:"#",onClick:d=>{d.preventDefault(),k({id:Eo(),linkId:Vl("g"),type:"group",text:"Group"})}},"Add group")),s&&!n&&E.createElement(nt,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Fx(e){let o=kx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return E.createElement("div",null,t.map(r=>{let[a,n]=ye({type:"QuestionnaireItemAnswerOption",value:r},"value");return E.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},E.createElement("div",null,E.createElement(Le,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),E.createElement("div",null,E.createElement(nt,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),E.createElement(nt,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:Eo()}])}},"Add choice"))}var Aa=1,Ma=1;function Vl(e){return e+Aa++}function Eo(){return"id-"+Ma++}function wx(e){return{...e,id:e.id||Eo(),item:Ul(e.item)}}function Ul(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ma=Math.max(Ma,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Aa=Math.max(Aa,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Eo(),item:Ul(o.item),answerOption:Ox(o.answerOption)}))}function Ox(e){if(e)return e.map(o=>({...o,id:o.id||Eo()}))}import{ActionIcon as jt,Button as Ex,createStyles as Lx,Divider as Rx,Group as ft,NativeSelect as Gl,Stack as _t,Text as Nx,TextInput as Hx}from"@mantine/core";import{formatRange as zl,getCodeBySystem as Vx}from"@medplum/core";import z,{useEffect as qx,useState as Fa}from"react";var Ux=Lx(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"}})),Gx=["gender","age","gestationalAge","context","appliesTo"],zx={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function aF(e){e=Object.assign(zx,e);let o=e.definition,[t,r]=Fa([]),[a,n]=Fa(1),[f,l]=Fa(1);return qx(()=>{let k=Qx(o,l);r(Jx(k.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(_t,null,t.map(k=>z.createElement(Wx,{unit:Kx(o.quantitativeDetails?.unit),onChange:c,onAdd:m,onRemove:S,onRemoveGroup:u,key:`group-${k.id}`,intervalGroup:k}))),z.createElement(jt,{title:"Add Group",size:"sm",onClick:k=>{H(k),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(T=>T+1)}},z.createElement(uo,null)),z.createElement(ft,{position:"right"},z.createElement(Ex,{type:"submit"},"Save")));function s(){let k=t.flatMap(T=>T.intervals).filter(T=>!jx(T));e.onSubmit({...o,qualifiedInterval:k})}function i(k){r(T=>[...T,k])}function u(k){r(T=>T.filter(h=>h.id!==k.id))}function c(k,T){r(h=>{h=[...h];let D=h.find(O=>O.id===k),d=D?.intervals.findIndex(O=>O.id===T.id);return d!==void 0&&D?.intervals[d]&&(D.intervals[d]=T),h})}function m(k,T){T.id===void 0&&(T.id=`id-${f}`,l(h=>h+1)),r(h=>{h=[...h];let D=h.findIndex(d=>d.id===k);if(D!==-1){let d={...h[D]};T={...T,...d.filters},d.intervals=[...d.intervals,T],h[D]=d}return h})}function S(k,T){r(h=>{h=[...h];let D=h.find(d=>d.id===k);return D&&(D.intervals=D.intervals.filter(d=>d.id!==T.id)),h})}}function Wx(e){let{intervalGroup:o,unit:t}=e,{classes:r}=Ux();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(_t,{spacing:"lg"},z.createElement(ft,{position:"right"},z.createElement(jt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ue,null))),z.createElement(Xx,{intervalGroup:o,onChange:e.onChange}),z.createElement(Rx,null),o.intervals.map(a=>z.createElement(_t,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ft,null,z.createElement(Hx,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(jt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ue,null))),z.createElement(jo,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(jt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(uo,null))))}function Xx(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(_t,{style:{maxWidth:"50%"}},z.createElement(ft,null,z.createElement(Gl,{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(ft,{spacing:"xs"},z.createElement(Nx,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(jo,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Gl,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function Qx(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 Jx(e,o){let t=1,r={};for(let a of e){let n=$x(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Gx.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function $x(e){return[`gender=${e.gender}`,`age=${zl(e.age)}`,`gestationalAge=${zl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`].join(":")}function Kx(e){return e&&(Vx(e,"http://unitsofmeasure.org")||e.text)}function jx(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Wl,Grid as Zt,Text as _x}from"@mantine/core";import{formatDateTime as Zx,getReferenceString as Yx}from"@medplum/core";import ce,{useEffect as eI,useState as Xl}from"react";function pF(e){let o=v(),t=X(e.value),[r,a]=Xl(!1),[n,f]=Xl();if(eI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ce.createElement(Zt,null,t.action?.map((i,u)=>{let c=i.resource&&s(i.resource),m=c?.input?.[0]?.valueReference,S=c?.output?.[0]?.valueReference;return ce.createElement(ce.Fragment,{key:`action-${u}`},ce.createElement(Zt.Col,{span:1,p:"md"},c?.status==="completed"?ce.createElement(Ir,null):ce.createElement(wr,{color:"gray"})),ce.createElement(Zt.Col,{span:9,p:"xs"},ce.createElement(_x,{weight:500},i.title),i.description&&ce.createElement("div",null,i.description),ce.createElement("div",null,"Last edited by\xA0",ce.createElement(Fe,{value:c?.meta?.author}),"\xA0on\xA0",Zx(c?.meta?.lastUpdated)),ce.createElement("div",null,"Status: ",ce.createElement(Ot,{status:c?.status||"unknown"}))),ce.createElement(Zt.Col,{span:2,p:"md"},m&&!S&&ce.createElement(Wl,{onClick:()=>e.onStart(c,m)},"Start"),m&&S&&ce.createElement(Wl,{onClick:()=>e.onEdit(c,m,S)},"Edit")))}));function l(i){let u=[];if(i.action)for(let c of i.action)c.resource?.reference&&u.push({request:{method:"GET",url:c.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===Yx(u.resource))return u.resource}}import{createStyles as lI}from"@mantine/core";import Ce,{useEffect as sI,useState as iI}from"react";import{stringify as aI}from"@medplum/core";function Yt(e,o){let t=oI(e,o);return tI(t,e,o)}function oI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,c=u+1,m=u-1,S=l[c],k=l[m],T,h=0;i===-s||i!==s&&k.i<S.i?(h=S.i,T=S):(h=k.i+1,T=k),l[m]=void 0;let D=h-i,d={i:h,j:D,prev:rI(T),snake:!1};for(;h<t&&D<r&&e[h]===o[D];)h++,D++;if(h>d.i&&(d={i:h,j:D,prev:d,snake:!0}),l[u]=d,h>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function tI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},c;i.lines.length===0&&u.lines.length>0?c="insert":i.lines.length>0&&u.lines.length===0?c="delete":c="change",r.push({original:i,revised:u,type:c}),a.snake&&(a=a.prev)}return r}function rI(e){return e&&!e.snake&&e.prev?e.prev:e}function Ql(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:aI(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 nI(t,o),fI(t),t}function nI(e,o){for(let t=1;t<o.length;t++){let r=Yt(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 fI(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 uI=lI(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 TF(e){let{classes:o}=uI(),t=v(),[r,a]=iI(e.history);if(sI(()=>{!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 Ce.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource,f=Ql(r);return Ce.createElement("div",{className:o.container},Ce.createElement("table",{className:o.root},Ce.createElement("tbody",null,f.map((l,s)=>Ce.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&Ce.createElement(Ce.Fragment,null,Ce.createElement("td",{className:o.author,rowSpan:l.span},Ce.createElement(Qe,{value:l.meta.author,link:!0})),Ce.createElement("td",{className:o.dateTime,rowSpan:l.span},Ce.createElement(ae,{to:dI(n,l.meta.versionId)},cI(l.meta.lastUpdated)))),Ce.createElement("td",{className:o.lineNumber},s+1),Ce.createElement("td",{className:o.line},Ce.createElement("pre",{className:o.pre},l.value)))))))}function dI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function cI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Lo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Lo(r,"month");let a=Math.floor(o/86400);if(a>0)return Lo(a,"day");let n=Math.floor(o/3600);if(n>0)return Lo(n,"hour");let f=Math.floor(o/60);return f>0?Lo(f,"minute"):Lo(o,"second")}function Lo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as mI}from"@mantine/core";import{stringify as Jl}from"@medplum/core";import je from"react";var pI=mI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function OF(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Jl(o,!0).match(/[^\r\n]+/g),a=Jl(t,!0).match(/[^\r\n]+/g),n=Yt(r,a);return je.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>je.createElement(xI,{key:"delta"+l,delta:f})))}function xI(e){let{classes:o}=pI();return je.createElement(je.Fragment,null,"...",je.createElement("br",null),e.delta.original.lines.length>0&&je.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
66
66
|
`)),e.delta.revised.lines.length>0&&je.createElement("div",{className:o.added},e.delta.revised.lines.join(`
|
|
67
|
-
`)),"...",je.createElement("br",null))}import{Table as II}from"@mantine/core";import{formatDateTime as gI,normalizeErrorString as hI}from"@medplum/core";import se,{useEffect as yI,useState as CI}from"react";function GF(e){let o=v(),[t,r]=CI(e.history);return yI(()=>{!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?se.createElement(II,{withBorder:!0,withColumnBorders:!0},se.createElement("thead",null,se.createElement("tr",null,se.createElement("th",null,"Author"),se.createElement("th",null,"Date"),se.createElement("th",null,"Version"))),se.createElement("tbody",null,t.entry?.map((a,n)=>se.createElement(vI,{key:"entry-"+n,entry:a})))):se.createElement("div",null,"Loading...")}function vI(e){let{response:o,resource:t}=e.entry;return t?se.createElement("tr",null,se.createElement("td",null,se.createElement(Qe,{value:t.meta?.author,link:!0})),se.createElement("td",null,gI(t.meta?.lastUpdated)),se.createElement("td",null,se.createElement(ae,{to:SI(t)},t.meta?.versionId))):se.createElement("tr",null,se.createElement("td",{colSpan:3},hI(o?.outcome)))}function SI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as bI,createStyles as PI,Stack as DI,Text as TI}from"@mantine/core";import{getReferenceString as kI}from"@medplum/core";import _,{useEffect as BI,useRef as AI,useState as lt}from"react";var MI=PI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function ZF(e){let{classes:o}=MI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=lt(),l=AI();l.current=n;let[s,i]=lt(oa()),[u,c]=lt(),[m,S]=lt(),[k,T]=lt();if(BI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",kI(r)],["start","gt"+FI(s)],["start","lt"+OI(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let h=r.actor?.[0];return _.createElement("div",{className:o.container,"data-testid":"scheduler"},_.createElement("div",{className:o.info},h&&_.createElement(pe,{value:h,size:"xl"}),h&&_.createElement(TI,{size:"xl",weight:500},_.createElement(Fe,{value:h})),_.createElement("p",null,"1 hour"),u&&_.createElement("p",null,u.toLocaleDateString()),m&&_.createElement("p",null,$l(new Date(m.start)))),_.createElement("div",{className:o.selection},!u&&_.createElement("div",null,_.createElement("h3",null,"Select date"),_.createElement(yf,{slots:n,onChangeMonth:i,onClick:c})),u&&!m&&_.createElement("div",null,_.createElement("h3",null,"Select time"),_.createElement(DI,null,n.map(D=>{let d=new Date(D.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&_.createElement("div",{key:D.id},_.createElement(bI,{variant:"outline",style:{width:150},onClick:()=>S(D)},$l(d)))}))),u&&m&&!k&&_.createElement(Ll,{questionnaire:a,submitButtonText:"Next",onSubmit:T}),u&&m&&k&&_.createElement("div",null,_.createElement("h3",null,"You're all set!"),_.createElement("p",null,"Check your email for a calendar invite."))))}function FI(e){return Kl(e.getTime())}function OI(e){return Kl(e.getTime()+31*24*60*60*1e3)}function Kl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function $l(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as er}from"@medplum/core";import wI from"react";function nO(e){return wI.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:[er(o)],subject:o.subject,sender:er(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[er(o)],subject:o.subject,operator:er(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as eg}from"@medplum/core";import fr,{useEffect as og,useState as rs}from"react";import{Anchor as jl,Button as EI,Center as LI,Group as RI,Stack as NI,Text as HI,TextInput as VI,Title as qI}from"@mantine/core";import{normalizeOperationOutcome as GI}from"@medplum/core";import ke,{useState as UI}from"react";function or(e){let o=v(),[t,r]=UI();return ke.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(GI(n))}}},ke.createElement(LI,{sx:{flexDirection:"column"}},ke.createElement(Ke,{size:32}),ke.createElement(qI,null,"Create project")),ke.createElement(NI,{spacing:"xl"},ke.createElement(VI,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:ue(t,"firstName")}),ke.createElement(HI,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",ke.createElement(jl,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",ke.createElement(jl,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),ke.createElement(RI,{position:"right",mt:"xl",noWrap:!0},ke.createElement(EI,{type:"submit"},"Create project")))}import{Anchor as nr,Button as QI,Center as JI,Checkbox as $I,Divider as KI,Group as Yl,PasswordInput as jI,Stack as _I,Text as es,TextInput as wa}from"@mantine/core";import{normalizeOperationOutcome as os}from"@medplum/core";import j,{useEffect as ZI,useState as YI}from"react";import zI,{useEffect as WI,useRef as XI,useState as Oa}from"react";function tr(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 rr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=XI(null),[n,f]=Oa(typeof google<"u"),[l,s]=Oa(!1),[i,u]=Oa(!1);return WI(()=>{if(typeof google>"u"){tr("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?zI.createElement("div",{ref:a}):null}function ar(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 _l(e){typeof grecaptcha>"u"&&tr("https://www.google.com/recaptcha/api.js?render="+e)}function Zl(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ts(e){let o=ar(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=YI(),f=Dt(a,void 0);return ZI(()=>{t&&_l(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await Zl(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(os(s))}}},j.createElement(JI,{sx:{flexDirection:"column"}},e.children),j.createElement(wo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(Yl,{position:"center",p:"xl",style:{height:70}},j.createElement(rr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(os(s))}}})),j.createElement(KI,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(_I,{spacing:"xl"},j.createElement(wa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:ue(a,"firstName")}),j.createElement(wa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:ue(a,"lastName")}),j.createElement(wa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:ue(a,"email")}),j.createElement(jI,{name:"password",label:"Password",autoComplete:"off",required:!0,error:ue(a,"password")}),j.createElement(es,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(nr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(nr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(es,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(nr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(nr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(Yl,{position:"apart",mt:"xl",noWrap:!0},j.createElement($I,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(QI,{type:"submit"},"Create account")))}function UO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=rs(void 0),[u,c]=rs();og(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(S=>l.processCode(S.code)).then(()=>f()).catch(S=>c(eg(S)))},[l,o,t,s,f]);function m(S){S.code?l.processCode(S.code).then(()=>f()).catch(console.log):S.login&&i(S.login)}return fr.createElement(Rt,{width:450},u&&fr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&fr.createElement(ts,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:m},e.children),s&&o==="project"&&fr.createElement(or,{login:s,handleAuthResponse:m}))}import{showNotification as xs}from"@mantine/notifications";import{normalizeErrorString as Is}from"@medplum/core";import lo,{useCallback as La,useEffect as Fg,useState as Ra}from"react";import{Anchor as as,Button as ns,Center as fs,Checkbox as tg,Divider as rg,Group as Ea,PasswordInput as ag,Stack as ng,TextInput as fg}from"@mantine/core";import{normalizeOperationOutcome as lg}from"@medplum/core";import K,{useCallback as lr,useState as ls}from"react";function ss(e){let[o,t]=ls();return o?K.createElement(ig,{email:o,...e}):K.createElement(sg,{setEmail:t,...e})}function sg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,...n}=e,f=v(),l=!e.disableGoogleAuth&&ar(e.googleClientId),s=lr(async c=>{if(!c.authorizeUrl)return!1;let m=JSON.stringify({...await f.ensureCodeChallenge(n),domain:c.domain}),S=new URL(c.authorizeUrl);return S.searchParams.set("state",m),window.location.assign(S.toString()),!0},[f,n]),i=lr(async c=>{let m=await f.post("auth/method",{email:c.email});await s(m)||o(c.email)},[f,s,o]),u=lr(async c=>{let m=await f.startGoogleLogin({...n,googleCredential:c.credential});await s(m)||r(m)},[f,n,s,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(fs,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(Ea,{position:"center",p:"xl",style:{height:70}},K.createElement(rr,{googleClientId:l,handleGoogleCredential:u})),K.createElement(rg,{label:"or",labelPosition:"center",my:"lg"})),K.createElement(fg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ea,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(as,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),K.createElement(ns,{type:"submit"},"Next")))}function ig(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=ls(),s=Dt(f,void 0),i=lr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(c=>l(lg(c)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(fs,{sx:{flexDirection:"column"}},r),K.createElement(wo,{issues:s}),K.createElement(ng,{spacing:"xl"},K.createElement(ag,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:ue(f,"password")})),K.createElement(Ea,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(as,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(tg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ns,{type:"submit"},"Sign in")))}import{Avatar as ug,Center as dg,Group as cg,Stack as mg,Text as is,Title as pg,UnstyledButton as xg}from"@mantine/core";import{normalizeOperationOutcome as Ig}from"@medplum/core";import Be,{useState as gg}from"react";function us(e){let o=v(),[t,r]=gg();return Be.createElement(mg,null,Be.createElement(dg,{sx:{flexDirection:"column"}},Be.createElement(Ke,{size:32}),Be.createElement(pg,{order:3},"Choose profile")),Be.createElement(wo,{outcome:t}),e.memberships.map(a=>Be.createElement(xg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Ig(n)))}},Be.createElement(cg,null,Be.createElement(ug,{radius:"xl"}),Be.createElement("div",{style:{flex:1}},Be.createElement(is,{size:"sm",weight:500},a.profile?.display),Be.createElement(is,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as hg,Center as yg,Checkbox as Cg,Group as vg,Stack as ds,Title as Sg}from"@mantine/core";import Ne from"react";function cs(e){let o=v();return Ne.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ne.createElement(ds,null,Ne.createElement(yg,{sx:{flexDirection:"column"}},Ne.createElement(Ke,{size:32}),Ne.createElement(Sg,null,"Choose scope")),Ne.createElement(ds,null,(e.scope??"openid").split(" ").map(t=>Ne.createElement(Cg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ne.createElement(vg,{position:"right",mt:"xl"},Ne.createElement(hg,{type:"submit"},"Set scope"))))}import{Alert as bg,Button as Pg,Center as Dg,Group as Tg,Stack as ms,TextInput as kg,Title as Bg}from"@mantine/core";import{normalizeErrorString as Ag}from"@medplum/core";import Ae,{useState as Mg}from"react";function ps(e){let o=v(),[t,r]=Mg(void 0);return Ae.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(Ag(n)))}},Ae.createElement(ms,null,Ae.createElement(Dg,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(Bg,null,"Enter MFA code")),t&&Ae.createElement(bg,{icon:Ae.createElement(Ze,{size:16}),title:"Error",color:"red"},t),Ae.createElement(ms,null,Ae.createElement(kg,{name:"token",label:"MFA code",required:!0})),Ae.createElement(Tg,{position:"right",mt:"xl"},Ae.createElement(Pg,{type:"submit"},"Submit code"))))}function Hw(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=Ra(void 0),[c,m]=Ra(!1),[S,k]=Ra(void 0),T=La(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(w=>xs({color:"red",message:Is(w)}))},[s,f,r]),h=La(d=>{m(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&k(d.memberships),d.code&&(t?k(void 0):T(d.code))},[t,T]),D=La(d=>{T(d.code)},[T]);return Fg(()=>{o&&!i&&s.get("auth/login/"+o).then(h).catch(d=>xs({color:"red",message:Is(d)}))},[s,o,i,h]),lo.createElement(Rt,{width:450},(()=>i?c?lo.createElement(ps,{login:i,handleAuthResponse:h}):S?lo.createElement(us,{login:i,memberships:S,handleAuthResponse:h}):e.projectId==="new"?lo.createElement(or,{login:i,handleAuthResponse:h}):e.chooseScopes?lo.createElement(cs,{login:i,scope:e.scope,handleAuthResponse:D}):lo.createElement("div",null,"Success"):lo.createElement(ss,{onForgotPassword:a,onRegister:n,handleAuthResponse:h,disableGoogleAuth:e.disableGoogleAuth,...l},e.children))())}export{Va as AddressDisplay,za as AddressInput,Qa as AnnotationInput,aS as AppShell,yo as AsyncAutocomplete,Sn as AttachmentArrayDisplay,Pn as AttachmentArrayInput,vo as AttachmentButton,Me as AttachmentDisplay,gt as AttachmentInput,Qo as BackboneElementDisplay,Ko as BackboneElementInput,yf as CalendarInput,Pt as CheckboxFormSection,It as CodeInput,bo as CodeableConceptDisplay,Wn as CodeableConceptInput,Mn as CodingDisplay,Xn as CodingInput,On as ContactDetailDisplay,Jn as ContactDetailInput,yt as ContactPointDisplay,kt as ContactPointInput,Xe as Container,Te as DateTimeInput,Gk as DefaultResourceTimeline,Tn as DescriptionList,kn as DescriptionListEntry,na as DiagnosticReportDisplay,Rt as Document,dc as ElementDefinitionInputSelector,If as ElementDefinitionTypeInput,Yk as EncounterTimeline,xo as ErrorBoundary,Wp as FhirPathTable,J as Form,ve as FormSection,In as Header,mt as HumanNameDisplay,jn as HumanNameInput,wn as IdentifierDisplay,Zn as IdentifierInput,Nr as Loading,Ke as Logo,ae as MedplumLink,qg as MedplumProvider,HA as MemoizedFhirPathTable,kA as MemoizedSearchControl,Ln as MoneyDisplay,Yn as MoneyInput,vn as Navbar,Jc as ObservationTable,wo as OperationOutcomeAlert,ko as Panel,_A as PatientTimeline,pM as PlanDefinitionBuilder,Xo as QuantityDisplay,Se as QuantityInput,$M as QuestionnaireBuilder,Ll as QuestionnaireForm,$t as QuestionnaireFormItem,Tl as QuestionnaireItemType,Ct as RangeDisplay,jo as RangeInput,eo as ReferenceDisplay,Do as ReferenceInput,aF as ReferenceRangeEditor,Wx as ReferenceRangeGroupEditor,UO as RegisterForm,pF as RequestGroupDisplay,Vn as ResourceArrayDisplay,uf as ResourceArrayInput,pe as ResourceAvatar,Qe as ResourceBadge,TF as ResourceBlame,wF as ResourceDiff,eP as ResourceForm,GF as ResourceHistoryTable,Mt as ResourceInput,Fe as ResourceName,ie as ResourcePropertyDisplay,Le as ResourcePropertyInput,fa as ResourceTable,$e as ResourceTimeline,ZF as Scheduler,va as SearchChangeEvent,ao as SearchClickEvent,Ep as SearchControl,al as SearchFieldEditor,ul as SearchFilterEditor,Sa as SearchLoadEvent,nO as ServiceRequestTimeline,Hw as SignInForm,wt as StatusBadge,Ff as Timeline,Je as TimelineItem,xf as TimingInput,ca as addDateFilterBetween,IB as addField,Mo as addFilter,$f as addLastMonthFilter,ma as addMissingFilter,jf as addNextMonthFilter,Kf as addThisMonthFilter,Qf as addTodayFilter,Jf as addTomorrowFilter,_f as addYearToDateFilter,Xf as addYesterdayFilter,he as buildFieldNameString,xB as clearFilters,Vt as clearFiltersOnField,sd as convertIsoToLocal,id as convertLocalToIso,tr as createScriptTag,Wf as deleteFilter,ue as getErrorsForInput,Dt as getIssuesForExpression,Cc as getMonthString,Yo as getOpString,Zl as getRecaptcha,ol as getSearchOperators,Yf as getSortField,oa as getStartMonth,cI as getTimeString,Ce as getValueAndType,_l as initRecaptcha,kl as isChoiceQuestion,vx as isQuestionEnabled,el as isSortDescending,gn as parseForm,tl as renderValue,Zo as setFilters,Jm as setOffset,Zf as setPage,$o as setPropertyValue,pa as setSort,Ef as sortByDateAndPriority,gB as toggleSort,v as useMedplum,Ho as useMedplumContext,qe as useMedplumNavigate,it as useMedplumProfile,X as useResource};
|
|
67
|
+
`)),"...",je.createElement("br",null))}import{Table as II}from"@mantine/core";import{formatDateTime as gI,normalizeErrorString as hI}from"@medplum/core";import se,{useEffect as CI,useState as yI}from"react";function UF(e){let o=v(),[t,r]=yI(e.history);return CI(()=>{!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?se.createElement(II,{withBorder:!0,withColumnBorders:!0},se.createElement("thead",null,se.createElement("tr",null,se.createElement("th",null,"Author"),se.createElement("th",null,"Date"),se.createElement("th",null,"Version"))),se.createElement("tbody",null,t.entry?.map((a,n)=>se.createElement(vI,{key:"entry-"+n,entry:a})))):se.createElement("div",null,"Loading...")}function vI(e){let{response:o,resource:t}=e.entry;return t?se.createElement("tr",null,se.createElement("td",null,se.createElement(Qe,{value:t.meta?.author,link:!0})),se.createElement("td",null,gI(t.meta?.lastUpdated)),se.createElement("td",null,se.createElement(ae,{to:SI(t)},t.meta?.versionId))):se.createElement("tr",null,se.createElement("td",{colSpan:3},hI(o?.outcome)))}function SI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as PI,createStyles as bI,Stack as DI,Text as TI}from"@mantine/core";import{getReferenceString as kI}from"@medplum/core";import _,{useEffect as BI,useRef as AI,useState as lt}from"react";var MI=bI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function ZF(e){let{classes:o}=MI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=lt(),l=AI();l.current=n;let[s,i]=lt(oa()),[u,c]=lt(),[m,S]=lt(),[k,T]=lt();if(BI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",kI(r)],["start","gt"+FI(s)],["start","lt"+wI(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let h=r.actor?.[0];return _.createElement("div",{className:o.container,"data-testid":"scheduler"},_.createElement("div",{className:o.info},h&&_.createElement(pe,{value:h,size:"xl"}),h&&_.createElement(TI,{size:"xl",weight:500},_.createElement(Fe,{value:h})),_.createElement("p",null,"1 hour"),u&&_.createElement("p",null,u.toLocaleDateString()),m&&_.createElement("p",null,$l(new Date(m.start)))),_.createElement("div",{className:o.selection},!u&&_.createElement("div",null,_.createElement("h3",null,"Select date"),_.createElement(Cf,{slots:n,onChangeMonth:i,onClick:c})),u&&!m&&_.createElement("div",null,_.createElement("h3",null,"Select time"),_.createElement(DI,null,n.map(D=>{let d=new Date(D.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&_.createElement("div",{key:D.id},_.createElement(PI,{variant:"outline",style:{width:150},onClick:()=>S(D)},$l(d)))}))),u&&m&&!k&&_.createElement(Ll,{questionnaire:a,submitButtonText:"Next",onSubmit:T}),u&&m&&k&&_.createElement("div",null,_.createElement("h3",null,"You're all set!"),_.createElement("p",null,"Check your email for a calendar invite."))))}function FI(e){return Kl(e.getTime())}function wI(e){return Kl(e.getTime()+31*24*60*60*1e3)}function Kl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function $l(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as er}from"@medplum/core";import OI from"react";function nw(e){return OI.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:[er(o)],subject:o.subject,sender:er(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[er(o)],subject:o.subject,operator:er(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as eg}from"@medplum/core";import fr,{useEffect as og,useState as rs}from"react";import{Anchor as jl,Button as EI,Center as LI,Group as RI,Stack as NI,Text as HI,TextInput as VI,Title as qI}from"@mantine/core";import{normalizeOperationOutcome as UI}from"@medplum/core";import ke,{useState as GI}from"react";function or(e){let o=v(),[t,r]=GI();return ke.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(UI(n))}}},ke.createElement(LI,{sx:{flexDirection:"column"}},ke.createElement(Ke,{size:32}),ke.createElement(qI,null,"Create project")),ke.createElement(NI,{spacing:"xl"},ke.createElement(VI,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:ue(t,"firstName")}),ke.createElement(HI,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",ke.createElement(jl,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",ke.createElement(jl,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),ke.createElement(RI,{position:"right",mt:"xl",noWrap:!0},ke.createElement(EI,{type:"submit"},"Create project")))}import{Anchor as nr,Button as QI,Center as JI,Checkbox as $I,Divider as KI,Group as Yl,PasswordInput as jI,Stack as _I,Text as es,TextInput as Oa}from"@mantine/core";import{normalizeOperationOutcome as os}from"@medplum/core";import j,{useEffect as ZI,useState as YI}from"react";import zI,{useEffect as WI,useRef as XI,useState as wa}from"react";function tr(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 rr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=XI(null),[n,f]=wa(typeof google<"u"),[l,s]=wa(!1),[i,u]=wa(!1);return WI(()=>{if(typeof google>"u"){tr("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?zI.createElement("div",{ref:a}):null}function ar(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 _l(e){typeof grecaptcha>"u"&&tr("https://www.google.com/recaptcha/api.js?render="+e)}function Zl(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ts(e){let o=ar(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=YI(),f=Dt(a,void 0);return ZI(()=>{t&&_l(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await Zl(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(os(s))}}},j.createElement(JI,{sx:{flexDirection:"column"}},e.children),j.createElement(Oo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(Yl,{position:"center",p:"xl",style:{height:70}},j.createElement(rr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(os(s))}}})),j.createElement(KI,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(_I,{spacing:"xl"},j.createElement(Oa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:ue(a,"firstName")}),j.createElement(Oa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:ue(a,"lastName")}),j.createElement(Oa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:ue(a,"email")}),j.createElement(jI,{name:"password",label:"Password",autoComplete:"off",required:!0,error:ue(a,"password")}),j.createElement(es,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(nr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(nr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(es,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(nr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(nr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(Yl,{position:"apart",mt:"xl",noWrap:!0},j.createElement($I,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(QI,{type:"submit"},"Create account")))}function Gw(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=rs(void 0),[u,c]=rs();og(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(S=>l.processCode(S.code)).then(()=>f()).catch(S=>c(eg(S)))},[l,o,t,s,f]);function m(S){S.code?l.processCode(S.code).then(()=>f()).catch(console.log):S.login&&i(S.login)}return fr.createElement(Rt,{width:450},u&&fr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&fr.createElement(ts,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:m},e.children),s&&o==="project"&&fr.createElement(or,{login:s,handleAuthResponse:m}))}import{showNotification as xs}from"@mantine/notifications";import{normalizeErrorString as Is}from"@medplum/core";import lo,{useCallback as La,useEffect as Fg,useState as Ra}from"react";import{Anchor as as,Button as ns,Center as fs,Checkbox as tg,Divider as rg,Group as Ea,PasswordInput as ag,Stack as ng,TextInput as fg}from"@mantine/core";import{normalizeOperationOutcome as lg}from"@medplum/core";import K,{useCallback as lr,useState as ls}from"react";function ss(e){let[o,t]=ls();return o?K.createElement(ig,{email:o,...e}):K.createElement(sg,{setEmail:t,...e})}function sg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,...n}=e,f=v(),l=!e.disableGoogleAuth&&ar(e.googleClientId),s=lr(async c=>{if(!c.authorizeUrl)return!1;let m=JSON.stringify({...await f.ensureCodeChallenge(n),domain:c.domain}),S=new URL(c.authorizeUrl);return S.searchParams.set("state",m),window.location.assign(S.toString()),!0},[f,n]),i=lr(async c=>{let m=await f.post("auth/method",{email:c.email});await s(m)||o(c.email)},[f,s,o]),u=lr(async c=>{let m=await f.startGoogleLogin({...n,googleCredential:c.credential});await s(m)||r(m)},[f,n,s,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(fs,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(Ea,{position:"center",p:"xl",style:{height:70}},K.createElement(rr,{googleClientId:l,handleGoogleCredential:u})),K.createElement(rg,{label:"or",labelPosition:"center",my:"lg"})),K.createElement(fg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ea,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(as,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),K.createElement(ns,{type:"submit"},"Next")))}function ig(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=ls(),s=Dt(f,void 0),i=lr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(c=>l(lg(c)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(fs,{sx:{flexDirection:"column"}},r),K.createElement(Oo,{issues:s}),K.createElement(ng,{spacing:"xl"},K.createElement(ag,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:ue(f,"password")})),K.createElement(Ea,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(as,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(tg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ns,{type:"submit"},"Sign in")))}import{Avatar as ug,Center as dg,Group as cg,Stack as mg,Text as is,Title as pg,UnstyledButton as xg}from"@mantine/core";import{normalizeOperationOutcome as Ig}from"@medplum/core";import Be,{useState as gg}from"react";function us(e){let o=v(),[t,r]=gg();return Be.createElement(mg,null,Be.createElement(dg,{sx:{flexDirection:"column"}},Be.createElement(Ke,{size:32}),Be.createElement(pg,{order:3},"Choose profile")),Be.createElement(Oo,{outcome:t}),e.memberships.map(a=>Be.createElement(xg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Ig(n)))}},Be.createElement(cg,null,Be.createElement(ug,{radius:"xl"}),Be.createElement("div",{style:{flex:1}},Be.createElement(is,{size:"sm",weight:500},a.profile?.display),Be.createElement(is,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as hg,Center as Cg,Checkbox as yg,Group as vg,Stack as ds,Title as Sg}from"@mantine/core";import Ne from"react";function cs(e){let o=v();return Ne.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ne.createElement(ds,null,Ne.createElement(Cg,{sx:{flexDirection:"column"}},Ne.createElement(Ke,{size:32}),Ne.createElement(Sg,null,"Choose scope")),Ne.createElement(ds,null,(e.scope??"openid").split(" ").map(t=>Ne.createElement(yg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ne.createElement(vg,{position:"right",mt:"xl"},Ne.createElement(hg,{type:"submit"},"Set scope"))))}import{Alert as Pg,Button as bg,Center as Dg,Group as Tg,Stack as ms,TextInput as kg,Title as Bg}from"@mantine/core";import{normalizeErrorString as Ag}from"@medplum/core";import Ae,{useState as Mg}from"react";function ps(e){let o=v(),[t,r]=Mg(void 0);return Ae.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(Ag(n)))}},Ae.createElement(ms,null,Ae.createElement(Dg,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(Bg,null,"Enter MFA code")),t&&Ae.createElement(Pg,{icon:Ae.createElement(Ze,{size:16}),title:"Error",color:"red"},t),Ae.createElement(ms,null,Ae.createElement(kg,{name:"token",label:"MFA code",required:!0})),Ae.createElement(Tg,{position:"right",mt:"xl"},Ae.createElement(bg,{type:"submit"},"Submit code"))))}function HO(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=Ra(void 0),[c,m]=Ra(!1),[S,k]=Ra(void 0),T=La(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(O=>xs({color:"red",message:Is(O)}))},[s,f,r]),h=La(d=>{m(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&k(d.memberships),d.code&&(t?k(void 0):T(d.code))},[t,T]),D=La(d=>{T(d.code)},[T]);return Fg(()=>{o&&!i&&s.get("auth/login/"+o).then(h).catch(d=>xs({color:"red",message:Is(d)}))},[s,o,i,h]),lo.createElement(Rt,{width:450},(()=>i?c?lo.createElement(ps,{login:i,handleAuthResponse:h}):S?lo.createElement(us,{login:i,memberships:S,handleAuthResponse:h}):e.projectId==="new"?lo.createElement(or,{login:i,handleAuthResponse:h}):e.chooseScopes?lo.createElement(cs,{login:i,scope:e.scope,handleAuthResponse:D}):lo.createElement("div",null,"Success"):lo.createElement(ss,{onForgotPassword:a,onRegister:n,handleAuthResponse:h,disableGoogleAuth:e.disableGoogleAuth,...l},e.children))())}export{Va as AddressDisplay,za as AddressInput,Qa as AnnotationInput,aS as AppShell,Co as AsyncAutocomplete,Sn as AttachmentArrayDisplay,bn as AttachmentArrayInput,vo as AttachmentButton,Me as AttachmentDisplay,gt as AttachmentInput,Qo as BackboneElementDisplay,Ko as BackboneElementInput,Cf as CalendarInput,bt as CheckboxFormSection,It as CodeInput,Po as CodeableConceptDisplay,Wn as CodeableConceptInput,Mn as CodingDisplay,Xn as CodingInput,wn as ContactDetailDisplay,Jn as ContactDetailInput,Ct as ContactPointDisplay,kt as ContactPointInput,Xe as Container,Te as DateTimeInput,Uk as DefaultResourceTimeline,Tn as DescriptionList,kn as DescriptionListEntry,na as DiagnosticReportDisplay,Rt as Document,dc as ElementDefinitionInputSelector,If as ElementDefinitionTypeInput,Yk as EncounterTimeline,xo as ErrorBoundary,Wp as FhirPathTable,J as Form,ve as FormSection,In as Header,mt as HumanNameDisplay,jn as HumanNameInput,On as IdentifierDisplay,Zn as IdentifierInput,Nr as Loading,Ke as Logo,ae as MedplumLink,qg as MedplumProvider,HA as MemoizedFhirPathTable,kA as MemoizedSearchControl,Ln as MoneyDisplay,Yn as MoneyInput,vn as Navbar,Jc as ObservationTable,Oo as OperationOutcomeAlert,ko as Panel,_A as PatientTimeline,pM as PlanDefinitionBuilder,Xo as QuantityDisplay,Se as QuantityInput,$M as QuestionnaireBuilder,Ll as QuestionnaireForm,$t as QuestionnaireFormItem,Tl as QuestionnaireItemType,yt as RangeDisplay,jo as RangeInput,eo as ReferenceDisplay,Do as ReferenceInput,aF as ReferenceRangeEditor,Wx as ReferenceRangeGroupEditor,Gw as RegisterForm,pF as RequestGroupDisplay,Vn as ResourceArrayDisplay,uf as ResourceArrayInput,pe as ResourceAvatar,Qe as ResourceBadge,TF as ResourceBlame,OF as ResourceDiff,eb as ResourceForm,UF as ResourceHistoryTable,Mt as ResourceInput,Fe as ResourceName,ie as ResourcePropertyDisplay,Le as ResourcePropertyInput,fa as ResourceTable,$e as ResourceTimeline,ZF as Scheduler,va as SearchChangeEvent,ao as SearchClickEvent,Ep as SearchControl,al as SearchFieldEditor,ul as SearchFilterEditor,Sa as SearchLoadEvent,nw as ServiceRequestTimeline,HO as SignInForm,Ot as StatusBadge,Ff as Timeline,Je as TimelineItem,xf as TimingInput,ca as addDateFilterBetween,IB as addField,Mo as addFilter,$f as addLastMonthFilter,ma as addMissingFilter,jf as addNextMonthFilter,Kf as addThisMonthFilter,Qf as addTodayFilter,Jf as addTomorrowFilter,_f as addYearToDateFilter,Xf as addYesterdayFilter,he as buildFieldNameString,xB as clearFilters,Vt as clearFiltersOnField,sd as convertIsoToLocal,id as convertLocalToIso,tr as createScriptTag,Wf as deleteFilter,ue as getErrorsForInput,Dt as getIssuesForExpression,yc as getMonthString,Yo as getOpString,Zl as getRecaptcha,ol as getSearchOperators,Yf as getSortField,oa as getStartMonth,cI as getTimeString,ye as getValueAndType,_l as initRecaptcha,kl as isChoiceQuestion,vx as isQuestionEnabled,el as isSortDescending,gn as parseForm,tl as renderValue,Zo as setFilters,Jm as setOffset,Zf as setPage,$o as setPropertyValue,pa as setSort,Ef as sortByDateAndPriority,gB as toggleSort,v as useMedplum,Ho as useMedplumContext,qe as useMedplumNavigate,it as useMedplumProfile,X as useResource};
|
|
68
68
|
//# sourceMappingURL=index.mjs.map
|